WebKit-https.git
12 months agoMove vmEntryGlobalObject() to VM from CallFrame.
mark.lam@apple.com [Thu, 23 Aug 2018 22:57:09 +0000 (22:57 +0000)]
Move vmEntryGlobalObject() to VM from CallFrame.
https://bugs.webkit.org/show_bug.cgi?id=188900
<rdar://problem/43655753>

Reviewed by Michael Saboff.

Source/JavaScriptCore:

Also introduced CallFrame::isGlobalExec() which makes use of one property of
GlobalExecs to identify them i.e. GlobalExecs have null callerFrame and returnPCs.
CallFrame::initGlobalExec() ensures this.

In contrast, normal CallFrames always have a callerFrame (because they must at
least be preceded by a VM EntryFrame) and a returnPC (at least return to the
VM entry glue).

* API/APIUtils.h:
(handleExceptionIfNeeded):
(setException):
* API/JSBase.cpp:
(JSEvaluateScript):
(JSCheckScriptSyntax):
* API/JSContextRef.cpp:
(JSGlobalContextRetain):
(JSGlobalContextRelease):
(JSGlobalContextCopyName):
(JSGlobalContextSetName):
(JSGlobalContextGetRemoteInspectionEnabled):
(JSGlobalContextSetRemoteInspectionEnabled):
(JSGlobalContextGetIncludesNativeCallStackWhenReportingExceptions):
(JSGlobalContextSetIncludesNativeCallStackWhenReportingExceptions):
(JSGlobalContextGetDebuggerRunLoop):
(JSGlobalContextSetDebuggerRunLoop):
(JSGlobalContextGetAugmentableInspectorController):
* API/JSValue.mm:
(reportExceptionToInspector):
* API/glib/JSCClass.cpp:
(jscContextForObject):
* API/glib/JSCContext.cpp:
(jsc_context_evaluate_in_object):
* debugger/Debugger.cpp:
(JSC::Debugger::pauseIfNeeded):
* debugger/DebuggerCallFrame.cpp:
(JSC::DebuggerCallFrame::vmEntryGlobalObject const):
(JSC::DebuggerCallFrame::evaluateWithScopeExtension):
* interpreter/CallFrame.cpp:
(JSC::CallFrame::vmEntryGlobalObject): Deleted.
* interpreter/CallFrame.h:
(JSC::ExecState::scope const):
(JSC::ExecState::noCaller):
(JSC::ExecState::isGlobalExec const):
* interpreter/Interpreter.cpp:
(JSC::notifyDebuggerOfUnwinding):
(JSC::Interpreter::notifyDebuggerOfExceptionToBeThrown):
(JSC::Interpreter::debug):
* runtime/CallData.cpp:
(JSC::profiledCall):
* runtime/Completion.cpp:
(JSC::evaluate):
(JSC::profiledEvaluate):
(JSC::evaluateWithScopeExtension):
(JSC::loadAndEvaluateModule):
(JSC::loadModule):
(JSC::linkAndEvaluateModule):
(JSC::importModule):
* runtime/ConstructData.cpp:
(JSC::profiledConstruct):
* runtime/Error.cpp:
(JSC::getStackTrace):
* runtime/VM.cpp:
(JSC::VM::throwException):
(JSC::VM::vmEntryGlobalObject const):
* runtime/VM.h:

Source/WebCore:

No new tests needed because this patch does not introduce new functionality.

* bindings/js/JSCustomXPathNSResolver.cpp:
(WebCore::JSCustomXPathNSResolver::create):
* bindings/js/JSDOMGlobalObject.cpp:
(WebCore::callerGlobalObject):
(WebCore::toJSDOMGlobalObject): Deleted.
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::firstDOMWindow):
* bridge/c/c_utility.cpp:
(JSC::Bindings::convertValueToNPVariant):
* bridge/objc/WebScriptObject.mm:
(WebCore::addExceptionToConsole):
* bridge/objc/objc_instance.mm:
(ObjcInstance::moveGlobalExceptionToExecState):
* bridge/objc/objc_runtime.mm:
(JSC::Bindings::convertValueToObjcObject):
* bridge/objc/objc_utility.mm:
(JSC::Bindings::convertValueToObjcValue):
* testing/Internals.cpp:
(WebCore::Internals::cloneArrayBuffer):

Source/WebKitLegacy/mac:

* WebView/WebScriptDebugger.mm:
(WebScriptDebugger::sourceParsed):

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

12 months ago[CMake] Have checks are not getting set inside CMake properly
don.olmstead@sony.com [Thu, 23 Aug 2018 22:53:05 +0000 (22:53 +0000)]
[CMake] Have checks are not getting set inside CMake properly
https://bugs.webkit.org/show_bug.cgi?id=188901

Reviewed by Michael Catanzaro.

.:

Make sure the variable's value is sent to SET_AND_EXPOSE_TO_BUILD
within the WEBKIT_CHECK_HAVE_* macros.

* Source/cmake/WebKitFeatures.cmake:

PerformanceTests:

Add notification that MallocBench is disabled.

* CMakeLists.txt:

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

12 months agoAPI tests should output json results
jbedard@apple.com [Thu, 23 Aug 2018 22:50:52 +0000 (22:50 +0000)]
API tests should output json results
https://bugs.webkit.org/show_bug.cgi?id=188869
<rdar://problem/43615652>

Reviewed by Aakash Jain.

JSON output for API tests is of the form:
    {
        "Failed": [{"name": <test name>, "output": <test log>}],
        "Timedout": [...],
        "Skipped": [...],
        "Crashed": [...]
    }
Tests which are successful are not displayed in the json output.

* Scripts/webkitpy/api_tests/manager.py:
(Manager.run): Print test results to provided file as a json dictionary.
* Scripts/webkitpy/api_tests/run_api_tests.py:
(run): Pass json option.
(parse_args): Add --json-output flag.

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

12 months ago[Apple Pay] Introduce Apple Pay JS v4 on iOS 12 and macOS Mojave
aestes@apple.com [Thu, 23 Aug 2018 22:23:18 +0000 (22:23 +0000)]
[Apple Pay] Introduce Apple Pay JS v4 on iOS 12 and macOS Mojave
https://bugs.webkit.org/show_bug.cgi?id=188829

Reviewed by Tim Horton.

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Test: http/tests/ssl/applepay/ApplePaySessionV4.html

* Configurations/FeatureDefines.xcconfig:
* testing/MockPaymentCoordinator.cpp:
(WebCore::MockPaymentCoordinator::supportsVersion):

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

* Configurations/FeatureDefines.xcconfig:
* WebProcess/ApplePay/WebPaymentCoordinator.cpp:
(WebKit::WebPaymentCoordinator::supportsVersion):

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:

Tools:

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

* http/tests/ssl/applepay/ApplePaySession-expected.txt:
* http/tests/ssl/applepay/ApplePaySession.html:
* http/tests/ssl/applepay/ApplePaySessionV3-expected.txt:
* http/tests/ssl/applepay/ApplePaySessionV3.html:
* http/tests/ssl/applepay/ApplePaySessionV4-expected.txt: Added.
* http/tests/ssl/applepay/ApplePaySessionV4.html: Added.
* platform/mac-wk2/TestExpectations:

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

12 months ago[WSL] Ternary expressions appear to be unimplemented
mmaxfield@apple.com [Thu, 23 Aug 2018 21:43:03 +0000 (21:43 +0000)]
[WSL] Ternary expressions appear to be unimplemented
https://bugs.webkit.org/show_bug.cgi?id=178981

Reviewed by Saam Barati.

Implement ternary statements. These can be both lvalues and rvalues. (a ? b : c ? d : e)
is parsed as (a ? b : (c ? d : e)).

* WebGPUShadingLanguageRI/All.js:
* WebGPUShadingLanguageRI/Checker.js:
(Checker.prototype.visitTernaryExpression):
* WebGPUShadingLanguageRI/Evaluator.js:
(Evaluator.prototype.visitTernaryExpression):
* WebGPUShadingLanguageRI/NormalUsePropertyResolver.js:
(NormalUsePropertyResolver.prototype.visitTernaryExpression):
(NormalUsePropertyResolver):
* WebGPUShadingLanguageRI/Parse.js:
(parsePossibleTernaryConditional):
* WebGPUShadingLanguageRI/PropertyResolver.js:
(PropertyResolver.prototype._visitRValuesWithinLValue.RValueFinder.prototype.visitTernaryExpression):
(PropertyResolver.prototype._visitRValuesWithinLValue.RValueFinder):
(PropertyResolver.prototype._visitRValuesWithinLValue):
* WebGPUShadingLanguageRI/Rewriter.js:
(Rewriter.prototype.visitTernaryExpression):
* WebGPUShadingLanguageRI/SPIRV.html:
* WebGPUShadingLanguageRI/Test.html:
* WebGPUShadingLanguageRI/Test.js:
* WebGPUShadingLanguageRI/Visitor.js:
(Visitor.prototype.visitProtocolDecl):
* WebGPUShadingLanguageRI/index.html:

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

12 months agoWeb Inspector: support breakpoints for timers and animation-frame events
drousso@apple.com [Thu, 23 Aug 2018 21:36:40 +0000 (21:36 +0000)]
Web Inspector: support breakpoints for timers and animation-frame events
https://bugs.webkit.org/show_bug.cgi?id=188778

Reviewed by Brian Burg.

Source/JavaScriptCore:

* inspector/protocol/Debugger.json:
Add `AnimationFrame` and `Timer` types to the list of pause reasons.

* inspector/protocol/DOMDebugger.json:
Introduced `setEventBreakpoint` and `removeEventBreakpoint` to replace the more specific:
 - `setEventListenerBreakpoint`
 - `removeEventListenerBreakpoint`
 - `setInstrumentationBreakpoint`
 - `removeInstrumentationBreakpoint`
Also created an `EventBreakpointType` to enumerate the available types of event breakpoints.

* inspector/scripts/codegen/generate_cpp_protocol_types_header.py:
(CppProtocolTypesHeaderGenerator.generate_output):
(CppProtocolTypesHeaderGenerator._generate_forward_declarations_for_binding_traits):
(CppProtocolTypesHeaderGenerator._generate_declarations_for_enum_conversion_methods):
(CppProtocolTypesHeaderGenerator._generate_hash_declarations): Added.
Generate `DefaultHash` for all `enum class` used by inspector protocols.

* inspector/scripts/tests/generic/expected/commands-with-async-attribute.json-result:
* inspector/scripts/tests/generic/expected/commands-with-optional-call-return-parameters.json-result:
* inspector/scripts/tests/generic/expected/enum-values.json-result:
* inspector/scripts/tests/generic/expected/type-declaration-array-type.json-result:
* inspector/scripts/tests/generic/expected/type-declaration-enum-type.json-result:
* inspector/scripts/tests/generic/expected/type-declaration-object-type.json-result:
* inspector/scripts/tests/generic/expected/type-requiring-runtime-casts.json-result:

Source/WebCore:

The original implementation of "instrumentation" breakpoints relied upon the frontend
sending somewhat arbitrary strings when enabling breakpoints for specific events. As an
example, setting a breakpoint for `requestAnimationFrame` expects `"animationFrameFired"`
as the string, which doesn't make much sense. This patch removes the usage of these strings
and instead expects the agent to implement a method that matches what is happening.

Tests: inspector/dom-debugger/event-animation-frame-breakpoints.html
       inspector/dom-debugger/event-listener-breakpoints.html
       inspector/dom-debugger/event-timer-breakpoints.html

* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::willFireTimer):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didInstallTimerImpl):
(WebCore::InspectorInstrumentation::didRemoveTimerImpl):
(WebCore::InspectorInstrumentation::willFireTimerImpl):
(WebCore::InspectorInstrumentation::didRequestAnimationFrameImpl):
(WebCore::InspectorInstrumentation::didCancelAnimationFrameImpl):
(WebCore::InspectorInstrumentation::willFireAnimationFrameImpl):
(WebCore::InspectorInstrumentation::pauseOnNativeEventIfNeeded): Deleted.

* inspector/agents/InspectorDOMDebuggerAgent.h:
* inspector/agents/InspectorDOMDebuggerAgent.cpp:
(WebCore::InspectorDOMDebuggerAgent::setEventBreakpoint): Added.
(WebCore::InspectorDOMDebuggerAgent::removeEventBreakpoint): Added.
(WebCore::InspectorDOMDebuggerAgent::willHandleEvent):
(WebCore::InspectorDOMDebuggerAgent::willFireTimer): Added.
(WebCore::InspectorDOMDebuggerAgent::willFireAnimationFrame): Added.
(WebCore::InspectorDOMDebuggerAgent::setEventListenerBreakpoint): Deleted.
(WebCore::InspectorDOMDebuggerAgent::setInstrumentationBreakpoint): Deleted.
(WebCore::InspectorDOMDebuggerAgent::setBreakpoint): Deleted.
(WebCore::InspectorDOMDebuggerAgent::removeEventListenerBreakpoint): Deleted.
(WebCore::InspectorDOMDebuggerAgent::removeInstrumentationBreakpoint): Deleted.
(WebCore::InspectorDOMDebuggerAgent::removeBreakpoint): Deleted.
(WebCore::InspectorDOMDebuggerAgent::pauseOnNativeEventIfNeeded): Deleted.
Unify the event listener and instrumentation breakpoint commands into a single method,
`setEventBreakpoint`, that takes in both an `EventBreakpointType` and `eventName`.

* page/DOMTimer.cpp:
(WebCore::DOMTimer::fired):

Source/WebInspectorUI:

Add a `type` to `WI.EventBreakpoint` that matches `DOMDebugger.EventBreakpointType`:
 - `AnimationFrame` for `requestAnimationFrame`
 - `Listener` for any named DOM Event
 - `Timer` for `setTimeout` and `setInterval`

Modified `WI.EventBreakpointPopover` to provide ways for selecting these other types, which
is then passed to `WI.DOMDebuggerManager`, which now calls through to the newly added
`DOMDebugger.removeEventBreakpoint` and `DOMDebugger.setEventBreakpoint` that sets
breakpoints for all event types.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Images/EventBreakpointAnimationFrame.svg: Added.
* UserInterface/Images/EventBreakpointListener.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/EventBreakpoint.svg.
* UserInterface/Images/EventBreakpointTimer.svg: Added.

* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager.supportsEventBreakpoints): Added.
(WI.DOMDebuggerManager.prototype.eventBreakpointForTypeAndEventName): Added.
(WI.DOMDebuggerManager.prototype.addEventBreakpoint):
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint.breakpointRemoved): Added.
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint):
(WI.DOMDebuggerManager.prototype._updateEventBreakpoint):
(WI.DOMDebuggerManager.prototype.eventBreakpointForEventName): Deleted.

* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager.prototype.setBreakpointForEventListener):

* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager.prototype._pauseReasonFromPayload):

* UserInterface/Models/EventBreakpoint.js:
(WI.EventBreakpoint):
(WI.EventBreakpoint.fromPayload):
(WI.EventBreakpoint.prototype.get type): Added.
(WI.EventBreakpoint.prototype.get serializableInfo):
(WI.EventBreakpoint.prototype.saveIdentityToCookie):

* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
(WI.DebuggerSidebarPanel.prototype.willDismissPopover):

* UserInterface/Views/EventBreakpointPopover.js:
(WI.EventBreakpointPopover):
(WI.EventBreakpointPopover.prototype.get breakpoint): Added.
(WI.EventBreakpointPopover.prototype.show):
(WI.EventBreakpointPopover.prototype.show.createOption): Added.
(WI.EventBreakpointPopover.prototype.dismiss): Added.
(WI.EventBreakpointPopover.prototype._presentOverTargetElement):
(WI.EventBreakpointPopover.prototype._handleTypeSelectChange): Added.
(WI.EventBreakpointPopover.prototype.get result): Deleted.
(WI.EventBreakpointPopover.prototype.get value): Deleted.
* UserInterface/Views/EventBreakpointPopover.css:
(.popover .event-breakpoint-content > .event-type): Added.
(.popover .event-breakpoint-content > input): Deleted.

* UserInterface/Views/EventBreakpointTreeElement.js:
(WI.EventBreakpointTreeElement):
* UserInterface/Views/EventBreakpointTreeElement.css:
(.breakpoint.event.animation-frame:not(.breakpoint-paused-icon) .icon): Added.
(.breakpoint.event.listener:not(.breakpoint-paused-icon) .icon): Added.
(.breakpoint.event.timer:not(.breakpoint-paused-icon) .icon): Added.
(.breakpoint.event:not(.breakpoint-paused-icon) .icon): Deleted.

LayoutTests:

* inspector/dom-debugger/event-animation-frame-breakpoints-expected.txt: Added.
* inspector/dom-debugger/event-animation-frame-breakpoints.html: Added.

* inspector/dom-debugger/event-breakpoint-with-navigation.html:

* inspector/dom-debugger/event-timer-breakpoints-expected.txt: Added.
* inspector/dom-debugger/event-timer-breakpoints.html: Added.

* inspector/dom-debugger/event-listener-breakpoints-expected.txt: Renamed from LayoutTests/inspector/dom-debugger/event-breakpoints-expected.txt.
* inspector/dom-debugger/event-listener-breakpoints.html: Renamed from LayoutTests/inspector/dom-debugger/event-breakpoints.html.

* inspector/dom-debugger/resources/event-breakpoint-utilities.js: Added.
(TestPage.registerInitializer.window.teardown):
(TestPage.registerInitializer.window.failOnPause):
(TestPage.registerInitializer.window.addBreakpoint):
(TestPage.registerInitializer.window.removeBreakpoint):
(TestPage.registerInitializer.window.disableBreakpoint):
(TestPage.registerInitializer.window.awaitEvent):

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

12 months agoUnreviewed, rolling out r234942.
ryanhaddad@apple.com [Thu, 23 Aug 2018 21:31:22 +0000 (21:31 +0000)]
Unreviewed, rolling out r234942.

Caused page loading issues in iTunes

Reverted changeset:

"Transition more WKWebViewConfiguration ivars to
API::PageConfiguration values"
https://bugs.webkit.org/show_bug.cgi?id=188663
https://trac.webkit.org/changeset/234942

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

12 months ago[iOS] Support the inputmode attribute on contenteditable elements
akeerthi@apple.com [Thu, 23 Aug 2018 21:24:42 +0000 (21:24 +0000)]
[iOS] Support the inputmode attribute on contenteditable elements
https://bugs.webkit.org/show_bug.cgi?id=188878

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

* web-platform-tests/html/dom/reflection-misc-expected.txt: Rebaseline.

Source/WebCore:

The inputmode attribute should apply to contenteditable elements, in addition to
textfield inputs and textareas.

Moved the inputmode attribute from HTMLInputElement.idl and
HTMLTextAreaElement.idl to HTMLElement.idl to reflect the specification.

Also moved all logic to convert between the InputMode enum and string values
into InputMode.cpp to avoid exposing unnecessary details to WebKit. Furthermore,
InputMode::Auto was renamed to InputMode::Unspecified to avoid confusion with the
specification.

Spec: https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute

Tests: fast/forms/inputmode-attribute-contenteditable.html
       fast/forms/inputmode-attribute-input.html
       fast/forms/inputmode-attribute-textarea.html

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/HTMLElement.cpp:
(WebCore::HTMLElement::canonicalInputMode const):
(WebCore::HTMLElement::inputMode const):
(WebCore::HTMLElement::setInputMode):
* html/HTMLElement.h:
* html/HTMLElement.idl:
* html/HTMLInputElement.idl:
* html/HTMLTextAreaElement.idl:
* html/HTMLTextFormControlElement.cpp:
* html/HTMLTextFormControlElement.h:
* html/InputMode.cpp: Renamed from Source/WebCore/html/InputModeNames.cpp.
(WebCore::inputModeForAttributeValue):
(WebCore::stringForInputMode):
* html/InputMode.h: Renamed from Source/WebCore/html/InputModeNames.h.

Source/WebKit:

Ensured that the assistedNodeInformation for a contenteditable element reflects
the value of the element's inputmode attribute.

Moved logic to obtain the InputMode from the attribute value into WebCore.

* Shared/AssistedNodeInformation.h:
* UIProcess/ios/WKContentViewInteraction.mm:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getAssistedNodeInformation):

LayoutTests:

Added additional tests to verify the inputmode attribute is accessible on
HTMLElements.

* fast/forms/inputmode-attribute-contenteditable-expected.txt: Added.
* fast/forms/inputmode-attribute-contenteditable.html: Added.
* fast/forms/inputmode-attribute-input-expected.txt: Renamed from LayoutTests/fast/forms/inputmode-attribute-expected.txt.
* fast/forms/inputmode-attribute-input.html: Renamed from LayoutTests/fast/forms/inputmode-attribute.html.
* fast/forms/inputmode-attribute-textarea-expected.txt: Added.
* fast/forms/inputmode-attribute-textarea.html: Added.
* js/dom/dom-static-property-for-in-iteration-expected.txt: Rebaseline.

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

12 months agoAssert in NetworkBlobRegistry::unregisterBlobURL after network process had terminated
rniwa@webkit.org [Thu, 23 Aug 2018 20:51:19 +0000 (20:51 +0000)]
Assert in NetworkBlobRegistry::unregisterBlobURL after network process had terminated
https://bugs.webkit.org/show_bug.cgi?id=188880

Reviewed by Saam Barati.

Source/WebKit:

Removed the debug assertion. WebContent process might be asking this network process
to unregister a blob registered from another network processs which had since crashed.

We could keep track of which blob had been registered with which network process
in WebContent process and avoid sending IPC to the network process but that's a lot of
house-keeping for virtually no benefit other than not hitting this assertion.

* NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
(WebKit::NetworkBlobRegistry::unregisterBlobURL):

Tools:

Fixed the bug that testRunner's terminateNetworkProcess, terminateServiceWorkerProcess, and terminateStorageProcess
were asynchronously terminating respective processes. Do so synchronously so that we can deterministically
test WebKit's behavior in layout tests.

* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::terminateNetworkProcess):
(WTR::TestRunner::terminateServiceWorkerProcess):
(WTR::TestRunner::terminateStorageProcess):
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

Added a layout test which demonstrates this debug assertion.

* TestExpectations:
* fast/files/blob-network-process-crash-expected.txt: Added.
* fast/files/blob-network-process-crash.html: Added.
* platform/wk2/TestExpectations:

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

12 months agoWeb Inspector: `console.inspect(sessionStorage)` first time does not show Session...
drousso@apple.com [Thu, 23 Aug 2018 20:20:15 +0000 (20:20 +0000)]
Web Inspector: `console.inspect(sessionStorage)` first time does not show Session Storage content view if Storage tab was previously unvisited
https://bugs.webkit.org/show_bug.cgi?id=188801

Reviewed by Matt Baker.

* UserInterface/Base/Main.js:
(WI.tabContentViewClassForRepresentedObject):
(WI._storageWasInspected):
Since the `WI.StorageSidebarPanel` is not created until the `WI.StorageTabContentView` is
created, the `WI.StorageManager.Event.DOMStorageObjectWasInspected` and
`WI.StorageManager.Event.DatabaseWasInspected` events do not reach the sidebar. We should
follow what `WI._domNodeWasInspected` does and additionally call `WI.showRepresentedObject`
on the inspected object.

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

12 months ago[CMake] Add HAVE_MALLOC_TRIM definition
don.olmstead@sony.com [Thu, 23 Aug 2018 20:08:03 +0000 (20:08 +0000)]
[CMake] Add HAVE_MALLOC_TRIM definition
https://bugs.webkit.org/show_bug.cgi?id=188897

Reviewed by Konstantin Tokarev.

.:

Add CMake check for malloc_trim.

* Source/cmake/OptionsCommon.cmake:

PerformanceTests:

MallocBench should only be built on Apple platforms and platforms that
have malloc_trim.

* CMakeLists.txt:

Source/WTF:

Use HAVE(MALLOC_TRIM) check instead of __GLIBC__.

* wtf/linux/MemoryPressureHandlerLinux.cpp:
(WTF::MemoryPressureHandler::platformReleaseMemory):

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

12 months agoWeb Inspector: REGRESSION: InspectorStyleSheet not visible in the resources sidebar
drousso@apple.com [Thu, 23 Aug 2018 20:06:14 +0000 (20:06 +0000)]
Web Inspector: REGRESSION: InspectorStyleSheet not visible in the resources sidebar
https://bugs.webkit.org/show_bug.cgi?id=188819
<rdar://problem/43579039>

Reviewed by Brian Burg.

* UserInterface/Models/ResourceCollection.js:
(WI.ResourceCollection.prototype.objectIsRequiredType):

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

12 months agoRemove keys of defaults that are no longer used in webProcessPool
sihui_liu@apple.com [Thu, 23 Aug 2018 19:58:30 +0000 (19:58 +0000)]
Remove keys of defaults that are no longer used in webProcessPool
https://bugs.webkit.org/show_bug.cgi?id=188855

Reviewed by Alex Christensen.

* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::registerUserDefaultsIfNeeded):

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

12 months agoYARR: Need to JIT compile a RegExp before using containsNestedSubpatterns flag
msaboff@apple.com [Thu, 23 Aug 2018 19:57:44 +0000 (19:57 +0000)]
YARR: Need to JIT compile a RegExp before using containsNestedSubpatterns flag
https://bugs.webkit.org/show_bug.cgi?id=188895

Reviewed by Mark Lam.

Found while working on another change.  This will allow processing of nested
parenthesis that require saved ParenContext structures.

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

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

12 months ago[WHLSL] Allow native types to have type arguments (like "vector<float, 4>")
mmaxfield@apple.com [Thu, 23 Aug 2018 19:52:16 +0000 (19:52 +0000)]
[WHLSL] Allow native types to have type arguments (like "vector<float, 4>")
https://bugs.webkit.org/show_bug.cgi?id=188773

Reviewed by Filip Pizlo.

Before this patch, it was impossible to represent "native typedef vector<float, 4>" because NativeTypes couldn't have
typeArguments.

Previously, the way to identify a type was strictly by name, which was represented by a string. Therefore, when something like
"vector<int, 3>" was parsed, it would produce a TypeRef with the name "vector" and typeArguments [TypeRef, IntLiteral]. Then,
there was a pass to convert the TypeRef to have the name "int3" and no typeArguments. After this transformation, each type could
be uniquely identified by name. That name was then matched to the string-only NativeType name.

This is okay for vectors and matrices, but it is unfortunate for textures (e.g. Texture2D<float4>) because they don't have any
natural string-only name. In addition, the canonicalization would have to be made aware of the fact that Texture2D<float4> is
the same as Texture2D<vector<float, 4>>. Similarly, an author may wish to typedef float4 to a different name.

It would be possible to mangle the names of the texture types to something unique, but then we lose information about the inner
type. For example, if we did this, Visitor wouldn't recurse into the float4 when encountering Texture2D<float4> because that
information would be lost. This could potentially make operations like programWithUnnecessaryThingsRemoved() more difficult to
implement in the future.

So, it would be better to have each type uniquely identified by (name, typeArguments). TypeRef will therefore also have
typeArguments which are used to determine which type it is referencing. After this analysis is done to determine what each
TypeRef is referencing, subsequent passes shouldn't care about the typeArguments and should only care about the .type field
which had been set - this was true even before this patch.

This means that NameContext has to aggregate types that accept typeArguments into arrays, where each array holds all the Types
that have the same name but different typeArguments. Then, when we need to match a TypeRef with a Type, we can ask the
NameContext for the appropriate array. This is the same way that function resolution works.

We can use Node.unify() to determine whether a TypeRef matches a NativeType. Eventually, this will go away, but for now, this is
an okay start. This works just about the same way that function overload resolution works.

* WebGPUShadingLanguageRI/All.js:
* WebGPUShadingLanguageRI/CallExpression.js:
(CallExpression.prototype.resolve):
* WebGPUShadingLanguageRI/CheckTypesWithArguments.js: Copied from Tools/WebGPUShadingLanguageRI/ResolveTypeDefs.js. After types
have been resolved, there should be no TypeRefs with name "vector" that don't have type arguments. This is just a sanity check.
(checkTypesWithArguments.TypeWithArgumentsChecker.prototype.visitTypeRef):
(checkTypesWithArguments.TypeWithArgumentsChecker):
(checkTypesWithArguments):
* WebGPUShadingLanguageRI/Checker.js:
(Checker.prototype.visitProgram): Program.types mirrors NameContext: it's a Map that maps strings to types. Because types with
typeArguments share names, this has to be updated to map strings to arrays for these types.
(Checker.prototype.visitTypeRef):
* WebGPUShadingLanguageRI/InferTypesForCall.js:
(inferTypesForCall): Don't know why this was here.
(inferTypesForTypeArguments): Same as inferTypesForCall, but this one is for matching type arguments.
* WebGPUShadingLanguageRI/Intrinsics.js: Adding the types. This patch also adds some scalar types like half, char, etc, but they
don't have any functions which accept them. Those will be tested in my next patch which adds math functions for these types. This
moves in the direction of matching the standard library in the spec.
(Intrinsics.cast):
(Intrinsics.bitwiseCast):
(Intrinsics.castToHalf):
(Intrinsics.):
(Intrinsics):
* WebGPUShadingLanguageRI/NameContext.js: Aggregate types with typeArguments into arrays.
(NameContext.prototype.add):
(NameContext.prototype.get let):
(NameContext.underlyingThings.prototype.else):
(NameContext.prototype.Symbol.iterator):
(NameContext):
* WebGPUShadingLanguageRI/NameResolver.js:
(NameResolver.prototype.visitTypeRef): Call TypeRef.resolve().
(NameResolver.prototype.visitCallExpression):
(NameResolver):
(NameResolver.prototype.visitVectorType): Deleted.
* WebGPUShadingLanguageRI/NativeType.js: NativeTypes can have type arguments now.
(NativeType):
(NativeType.prototype.get typeArguments):
(NativeType.prototype.toString):
(NativeType.create):
* WebGPUShadingLanguageRI/Prepare.js:
(let.prepare):
* WebGPUShadingLanguageRI/Program.js: Update to work with types aggregated into arrays.
(Program.prototype.add):
(Program.prototype.toString):
(Program):
* WebGPUShadingLanguageRI/RemoveTypeArguments.js: Removed.
* WebGPUShadingLanguageRI/ResolveNames.js: Update to work with types aggregated into arrays.
(resolveNamesInTypes):
* WebGPUShadingLanguageRI/ResolveOverloadImpl.js: Resolve the type overload for types with typeArguments.
* WebGPUShadingLanguageRI/ResolveTypeDefs.js: Update to work with types aggregated into arrays.
(resolveTypeDefsInTypes):
* WebGPUShadingLanguageRI/Rewriter.js: TypeRefs and Native/Vector types can have typeArguments.
(Rewriter.prototype.visitTypeRef):
(Rewriter.prototype.visitVectorType):
(Rewriter):
* WebGPUShadingLanguageRI/SPIRV.html:
* WebGPUShadingLanguageRI/StandardLibrary.js: Matches Intrinsics.
(bool.operator):
* WebGPUShadingLanguageRI/StatementCloner.js: Native types can have typeArguments.
(StatementCloner.prototype.visitNativeType):
* WebGPUShadingLanguageRI/SynthesizeDefaultConstructorOperator.js: Vector types need constructors too.
(synthesizeDefaultConstructorOperator.FindAllTypes.prototype.visitVectorType):
(synthesizeDefaultConstructorOperator.FindAllTypes):
(synthesizeDefaultConstructorOperator):
* WebGPUShadingLanguageRI/SynthesizeStructAccessors.js: No reason to distinguish between wrapping and instantiating a TypeRef.
(synthesizeStructAccessors.createTypeRef):
* WebGPUShadingLanguageRI/Test.html:
* WebGPUShadingLanguageRI/Test.js:
* WebGPUShadingLanguageRI/TypeOverloadResolutionFailure.js: Copied from Tools/WebGPUShadingLanguageRI/ResolveTypeDefs.js.
(TypeOverloadResolutionFailure):
(TypeOverloadResolutionFailure.prototype.get type):
(TypeOverloadResolutionFailure.prototype.get reason):
(TypeOverloadResolutionFailure.prototype.toString):
* WebGPUShadingLanguageRI/TypeRef.js:
(TypeRef.wrap):
(TypeRef.prototype.resolve): Figure out which item in the possibleOverloads array matches this.
(TypeRef.prototype.toString):
(TypeRef):
(TypeRef.instantiate): Deleted.
* WebGPUShadingLanguageRI/UnificationContext.js: We need to give literals a chance to assume their preferred type. This
adds this facility back into the compiler (it was previously deleted).
(UnificationContext.prototype.verify):
* WebGPUShadingLanguageRI/VectorType.js: Vector types have type arguments.
(VectorType):
(VectorType.prototype.get elementType):
(VectorType.prototype.get numElements):
(VectorType.prototype.get numElementsValue):
(VectorType.prototype.toString):
* WebGPUShadingLanguageRI/Visitor.js: Iterate over the typeArguments.
(Visitor.prototype.visitTypeRef):
(Visitor.prototype.visitNativeType):
(Visitor.prototype.visitVectorType):
(Visitor):
* WebGPUShadingLanguageRI/index.html:

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

12 months ago[Cocoa] First scroll gesture in pinned, non-rubber-banding WKWebView may fail to...
mitz@apple.com [Thu, 23 Aug 2018 19:51:22 +0000 (19:51 +0000)]
[Cocoa] First scroll gesture in pinned, non-rubber-banding WKWebView may fail to initiate back/forward swipe
https://bugs.webkit.org/show_bug.cgi?id=188894
<rdar://problem/43651434>

Reviewed by Tim Horton.

* WebProcess/WebPage/EventDispatcher.cpp:
(WebKit::EventDispatcher::wheelEvent): Set the rubber-band state on the ScrollingTree
  synchronously rather than dispatching doing that to the scrolling thread. This is safe to
  do because ScrollingTree synchrnoizes access to the rubber-band state with an internal
  mutex.

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

12 months ago[WTF] Add generic implementation for Memory querying
don.olmstead@sony.com [Thu, 23 Aug 2018 19:48:16 +0000 (19:48 +0000)]
[WTF] Add generic implementation for Memory querying
https://bugs.webkit.org/show_bug.cgi?id=188867
<rdar://problem/43630726>

Unreviewed build fix.

Adding MemoryPressureHandler::memoryMeasurementTimerFired was done
prematurely.

* wtf/generic/MemoryPressureHandlerGeneric.cpp:
(WTF::MemoryPressureHandler::memoryMeasurementTimerFired): Deleted.

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

12 months agoself.isSecureContext undefined in Service Worker
youenn@apple.com [Thu, 23 Aug 2018 19:43:58 +0000 (19:43 +0000)]
self.isSecureContext undefined in Service Worker
https://bugs.webkit.org/show_bug.cgi?id=188842

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/isSecureContext.https-expected.txt: Added.
* web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/isSecureContext.https.html: Added.
* web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/isSecureContext.serviceworker.js: Added.
(test):

Source/WebKit:

Enable isSecureContext runtime flag.

* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::updatePreferencesStore):

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

13 months ago[MediaStream] Store video preset sizes in a map
eric.carlson@apple.com [Thu, 23 Aug 2018 19:31:28 +0000 (19:31 +0000)]
[MediaStream] Store video preset sizes in a map
https://bugs.webkit.org/show_bug.cgi?id=188866
<rdar://problem/43622643>

Reviewed by Youenn Fablet.

No new tests, tested manually.

* platform/mediastream/mac/AVVideoCaptureSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
(WebCore::AVVideoCaptureSource::initializeCapabilities):
(WebCore::AVVideoCaptureSource::sizeForPreset):
(WebCore::AVVideoCaptureSource::setPreset):
(WebCore::AVVideoCaptureSource::bestSessionPresetForVideoDimensions):
(WebCore::sizeForPreset): Deleted.
(WebCore::AVVideoCaptureSource::bestSessionPresetForVideoDimensions const): Deleted.

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

13 months agoUnreviewed, attempt to fix the build after r235230.
ryanhaddad@apple.com [Thu, 23 Aug 2018 19:16:51 +0000 (19:16 +0000)]
Unreviewed, attempt to fix the build after r235230.

* platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:

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

13 months ago2018-08-23 youenn fablet <youennf@gmail.com>
youenn@apple.com [Thu, 23 Aug 2018 18:11:41 +0000 (18:11 +0000)]
2018-08-23  youenn fablet  <youennf@gmail.com>

        Remove libwebrtc unneeded .exe file.
        Unreviewed.

        * Source/webrtc/data/voice_engine/stereo_rtp_files/rtpplay.exe: Removed.

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

13 months ago2018-08-23 Youenn Fablet <youenn@apple.com>
youenn@apple.com [Thu, 23 Aug 2018 17:32:20 +0000 (17:32 +0000)]
2018-08-23  Youenn Fablet  <youenn@apple.com>

        Update libwebrtc up to 984f1a80c0
        https://bugs.webkit.org/show_bug.cgi?id=188745
        <rdar://problem/43539177>

        Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:
        Update libwebrtc main code.
        Update exported symbols and related applied modifications.

        * CMakeLists.txt:
        * Configurations/libwebrtc.iOS.exp:
        * Configurations/libwebrtc.iOSsim.exp:
        * Configurations/libwebrtc.mac.exp:
        * Configurations/libwebrtc.xcconfig:
        * Source/webrtc: refreshed
        * WebKit/0001-Updating-webrtc.patch: Added.
        * WebKit/0001-Adapting-libwebrtc-H264-codec.patch: Removed.
        * WebKit/0001-Disable-SIGPIPE-for-WebRTC-sockets.patch: Removed.
        * WebKit/0001-Update-RTCVideoEncoderH264.mm-for-WebKit.patch: Removed.
        * WebKit/0001-Using-VCP.patch: Removed.
        * WebKit/0003-Fixing-VP8-files.patch: Removed.
        * WebKit/0004-Removing-parameter-names-from-files-included-from-We.patch: Removed.
        * WebKit/0005-Fix-RTC_FATAL.patch: Removed.
        * WebKit/0006-Disabling-VP8.patch: Removed.
        * WebKit/0007-Fix-RTC_STRINGIZE.patch: Removed.
        * WebKit/0008-Fix-sanitizer.patch: Removed.
        * WebKit/0009-Remove-dispatch_set_target_queue.patch: Removed.
        * WebKit/0010-Fix-RTCVideoEncoderH264-CVPixelBuffer-leak.patch: Removed.
        * WebKit/0011-Fix-AudioDeviceID-array-leak.patch: Removed.
        * WebKit/0012-Add-WK-prefix-to-Objective-C-classes-and-protocols.patch: Removed.
        * WebKit/0013-Fix-SafeSetError-use-after-move.patch: Removed.
        * libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:
        Updated implementation according new webrtc backend.
        Instead of modifying libwebrtc header files, we disable unused parameter warning for such headers included in WebCore.
        WebCore implementation is updated according new webrtc API, mostly AddRef/Release.
        RealtimeOutgoingVideoSource now uses a pixel convolver to convert RGB pixel buffers as I420.

        Covered by existing tests.

        * CMakeLists.txt:
        * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
        (WebCore::LibWebRTCMediaEndpoint::addTrack):
        (WebCore::LibWebRTCMediaEndpoint::mediaStreamFromRTCStream):
        (WebCore::fillEncodingParameters):
        (WebCore::fillRtpParameters):
        * Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
        (WebCore::LibWebRTCMediaEndpoint::Release const):
        * WebCore.xcodeproj/project.pbxproj:
        * platform/mediastream/RealtimeIncomingAudioSource.h:
        * platform/mediastream/RealtimeIncomingVideoSource.h:
        * platform/mediastream/RealtimeMediaSource.cpp:
        (WebCore::RealtimeMediaSource::supportsSizeAndFrameRate):
        (WebCore::RealtimeMediaSource::supportsConstraint const):
        (WebCore::RealtimeMediaSource::supportsConstraints):
        * platform/mediastream/RealtimeOutgoingAudioSource.h:
        * platform/mediastream/RealtimeOutgoingVideoSource.h:
        * platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp:
        (WebCore::GStreamerVideoDecoder::newSampleCallback):
        * platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp:
        (WebCore::GStreamerVideoEncoder::GStreamerVideoEncoder):
        (WebCore::GStreamerVideoEncoder::newSampleCallback):
        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:
        * platform/mediastream/libwebrtc/LibWebRTCAudioModule.h:
        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:
        * platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
        (WebCore::MockRealtimeVideoSourceMac::CMSampleBufferFromPixelBuffer):
        * platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:
        (WebCore::ConvertToI420):
        (WebCore::RealtimeOutgoingVideoSourceCocoa::sampleBufferUpdated):
        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.h:
        * platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm: Added.
        (WebCore::RealtimeOutgoingVideoSourceCocoa::convertToYUV):
        * testing/MockLibWebRTCPeerConnection.cpp:
        (WebCore::MockLibWebRTCPeerConnection::AddTrack):
        * testing/MockLibWebRTCPeerConnection.h:
        (WebCore::MockRtpSender::GetParameters):
        (WebCore::MockRtpSender::SetParameters):

LayoutTests:
        Updated tests according new webrtc backend.

        * webrtc/libwebrtc/setLocalDescriptionCrash.html:
        * webrtc/video-getParameters.html:

LayoutTests/imported/w3c:
        * web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-expected.txt:
        * web-platform-tests/webrtc/no-media-call-expected.txt:

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

13 months ago[Attachment Support] Attachment elements don't appear in drag images on macOS
wenson_hsieh@apple.com [Thu, 23 Aug 2018 17:20:37 +0000 (17:20 +0000)]
[Attachment Support] Attachment elements don't appear in drag images on macOS
https://bugs.webkit.org/show_bug.cgi?id=188823
<rdar://problem/43616378>

Reviewed by Tim Horton.

Source/WebCore:

Currently, attachment elements don't show up in the drag image snapshot on macOS. This is because only the
"Selection" phase is painted when generating a drag image on macOS, and many replaced renderers (with some
exceptions, such as RenderImage) only paint visible content during the "Foreground" phase. To fix this, we
override RenderAttachment::paintReplaced to paint the attachment in the case where the Selection phase is being
painted.

Tests:  WKAttachmentTestsMac.DragAttachmentAsFilePromise
        WKAttachmentTests.MoveAttachmentElementAsIconByDragging

* rendering/RenderAttachment.cpp:
(WebCore::RenderAttachment::paintReplaced):
* rendering/RenderAttachment.h:
* rendering/RenderThemeMac.mm:
(WebCore::titleTextColorForAttachment):
(WebCore::AttachmentLayout::layOutTitle):

Plumb an AttachmentLayoutStyle (i.e. NonSelected or Selected) to AttachmentLayout, and use this bit when
determining the title text color, as well whether to paint backgrounds for the icon and title.

(WebCore::AttachmentLayout::AttachmentLayout):
(WebCore::RenderThemeMac::attachmentIntrinsicSize const):
(WebCore::RenderThemeMac::attachmentBaseline const):
(WebCore::paintAttachmentIconBackground):
(WebCore::paintAttachmentTitleBackground):

Bail from painting backgrounds if a selected style is used for the attachment.

(WebCore::RenderThemeMac::paintAttachment):

Rather than check the RenderAttachment's selection state when determining whether to paint with a non-selected
or selected style, only use selected style if the RenderAttachment has a selection _and_ the painting phase is
not "Selection". While this sounds extremely counter-intuitive, the "Selection" painting phase refers to
painting the selected foreground content _without_ including any part of the selection highlight.

Tools:

Adjusts a couple of existing tests to additionally verify that the drag image generated when dragging an
attachment element in macOS is not completely transparent.

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

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

13 months agoUpdate iOS selection tests to reflect new behavior introduced by r235153
ryanhaddad@apple.com [Thu, 23 Aug 2018 17:09:21 +0000 (17:09 +0000)]
Update iOS selection tests to reflect new behavior introduced by r235153
https://bugs.webkit.org/show_bug.cgi?id=188888

Reviewed by Megan Gardner.

* fast/events/touch/ios/double-tap-on-editable-content-for-selection-then-drag-down-to-change-selected-text.html:
* fast/events/touch/ios/double-tap-on-editable-content-for-selection-then-drag-up-to-change-selected-text.html:
* fast/events/touch/ios/long-press-on-editable-content-then-drag-up-to-change-selected-text.html:

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

13 months agoExplain test name matching in run-api-tests help
jbedard@apple.com [Thu, 23 Aug 2018 16:39:53 +0000 (16:39 +0000)]
Explain test name matching in run-api-tests help
https://bugs.webkit.org/show_bug.cgi?id=188280

Reviewed by Ryosuke Niwa.

Improve the run-api-tests help message to explain how test
name matching works.

* Scripts/webkitpy/api_tests/run_api_tests.py:
(parse_args):
* Scripts/webkitpy/port/base.py:
(Port):
(Port.path_to_api_test_binaries): Make binary names a globally accessible array.
* Scripts/webkitpy/port/win.py:
(WinPort):
(WinPort.path_to_api_test_binaries): Ditto.

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

13 months agoJSContext Inspector: Scripts not showing up in Resources tab
commit-queue@webkit.org [Thu, 23 Aug 2018 16:37:02 +0000 (16:37 +0000)]
JSContext Inspector: Scripts not showing up in Resources tab
https://bugs.webkit.org/show_bug.cgi?id=188814
<rdar://problem/43576117>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-08-23
Reviewed by Brian Burg.

* UserInterface/Views/ResourceSidebarPanel.js:
(WI.ResourceSidebarPanel.prototype._addScript):
This path shouldn't apply to JSContext inspection which will
never have a pageTarget and but doesn't have a mainResource.

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

13 months agoUse "wpt serve" to launch WPT server
youenn@apple.com [Thu, 23 Aug 2018 15:51:14 +0000 (15:51 +0000)]
Use "wpt serve" to launch WPT server
https://bugs.webkit.org/show_bug.cgi?id=188848

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

* resources/config.json:
Use config alias to serve http/wpt content as /WebKit/

Tools:

Use "wpt serve" provided by WPT instead of using our custom launcher.
This simplifies things and will avoid future breakage.
Further simplify web_platform_test_server.py by removing no longer needed actions.
- Do not copy files but use alias
- Do not kill main pid, which leaves subprocesses alive, use interrupt instead.
- Stop enumerating subprocess pids.

* Scripts/webkitpy/common/system/executive_mock.py:
(MockExecutive.interrupt):
* Scripts/webkitpy/layout_tests/servers/web_platform_test_launcher.py: Removed.
* Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py:
(WebPlatformTestServer.__init__):
(WebPlatformTestServer.ports_to_forward):
(WebPlatformTestServer._prepare_config):
(WebPlatformTestServer._spawn_process):
(WebPlatformTestServer._stop_running_server):

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

13 months agoUnreviewed, rolling out r235216.
commit-queue@webkit.org [Thu, 23 Aug 2018 15:30:32 +0000 (15:30 +0000)]
Unreviewed, rolling out r235216.
https://bugs.webkit.org/show_bug.cgi?id=188887

Caused 50+ Layout Tests to Crash and 173 api Failures on Debug
builds (Requested by Truitt on #webkit).

Reverted changeset:

"Move legacy directory configuration from WebProcessPool to
API::WebsiteDataStore"
https://bugs.webkit.org/show_bug.cgi?id=188765
https://trac.webkit.org/changeset/235216

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

13 months ago[LFC][Floating] Decouple the incoming floats and floats already placed in the list
zalan@apple.com [Thu, 23 Aug 2018 15:12:24 +0000 (15:12 +0000)]
[LFC][Floating] Decouple the incoming floats and floats already placed in the list
https://bugs.webkit.org/show_bug.cgi?id=188886

Reviewed by Antti Koivisto.

This is in preparation for the float avoidance feature where formatting context root boxes avoid existing floats.

1. Introduce FloatBox class for the incoming floats (This will need to be renamed when adding support for avoidance -incoming box is actually not a float).
2. Use the existing FloatState::FloatItem class for placed floats.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/LayoutUnits.h:
* layout/Verification.cpp:
(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree const):
* layout/displaytree/DisplayBox.h:
* layout/floats/FloatBox.cpp: Added.
(WebCore::Layout::FloatBox::FloatBox):
(WebCore::Layout::FloatBox::initializePosition):
(WebCore::Layout::FloatBox::isLeftAligned const):
(WebCore::Layout::FloatBox::setLeft):
(WebCore::Layout::FloatBox::setTopLeft):
(WebCore::Layout::FloatBox::resetVertically):
(WebCore::Layout::FloatBox::resetHorizontally):
(WebCore::Layout::FloatBox::topLeftInContainingBlock const):
* layout/floats/FloatBox.h: Copied from Source/WebCore/layout/floats/FloatingContext.h.
(WebCore::Layout::FloatBox::top const):
(WebCore::Layout::FloatBox::left const):
(WebCore::Layout::FloatBox::marginTop const):
(WebCore::Layout::FloatBox::marginLeft const):
(WebCore::Layout::FloatBox::marginBottom const):
(WebCore::Layout::FloatBox::marginRight const):
(WebCore::Layout::FloatBox::rectWithMargin const):
(WebCore::Layout::FloatBox::setTop):
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingPair::verticalPosition const):
(WebCore::Layout::begin):
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
(WebCore::Layout::FloatingContext::floatingPosition const):
(WebCore::Layout::FloatingPair::horiztonalPosition const):
(WebCore::Layout::FloatingPair::bottom const):
(WebCore::Layout::Iterator::Iterator):
(WebCore::Layout::Iterator::operator++):
(WebCore::Layout::Iterator::set):
(WebCore::Layout::FloatingContext::initialVerticalPosition const): Deleted.
(WebCore::Layout::FloatingContext::alignWithContainingBlock const): Deleted.
(WebCore::Layout::FloatingContext::alignWithFloatings const): Deleted.
(WebCore::Layout::FloatingContext::toContainingBlock const): Deleted.
* layout/floats/FloatingContext.h:
* layout/floats/FloatingState.h:
(WebCore::Layout::FloatingState::root const):
(WebCore::Layout::FloatingState::layoutContext const):

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

13 months agorun-api-tests: Add --webkit-only, --webcore-only and --webkit-legacy-only options...
jbedard@apple.com [Thu, 23 Aug 2018 13:59:11 +0000 (13:59 +0000)]
run-api-tests: Add --webkit-only, --webcore-only and --webkit-legacy-only options to run WebKit, WebCore and WebKitLegacy tests
https://bugs.webkit.org/show_bug.cgi?id=188262

Reviewed by Ryosuke Niwa.

* Scripts/webkitpy/api_tests/run_api_tests.py:
(parse_args):

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

13 months ago[CoordGraphics] Remove the remaining CoordinatedGraphicsLayerState cruft
zandobersek@gmail.com [Thu, 23 Aug 2018 12:34:36 +0000 (12:34 +0000)]
[CoordGraphics] Remove the remaining CoordinatedGraphicsLayerState cruft
https://bugs.webkit.org/show_bug.cgi?id=188881

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Remove what's left of CoordinatedGraphicsLayerState usage in the
CoordinatedGraphics subsystem. In CoordinatedGraphicsLayer, this means
dropping the m_layerState member variable since at this point it is not
used anymore in any capacity. Affected helper methods and member
variables are also removed where possible.

The syncLayerState() method on the CoordinatedGraphicsLayerClient
interface is adjusted to not accept any parameters. Client should just
mark frame synchronization as required while the layer state is now
managed differently.

Instead of the CoordinatedLayerID (which is removed) the
Nicosia::PlatformLayer::LayerID alias is introduced as a layer ID type,
aliased to the uint64_t type.

CoordinatedGraphicsState.h file is rid of all structs except the
basic CoordinatedGraphicsState struct that at this point contains only
a reference to the Nicosia::Scene object. This will be further
simplified in the patches that follow.

* platform/graphics/nicosia/NicosiaPlatformLayer.h:
(Nicosia::PlatformLayer::id const):
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::didChangeAnimations):
(WebCore::CoordinatedGraphicsLayer::didChangeChildren):
(WebCore::CoordinatedGraphicsLayer::didChangeFilters):
(WebCore::CoordinatedGraphicsLayer::didUpdateTileBuffers):
(WebCore::CoordinatedGraphicsLayer::didChangeGeometry):
(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::setPosition):
(WebCore::CoordinatedGraphicsLayer::setAnchorPoint):
(WebCore::CoordinatedGraphicsLayer::setSize):
(WebCore::CoordinatedGraphicsLayer::setTransform):
(WebCore::CoordinatedGraphicsLayer::setChildrenTransform):
(WebCore::CoordinatedGraphicsLayer::setPreserves3D):
(WebCore::CoordinatedGraphicsLayer::setMasksToBounds):
(WebCore::CoordinatedGraphicsLayer::setDrawsContent):
(WebCore::CoordinatedGraphicsLayer::setContentsVisible):
(WebCore::CoordinatedGraphicsLayer::setContentsOpaque):
(WebCore::CoordinatedGraphicsLayer::setBackfaceVisibility):
(WebCore::CoordinatedGraphicsLayer::setOpacity):
(WebCore::CoordinatedGraphicsLayer::setContentsRect):
(WebCore::CoordinatedGraphicsLayer::setContentsTileSize):
(WebCore::CoordinatedGraphicsLayer::setContentsTilePhase):
(WebCore::CoordinatedGraphicsLayer::setContentsToSolidColor):
(WebCore::CoordinatedGraphicsLayer::setShowDebugBorder):
(WebCore::CoordinatedGraphicsLayer::setShowRepaintCounter):
(WebCore::CoordinatedGraphicsLayer::setMaskLayer):
(WebCore::CoordinatedGraphicsLayer::setReplicatedByLayer):
(WebCore::CoordinatedGraphicsLayer::setNeedsDisplay):
(WebCore::CoordinatedGraphicsLayer::setNeedsDisplayInRect):
(WebCore::CoordinatedGraphicsLayer::setDebugBorder):
(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):
(WebCore::CoordinatedGraphicsLayer::syncPendingStateChangesIncludingSubLayers):
(WebCore::CoordinatedGraphicsLayer::purgeBackingStores):
(WebCore::CoordinatedGraphicsLayer::setCoordinatorIncludingSubLayersIfNeeded):
(WebCore::toCoordinatedLayerID): Deleted.
(WebCore::CoordinatedGraphicsLayer::didChangeLayerState): Deleted.
(WebCore::CoordinatedGraphicsLayer::syncChildren): Deleted.
(WebCore::CoordinatedGraphicsLayer::syncFilters): Deleted.
(WebCore::CoordinatedGraphicsLayer::syncLayerState): Deleted.
(WebCore::CoordinatedGraphicsLayer::syncAnimations): Deleted.
(WebCore::CoordinatedGraphicsLayer::resetLayerState): Deleted.
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h:
(): Deleted.
(WebCore::CoordinatedGraphicsLayerState::CoordinatedGraphicsLayerState): Deleted.
(WebCore::CoordinatedGraphicsLayerState::hasPendingChanges const): Deleted.

Source/WebKit:

Rid CompositingCoordinator class of code that manages now-deleted state
tracking of layer creation, update and removal on the
CoordinatedGraphicsState class. The syncLayerState() method is changed
accordingly, now only enforcing a frame synchronization when called.

Use of Nicosia::PlatformLayer::LayerID is adopted since the
CoordinatedLayerID type has been removed.

* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::purgeGLResources):
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::flushPendingLayerChanges):
(WebKit::CompositingCoordinator::initializeRootCompositingLayerIfNeeded):
(WebKit::CompositingCoordinator::syncLayerState):
(WebKit::CompositingCoordinator::createGraphicsLayer):
(WebKit::CompositingCoordinator::detachLayer):
(WebKit::CompositingCoordinator::attachLayer):
(WebKit::CompositingCoordinator::clearPendingStateChanges): Deleted.
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:

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

13 months agoNetworkCache::Storage::lastStableVersion should be a developer-only feature
antti@apple.com [Thu, 23 Aug 2018 07:00:08 +0000 (07:00 +0000)]
NetworkCache::Storage::lastStableVersion should be a developer-only feature
https://bugs.webkit.org/show_bug.cgi?id=188843
<rdar://problem/43574100>

Reviewed by Geoffrey Garen.

* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::deleteOldVersions):

Delete old cache versions unconditionally if we are system WebKit.

* Shared/ChildProcess.h:
* Shared/mac/ChildProcessMac.mm:
(WebKit::ChildProcess::isSystemWebKit):

Find out if WebKit is installed under '/System/'.

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

13 months ago[CoordGraphics] Drop old-school PlatformLayer management in CoordinatedGraphicsLayer
zandobersek@gmail.com [Thu, 23 Aug 2018 06:30:07 +0000 (06:30 +0000)]
[CoordGraphics] Drop old-school PlatformLayer management in CoordinatedGraphicsLayer
https://bugs.webkit.org/show_bug.cgi?id=188850

Reviewed by Michael Catanzaro.

Remove the m_platformLayer member from the CoordinatedGraphicsLayer
class as it's been unused since the rework in r235165.

The CoordinatedGraphicsLayer::syncPlatformLayer() helper method and the
related member variable can both be removed as well. On the
CoordinatedGraphicsLayerState class, we can remove the obsolete
flags and the TextureMapperPlatformLayerProxy member variable that's
unused now that such objects are handled through the Nicosia impl class.

* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::setContentsNeedsDisplay):
(WebCore::CoordinatedGraphicsLayer::setContentsToPlatformLayer):
(WebCore::CoordinatedGraphicsLayer::updatePlatformLayer):
(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):
(WebCore::CoordinatedGraphicsLayer::syncPlatformLayer): Deleted.
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h:
(WebCore::CoordinatedGraphicsLayerState::CoordinatedGraphicsLayerState):

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

13 months ago[CoordGraphics] Remove TiledBackingStoreClient inheritance from CoordinatedGraphicsLayer
zandobersek@gmail.com [Thu, 23 Aug 2018 06:27:11 +0000 (06:27 +0000)]
[CoordGraphics] Remove TiledBackingStoreClient inheritance from CoordinatedGraphicsLayer
https://bugs.webkit.org/show_bug.cgi?id=188849

Reviewed by Michael Catanzaro.

Remove the TiledBackingStoreClient inheritance from the
CoordinatedGraphicsLayer class since it's not used anymore after changes
made in r235165.

Related TiledBackingStore objects on this class, along with tile state
tracking member variables on the CoordinatedGraphicsLayerState class,
are also removed.

* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::~CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::resetLayerState):
(WebCore::CoordinatedGraphicsLayer::purgeBackingStores):
(WebCore::CoordinatedGraphicsLayer::tiledBackingStoreHasPendingTileCreation): Deleted.
(WebCore::CoordinatedGraphicsLayer::createTile): Deleted.
(WebCore::CoordinatedGraphicsLayer::updateTile): Deleted.
(WebCore::CoordinatedGraphicsLayer::removeTile): Deleted.
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h:
(WebCore::CoordinatedGraphicsLayerState::hasPendingChanges const):

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

13 months ago[CoordGraphics] Remove CoordinatedImageBacking and related functionality
zandobersek@gmail.com [Thu, 23 Aug 2018 06:20:14 +0000 (06:20 +0000)]
[CoordGraphics] Remove CoordinatedImageBacking and related functionality
https://bugs.webkit.org/show_bug.cgi?id=188847

Reviewed by Michael Catanzaro.

Remove the CoordinatedImageBacking class and its intertwining use in the
CoordinatedGraphics system.

Source/WebCore:

Remove the now-unused m_coordinatedImageBacking member variable from the
CoordinatedGraphicsLayer class, along with CoordinatedImageBacking::Host
inheritance. Various related helper methods are also removed.

In CoordinatedGraphicsState and CoordinatedGraphicsLayerState classes,
we are able to drop different CoordinatedImageBacking-related state
values that are not used anymore.

* platform/TextureMapper.cmake:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::~CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::setContentsToImage):
(WebCore::CoordinatedGraphicsLayer::purgeBackingStores):
(WebCore::CoordinatedGraphicsLayer::didChangeImageBacking): Deleted.
(WebCore::CoordinatedGraphicsLayer::syncImageBacking): Deleted.
(WebCore::CoordinatedGraphicsLayer::imageBackingVisible): Deleted.
(WebCore::CoordinatedGraphicsLayer::releaseImageBackingIfNeeded): Deleted.
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h:
(WebCore::CoordinatedGraphicsLayerState::CoordinatedGraphicsLayerState):
* platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp: Removed.
* platform/graphics/texmap/coordinated/CoordinatedImageBacking.h: Removed.

Source/WebKit:

Drop the CoordinatedImageBacking object management from the
CompositingCoordinator class, along with the
CoordinatedImageBacking::Client inheritance. The corresponding image
backing state management on the CoordinatedGraphicsState class can be
removed accordingly.

* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::flushPendingLayerChanges):
(WebKit::CompositingCoordinator::clearPendingStateChanges):
(WebKit::CompositingCoordinator::purgeBackingStores):
(WebKit::CompositingCoordinator::createImageBackingIfNeeded): Deleted.
(WebKit::CompositingCoordinator::createImageBacking): Deleted.
(WebKit::CompositingCoordinator::updateImageBacking): Deleted.
(WebKit::CompositingCoordinator::clearImageBackingContents): Deleted.
(WebKit::CompositingCoordinator::removeImageBacking): Deleted.
(WebKit::CompositingCoordinator::flushPendingImageBackingChanges): Deleted.
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:

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

13 months agoMove legacy directory configuration from WebProcessPool to API::WebsiteDataStore
sihui_liu@apple.com [Thu, 23 Aug 2018 05:52:57 +0000 (05:52 +0000)]
Move legacy directory configuration from WebProcessPool to API::WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=188765

Reviewed by Geoffrey Garen.

Diretories are parameters of websiteDataStore instead of webProcessPool, so we should move
legacy default paths to API::WebsiteDataStore, which already stores default paths for
non-legacy cases.

* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::createWithLegacyOptions):
(API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):
* UIProcess/API/APIWebsiteDataStore.cpp:
(API::WebsiteDataStore::legacyDefaultDataStoreConfiguration):
* UIProcess/API/APIWebsiteDataStore.h:
* UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
(API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory):
(API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory):
(API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultLocalStorageDirectory):
(API::WebsiteDataStore::legacyDefaultMediaCacheDirectory):
(API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory):
(API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory):
* UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:
(API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory):
(API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory):
(API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultLocalStorageDirectory):
(API::WebsiteDataStore::legacyDefaultMediaCacheDirectory):
(API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory):
(API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory):
* UIProcess/API/win/APIWebsiteDataStoreWin.cpp:
(API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory):
(API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory):
(API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultLocalStorageDirectory):
(API::WebsiteDataStore::legacyDefaultMediaCacheDirectory):
(API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory):
(API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory): Deleted.
* UIProcess/WebProcessPool.h:
* UIProcess/gtk/WebProcessPoolGtk.cpp:
(WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory): Deleted.
* UIProcess/win/WebProcessPoolWin.cpp:
(WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory): Deleted.
* UIProcess/wpe/WebProcessPoolWPE.cpp:
(WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory): Deleted.

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

13 months ago[WTF] Add generic implementation for Memory querying
don.olmstead@sony.com [Thu, 23 Aug 2018 03:01:40 +0000 (03:01 +0000)]
[WTF] Add generic implementation for Memory querying
https://bugs.webkit.org/show_bug.cgi?id=188867

Reviewed by Fujii Hironori.

Moves generic implementation of MemoryPressureHandler from
MemoryPressureHandler.cpp into MemoryPressureHandlerGeneric
and generic implementation of memoryFootprint from
MemoryFootprintLinux.cpp to MemoryFootprintGeneric.

* wtf/MemoryPressureHandler.cpp:
(WTF::MemoryPressureHandler::install): Deleted.
(WTF::MemoryPressureHandler::uninstall): Deleted.
(WTF::MemoryPressureHandler::respondToMemoryPressure): Deleted.
(WTF::MemoryPressureHandler::platformReleaseMemory): Deleted.
(WTF::MemoryPressureHandler::ReliefLogger::platformMemoryUsage): Deleted.
* wtf/PlatformJSCOnly.cmake:
* wtf/generic/MemoryFootprintGeneric.cpp: Added.
(WTF::memoryFootprint):
* wtf/generic/MemoryPressureHandlerGeneric.cpp: Added.
(WTF::MemoryPressureHandler::memoryMeasurementTimerFired):
(WTF::MemoryPressureHandler::platformReleaseMemory):
(WTF::MemoryPressureHandler::install):
(WTF::MemoryPressureHandler::uninstall):
(WTF::MemoryPressureHandler::holdOff):
(WTF::MemoryPressureHandler::respondToMemoryPressure):
(WTF::MemoryPressureHandler::ReliefLogger::platformMemoryUsage):
* wtf/linux/CurrentProcessMemoryStatus.cpp:
* wtf/linux/CurrentProcessMemoryStatus.h:
* wtf/linux/MemoryFootprintLinux.cpp:
(WTF::computeMemoryFootprint):
(WTF::memoryFootprint):
* wtf/linux/MemoryPressureHandlerLinux.cpp:

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

13 months agoStore RefPtr in FocusNavigationScope
rniwa@webkit.org [Thu, 23 Aug 2018 01:51:16 +0000 (01:51 +0000)]
Store RefPtr in FocusNavigationScope
https://bugs.webkit.org/show_bug.cgi?id=188864

Reviewed by Simon Fraser.

Use RefPtr to store the root node of a tree scope and a slot element instead of a reference and a raw pointer.

* page/FocusController.cpp:
(WebCore::FocusNavigationScope::parentInScope const):
(WebCore::FocusNavigationScope::firstNodeInScope const):
(WebCore::FocusNavigationScope::lastNodeInScope const):
(WebCore::FocusNavigationScope::FocusNavigationScope):
(WebCore::FocusNavigationScope::owner const):

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

13 months agoFurther adjustments to http/tests/websocket/connection-refusal-in-frame-resource...
wilander@apple.com [Wed, 22 Aug 2018 23:10:35 +0000 (23:10 +0000)]
Further adjustments to http/tests/websocket/connection-refusal-in-frame-resource-load-statistics.html
https://bugs.webkit.org/show_bug.cgi?id=188856

Unreviewed test gardening. Trying to address flakiness I can't reproduce locally.

* http/tests/websocket/connection-refusal-in-frame-resource-load-statistics.html:

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

13 months agoThe Storage Access API prompt should show the eTLD+1s, not the full host names
wilander@apple.com [Wed, 22 Aug 2018 22:54:34 +0000 (22:54 +0000)]
The Storage Access API prompt should show the eTLD+1s, not the full host names
https://bugs.webkit.org/show_bug.cgi?id=188830
<rdar://problem/43380645>

Reviewed by Brent Fulgham.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::requestStorageAccess):

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

13 months agoDe-unify WebPage
timothy_horton@apple.com [Wed, 22 Aug 2018 22:51:22 +0000 (22:51 +0000)]
De-unify WebPage
https://bugs.webkit.org/show_bug.cgi?id=188865

Reviewed by Wenson Hsieh.

* Sources.txt:
* WebKit.xcodeproj/project.pbxproj:
WebPage being unified is causing mysterious build issues inside Carbon headers
on High Sierra only. Also, WebPage by itself takes longer to build than
most full unified source files, so it might not make sense to unify it
with others (to maximize parallelism).

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

13 months agoUnreviewed, update "Web Authentication" from "Under Consideration" to "In Development"
jiewen_tan@apple.com [Wed, 22 Aug 2018 22:49:42 +0000 (22:49 +0000)]
Unreviewed, update "Web Authentication" from "Under Consideration" to "In Development"
in features.json.

* features.json:

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

13 months agoUpdate webkit-webgl-test-harness.js for more details on WebGL 2 conformance tests
commit-queue@webkit.org [Wed, 22 Aug 2018 22:48:00 +0000 (22:48 +0000)]
Update webkit-webgl-test-harness.js for more details on WebGL 2 conformance tests
https://bugs.webkit.org/show_bug.cgi?id=188825

Patch by Justin Fan <justin_fan@apple.com> on 2018-08-22
Reviewed by Simon Fraser.

Another update to the test-harness specific to the new WebGL 2 tests in our suite. All sub-test messages are
now reported by the harness and presented in an ordered list for easier referencing. Sub-test failures are
marked accordingly and with their test number for diffing purposes.

* webgl/2.0.0/conformance2/glsl3/array-as-return-value-expected.txt:
* webgl/2.0.0/conformance2/glsl3/array-assign-constructor-expected.txt:
* webgl/2.0.0/conformance2/glsl3/array-assign-expected.txt:
* webgl/2.0.0/conformance2/glsl3/array-complex-indexing-expected.txt:
* webgl/2.0.0/conformance2/glsl3/array-element-increment-expected.txt:
* webgl/2.0.0/conformance2/glsl3/array-equality-expected.txt:
* webgl/2.0.0/conformance2/glsl3/array-in-complex-expression-expected.txt:
* webgl/2.0.0/conformance2/glsl3/attrib-location-length-limits-expected.txt:
* webgl/2.0.0/conformance2/glsl3/bool-type-cast-bug-uint-ivec-uvec-expected.txt:
* webgl/2.0.0/conformance2/glsl3/compare-structs-containing-arrays-expected.txt:
* webgl/2.0.0/conformance2/glsl3/compound-assignment-type-combination-expected.txt:
* webgl/2.0.0/conformance2/glsl3/const-array-init-expected.txt:
* webgl/2.0.0/conformance2/glsl3/forbidden-operators-expected.txt:
* webgl/2.0.0/conformance2/glsl3/frag-depth-expected.txt:
* webgl/2.0.0/conformance2/glsl3/invalid-default-precision-expected.txt:
* webgl/2.0.0/conformance2/glsl3/invalid-invariant-expected.txt:
* webgl/2.0.0/conformance2/glsl3/loops-with-side-effects-expected.txt:
* webgl/2.0.0/conformance2/glsl3/misplaced-version-directive-expected.txt:
* webgl/2.0.0/conformance2/glsl3/no-attribute-vertex-shader-expected.txt:
* webgl/2.0.0/conformance2/glsl3/sampler-no-precision-expected.txt:
* webgl/2.0.0/conformance2/glsl3/sequence-operator-returns-non-constant-expected.txt:
* webgl/2.0.0/conformance2/glsl3/shader-linking-expected.txt:
* webgl/2.0.0/conformance2/glsl3/shader-with-1024-character-define-expected.txt:
* webgl/2.0.0/conformance2/glsl3/shader-with-1024-character-identifier.frag-expected.txt:
* webgl/2.0.0/conformance2/glsl3/shader-with-1025-character-define-expected.txt:
* webgl/2.0.0/conformance2/glsl3/shader-with-1025-character-identifier.frag-expected.txt:
* webgl/2.0.0/conformance2/glsl3/shader-with-invalid-characters-expected.txt:
* webgl/2.0.0/conformance2/glsl3/shader-with-mis-matching-uniform-block-expected.txt:
* webgl/2.0.0/conformance2/glsl3/short-circuiting-in-loop-condition-expected.txt:
* webgl/2.0.0/conformance2/glsl3/texture-offset-out-of-range-expected.txt:
* webgl/2.0.0/conformance2/glsl3/texture-offset-uniform-texture-coordinate-expected.txt:
* webgl/2.0.0/conformance2/glsl3/tricky-loop-conditions-expected.txt:
* webgl/2.0.0/conformance2/glsl3/unary-minus-operator-in-dynamic-loop-expected.txt:
* webgl/2.0.0/conformance2/glsl3/uniform-block-layout-match-expected.txt:
* webgl/2.0.0/conformance2/glsl3/uniform-block-layouts-expected.txt:
* webgl/2.0.0/conformance2/glsl3/uniform-location-length-limits-expected.txt:
* webgl/2.0.0/conformance2/glsl3/valid-invariant-expected.txt:
* webgl/2.0.0/conformance2/glsl3/vector-dynamic-indexing-expected.txt:
* webgl/2.0.0/conformance2/glsl3/vector-dynamic-indexing-nv-driver-bug-expected.txt:
* webgl/2.0.0/conformance2/vertex_arrays/vertex-array-object-expected.txt:
* webgl/2.0.0/resources/webkit-webgl-test-harness.js:
(list):
(window.webglTestHarness.reportResults):
(window.webglTestHarness.notifyFinished):

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

13 months agoUnreviewed, rolling out r235204.
david_fenton@apple.com [Wed, 22 Aug 2018 22:44:49 +0000 (22:44 +0000)]
Unreviewed, rolling out r235204.

reverting previous rollout

Reverted changeset:

"Unreviewed, rolling out r235176."
https://bugs.webkit.org/show_bug.cgi?id=185015
https://trac.webkit.org/changeset/235204

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

13 months agoUnreviewed, rolling out r235176.
david_fenton@apple.com [Wed, 22 Aug 2018 22:39:28 +0000 (22:39 +0000)]
Unreviewed, rolling out r235176.

broke internal builds

Reverted changeset:

"Use unified build for WebProcess"
https://bugs.webkit.org/show_bug.cgi?id=185015
https://trac.webkit.org/changeset/235176

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

13 months ago[MSVC] Stop disabling /O2 features.
ross.kirsling@sony.com [Wed, 22 Aug 2018 22:23:51 +0000 (22:23 +0000)]
[MSVC] Stop disabling /O2 features.
https://bugs.webkit.org/show_bug.cgi?id=188811

Reviewed by Per Arne Vollan.

* Source/cmake/OptionsMSVC.cmake:
Don't disable /GF (string pooling) or /Gy (function-level linking).

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

13 months ago[Attachment Support] Support dragging attachment elements out as files on macOS
wenson_hsieh@apple.com [Wed, 22 Aug 2018 21:35:02 +0000 (21:35 +0000)]
[Attachment Support] Support dragging attachment elements out as files on macOS
https://bugs.webkit.org/show_bug.cgi?id=181294
<rdar://problem/36298801>

Reviewed by Tim Horton.

Source/WebCore:

Serialize a dragged attachment element as a web archive on macOS. This allows us to move attachment elements
around a document by dragging, without performing a file upload upon every drop. Ideally, we should do this on
iOS as well, but this currently causes attachment data to go missing; further investigation to fix this for iOS
is tracked in <https://bugs.webkit.org/show_bug.cgi?id=181514>.

Tests:  WKAttachmentTestsMac.DragAttachmentAsFilePromise
        WKAttachmentTests.MoveAttachmentElementAsIconByDragging

* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::getPasteboardTypesAndDataForAttachment):

Source/WebKit:

Add support for dragging attachment elements on macOS by writing promised files to drag pasteboard. See changes
below for more details.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView filePromiseProvider:fileNameForType:]):
(-[WKWebView filePromiseProvider:writePromiseToURL:completionHandler:]):
(-[WKWebView draggingSession:sourceOperationMaskForDraggingContext:]):
(-[WKWebView draggingSession:endedAtPoint:operation:]):
* UIProcess/API/mac/WKView.mm:
(-[WKView filePromiseProvider:fileNameForType:]):
(-[WKView filePromiseProvider:writePromiseToURL:completionHandler:]):
(-[WKView draggingSession:sourceOperationMaskForDraggingContext:]):
(-[WKView draggingSession:endedAtPoint:operation:]):

Plumb NSFilePromiseProviderDelegate and NSDraggingSource method implementations to WebViewImpl.

* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(-[WKPromisedAttachmentContext initWithAttachmentInfo:]):
(-[WKPromisedAttachmentContext blobURL]):
(-[WKPromisedAttachmentContext filename]):
(-[WKPromisedAttachmentContext attachmentIdentifier]):

Add an object that contains the information needed to deliver a dragged attachment element's data via
NSFilePromiseProvider. This is stored as the userInfo of the NSFilePromiseProvider created upon drag start.

(WebKit::WebViewImpl::draggedImage):
(WebKit::WebViewImpl::sendDragEndToPage):

Add a helper method to handle cleanup after the dragging has finished, and call it from -draggedImage:… and
-draggingSessionEnded:…. The latter is only triggered in the where -beginDraggingSessionWithItems:… is used,
which currently only happens when dragging attachment elements.

(WebKit::WebViewImpl::fileNameForFilePromiseProvider):
(WebKit::webKitUnknownError):
(WebKit::WebViewImpl::writeToURLForFilePromiseProvider):

Deliver either NSFileWrapper data to the destination URL (in the case where an attachment identifier is known
and the corresponding API::Attachment is backed by a file wrapper), or save the contents of the blob URL to the
destination.

(WebKit::WebViewImpl::dragSourceOperationMask):
(WebKit::WebViewImpl::draggingSessionEnded):
(WebKit::WebViewImpl::startDrag):

Tools:

Add DragAndDropSimulator support for intercepting calls to -beginDraggingSessionWithitems:event:source:. This
enables us to write API tests for macOS that exercise the attachment SPI in combination with dragging attachment
elements.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(-[TestWKWebView attachmentElementMidPoint]):

Add a helper method local to this test suite that grabs the midpoint (in client coordinates) or the first
attachment element in the document.

(TestWebKitAPI::TEST):

Add a new API test to verify that dragging an attachment element on macOS produces file providers which may be
used to write attachment data to a path on disk. Additionally, refactor an existing API test,
MoveAttachmentElementAsIconByDragging, so that it runs on both iOS and macOS, to test the ability to move
attachment elements around in a document by using drag and drop.

* TestWebKitAPI/cocoa/DragAndDropSimulator.h:
* TestWebKitAPI/mac/DragAndDropSimulatorMac.mm:
(-[DragAndDropTestWKWebView beginDraggingSessionWithItems:event:source:]):
(-[DragAndDropSimulator initWithWebViewFrame:configuration:]):
(-[DragAndDropSimulator dealloc]):
(-[DragAndDropSimulator runFrom:to:]):
(-[DragAndDropSimulator beginDraggingSessionInWebView:withItems:source:]):

Begin a drag session and kick off the -continueDragSession loop. Unlike -performDragInWebView:…, which spins
the main runloop until dragging ends, this version returns execution to the web view and schedules dragging
updates asynchronously. This matches AppKit behavior.

(-[DragAndDropSimulator continueDragSession]):

Increment the dragging progress amount, send a drag update to the web view, and continue scheduling calls to
itself until the progress reaches 1.

(-[DragAndDropSimulator performDragInWebView:atLocation:withImage:pasteboard:source:]):
(-[DragAndDropSimulator initializeDraggingInfo:dragImage:source:]):

Pull out common logic for creating a new TestDraggingInfo after starting a drag.

(-[DragAndDropSimulator insertedAttachments]):
(-[DragAndDropSimulator removedAttachments]):
(-[DragAndDropSimulator draggingSession]):
(-[DragAndDropSimulator receivePromisedFiles]):

Helper method to save promised files written to the pasteboard after a drag to the temporary directory. These
files are tracked by DragAndDropSimulator and automatically cleaned up after the test finishes.

(-[DragAndDropSimulator endDataTransfer]):

Add a method stub on macOS, so that MoveAttachmentElementAsIconByDragging can be made cross-platform.

(-[DragAndDropSimulator _webView:didInsertAttachment:withSource:]):
(-[DragAndDropSimulator _webView:didRemoveAttachment:]):

Implement method stubs to keep track of inserted or removed attachments while simulating a drag.

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

13 months ago[iOS] Add support for the inputmode attribute
akeerthi@apple.com [Wed, 22 Aug 2018 21:22:13 +0000 (21:22 +0000)]
[iOS] Add support for the inputmode attribute
https://bugs.webkit.org/show_bug.cgi?id=183621

Reviewed by Tim Horton.

Source/WebCore:

Added the inputmode attribute to the HTMLInputElement and HTMLTextAreaElement IDL
files. The possible values for the attribute are specified in InputModeNames.

Test: fast/forms/inputmode-attribute.html

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/HTMLAttributeNames.in:
* html/HTMLInputElement.idl:
* html/HTMLTextAreaElement.idl:
* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::inputMode const):
(WebCore::HTMLTextFormControlElement::setInputMode):
* html/HTMLTextFormControlElement.h:
* html/InputModeNames.cpp: Added.
(WebCore::InputModeNames::text):
(WebCore::InputModeNames::tel):
(WebCore::InputModeNames::url):
(WebCore::InputModeNames::email):
(WebCore::InputModeNames::numeric):
(WebCore::InputModeNames::decimal):
(WebCore::InputModeNames::search):
* html/InputModeNames.h: Added.

Source/WebKit:

The inputmode attribute specifies which input mechanism would be most helpful for
users entering content in textfield inputs and textareas. This patch adds support
for seven values: text, tel, url, email, numeric, decimal and search.

On iOS, we can specify UIKeyboardTypes that best match the supplied inputmode.
- text: UIKeyboardTypeDefault
- tel: UIKeyboardTypePhonePad
- url: UIKeyboardTypeURL
- email: UIKeyboardTypeEmailAddress
- numeric: UIKeyboardTypeNumbersAndPunctuation
- decimal: UIKeyboardTypeDecimalPad
- search: UIKeyboardTypeWebSearch

In the case that the inputmode attribute is not specified, we fall back to using
our existing heuristic to determine what kind of keyboard to show for textfields.

* Shared/AssistedNodeInformation.cpp:
(WebKit::AssistedNodeInformation::encode const):
(WebKit::AssistedNodeInformation::decode):
* Shared/AssistedNodeInformation.h: Added inputMode field.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView textInputTraits]):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::inputModeForElement):
(WebKit::WebPage::getAssistedNodeInformation):

Tools:

Added an API test to verify that the correct UIKeyboardType is set depending on
the type, inputmode, and pattern specified for an input field.

* TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:
(TestWebKitAPI::TEST):
* TestWebKitAPI/ios/UIKitSPI.h:

LayoutTests:

Added test to verify behavior when getting and setting the inputmode attribute.

* fast/forms/inputmode-attribute-expected.txt: Added.
* fast/forms/inputmode-attribute.html: Added.

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

13 months agoWKNavigationDelegate needs to allow clients to specify a custom blocked plug-in message
jeffm@apple.com [Wed, 22 Aug 2018 21:08:38 +0000 (21:08 +0000)]
WKNavigationDelegate needs to allow clients to specify a custom blocked plug-in message
https://bugs.webkit.org/show_bug.cgi?id=188764

Reviewed by Alex Christensen.

Add a new private WKNavigationDelegate method that takes a completion handler so clients can return
a custom unavailability description in addition to the policy. Change WebPageProxy::findPlugin() to
send a delayed reply and API::LoaderClient::pluginLoadPolicy()/API::NavigationClient::decidePolicyForPluginLoad()
to take a completion handler to support this.

* UIProcess/API/APILoaderClient.h:
(API::LoaderClient::pluginLoadPolicy):
Changed to take a completion handler. The default implementation doesn't return a custom
unavailability description.

* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::decidePolicyForPluginLoad):
Ditto.

* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageLoaderClient):
Changed pluginLoadPolicy() to take a completion handler.

(WKPageSetPageNavigationClient):
Changed decidePolicyForPluginLoad() to take a completion handler.

* UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
Add alternate version of -decidePolicyForPluginLoadWithCurrentPolicy: that allows clients to return
the unavailibility description.

* UIProcess/Cocoa/NavigationState.h:
Add flag for new delegate method.
Changed decidePolicyForPluginLoad() to take a completion handler.

* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::setNavigationDelegate):
Calculate flag for new delegate method.

(WebKit::NavigationState::NavigationClient::decidePolicyForPluginLoad):
Changed to take a completion handler.
Prefer new delegate method, if available.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::findPlugin):
Changed to send a delayed reply.
Refactored some code into a lambda so it can be shared when using m_navigationClient->decidePolicyForPluginLoad().
Removed unneeded UNUSED_PARAM() macros.

* UIProcess/WebPageProxy.h:
Changed findPlugin() to send a delayed reply.

* UIProcess/WebPageProxy.messages.in:
Ditto.

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

13 months agoFix API test on Sierra after r235139
achristensen@apple.com [Wed, 22 Aug 2018 20:46:41 +0000 (20:46 +0000)]
Fix API test on Sierra after r235139
https://bugs.webkit.org/show_bug.cgi?id=188810

* TestWebKitAPI/Tests/mac/LimitTitleSize.mm:
(TEST):

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

13 months agohttps://bugs.webkit.org/show_bug.cgi?id=188859
msaboff@apple.com [Wed, 22 Aug 2018 20:42:17 +0000 (20:42 +0000)]
https://bugs.webkit.org/show_bug.cgi?id=188859
Eliminate dead code operationThrowDivideError() and operationThrowOutOfBoundsAccessError()

Rubber-stamped by Saam Barati.

Deleted these two functions.

* jit/JITOperations.cpp:
* jit/JITOperations.h:

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

13 months agoLog more often during AirPlay state changes
eric.carlson@apple.com [Wed, 22 Aug 2018 20:40:22 +0000 (20:40 +0000)]
Log more often during AirPlay state changes
https://bugs.webkit.org/show_bug.cgi?id=188854

Always log some infrequent but important AirPlay state changes to make debugging easier.

Reviewed by Jer Noble.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::webkitShowPlaybackTargetPicker): Low always.
(WebCore::HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged): Ditto.
(WebCore::HTMLMediaElement::setWirelessPlaybackTarget): Ditto.
(WebCore::HTMLMediaElement::setShouldPlayToPlaybackTarget): Ditto.

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

13 months ago[Win] Some video tests under http/tests/security are crashing on EWS.
pvollan@apple.com [Wed, 22 Aug 2018 20:31:47 +0000 (20:31 +0000)]
[Win] Some video tests under http/tests/security are crashing on EWS.
https://bugs.webkit.org/show_bug.cgi?id=188853

Unreviewed test gardening.

* platform/win/TestExpectations:

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

13 months agoDon't use WTF_CPU_MIPS when building for mips64
berto@igalia.com [Wed, 22 Aug 2018 20:27:22 +0000 (20:27 +0000)]
Don't use WTF_CPU_MIPS when building for mips64
https://bugs.webkit.org/show_bug.cgi?id=188858

Reviewed by Michael Catanzaro.

* CMakeLists.txt: Use WTF_CPU_MIPS64 for this architecture.

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

13 months agoMake ResourceLoadObserver::logWebSocketLoading() handle websockets in detached frames
wilander@apple.com [Wed, 22 Aug 2018 20:07:17 +0000 (20:07 +0000)]
Make ResourceLoadObserver::logWebSocketLoading() handle websockets in detached frames
https://bugs.webkit.org/show_bug.cgi?id=188856

Unreviewed test gardening.

* TestExpectations:
    Skipped test since it's only valid on WK2 platforms.
* http/tests/websocket/connection-refusal-in-frame-resource-load-statistics-expected.txt: Added.
* http/tests/websocket/connection-refusal-in-frame-resource-load-statistics.html: Renamed from LayoutTests/http/tests/websocket/construct-in-detached-frame-resource-load-statistics.html.
* http/tests/websocket/construct-in-detached-frame-resource-load-statistics-expected.txt: Removed.
* http/tests/websocket/resources/construct-in-detached-frame-resource-load-statistics.html: Removed.
* http/tests/websocket/resources/localhost-websocket-connect.html: Added.
* platform/wk2/TestExpectations:
    Marked test as [ Pass ].

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

13 months ago[iOS] Rebaseline table tests
ryanhaddad@apple.com [Wed, 22 Aug 2018 20:02:31 +0000 (20:02 +0000)]
[iOS] Rebaseline table tests
https://bugs.webkit.org/show_bug.cgi?id=188833

Unreviewed test gardening.

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

13 months agoFocus navigation order in slot fallback contents is wrong
rniwa@webkit.org [Wed, 22 Aug 2018 19:59:24 +0000 (19:59 +0000)]
Focus navigation order in slot fallback contents is wrong
https://bugs.webkit.org/show_bug.cgi?id=178001
<rdar://problem/42842997>

Reviewed by Antti Koivisto.

Source/WebCore:

The bug here is that when a slot uses its fallback content, the fallback content's focus order doesn't get
grouped by that of the slot. Consider the following DOM tree:

- ShadowRoot
    - div tabindex = 2
    - slot tabindex = 1
        - span tabindex = 3

In this example, the sequential focus navigation should be slot, span, then div. Even though span has tabindex
order of 3, which is lower than that of div, the fallback content of the slot should be grouped together
before the focus moves out of the slot content.

In WebKit, this concept of grouping elements for the sequential focus navigation ordering is implemeneted
as FocusNavigationScope. Both ShadowRoot and HTMLSlotElement are treated as a focus scope owner but we had
a bug that a slot element which uses its fallback content was not treated as a focus scope owner.

This patch addresses the bug by treating a slot wich uses its fallback content as a focus scope owner.

Test: fast/shadow-dom/focus-navigation-across-slots.html

* page/FocusController.cpp:
(WebCore::isFocusScopeOwner): Treat a slot elment hs a focus scope owner regardless of whether it has assigned
nodes or not.
(WebCore::FocusNavigationScope::SlotKind): Added.
(WebCore::FocusNavigationScope::m_slotKind): Added.
(WebCore::FocusNavigationScope::parentInScope const): Return null if `node` is a child of the slot element for
which this FocusNavigationScope is created (i.e. `node` is slot's fallback content).
(WebCore::FocusNavigationScope::firstNodeInScope const): Return the first child node when this
FocusNavigationScope is for a slot element using its fallback content.
(WebCore::FocusNavigationScope::lastNodeInScope const): Ditto for the last child.
(WebCore::FocusNavigationScope::FocusNavigationScope):
(WebCore::FocusNavigationScope::scopeOf): The scope of a child of a slot element which uses its fallback content
is its slot element (i.e. the current node is a fallback content). We can't simply check the current node is
a slot element which uses a fallback content since the scope of a slot element is the parent scope. e.g. its
tree scope like ShadowRoot or Document inside which this slot element appears.
(WebCore::FocusNavigationScope::scopeOwnedByScopeOwner): Create the appropriate FocusNavigationScope based on
whether the slot element has assigned or it uses its fallback content.

LayoutTests:

Updated the sequential focus navigation test for shadow DOM and its expectation.

New test passes in Firefox & Chrome other than the fact both browsers fail to focus a slot elemennt.

* fast/shadow-dom/focus-navigation-across-slots-expected.txt:
* fast/shadow-dom/focus-navigation-across-slots.html:

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

13 months agoMove files in WebCore project to match Xcode folder structure
ddkilzer@apple.com [Wed, 22 Aug 2018 19:33:46 +0000 (19:33 +0000)]
Move files in WebCore project to match Xcode folder structure
<https://webkit.org/b/188851>

Reviewed by Tim Horton.

Source/WebCore:

* Scripts/LocalizableStrings.pm: Renamed from Source/WebCore/LocalizableStrings.pm.
* Scripts/extract-localizable-strings.pl: Renamed from Source/WebCore/extract-localizable-strings.pl.
* WebCore.xcodeproj/project.pbxproj: Update to match new location of files.
* platform/audio/cocoa/WebAudioBufferList.cpp: Renamed from Source/WebCore/platform/audio/WebAudioBufferList.cpp.
* platform/audio/cocoa/WebAudioBufferList.h: Renamed from Source/WebCore/platform/audio/WebAudioBufferList.h.
* platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h: Renamed from Source/WebCore/platform/graphics/avfoundation/MediaSampleAVFObjC.h.
* platform/ios/wak/WAKViewInternal.h: Renamed from Source/WebCore/platform/WAKViewInternal.h.
  Also fix 3 webkit-style warnings.

Tools:

* Scripts/extract-localizable-strings:
* Scripts/update-webkit-localizable-strings:
- Update to match new location of extract-localizable-strings.pl.

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

13 months agoMake data-view-access.js run less time to prevent timeouts on 32-bit
sbarati@apple.com [Wed, 22 Aug 2018 18:53:27 +0000 (18:53 +0000)]
Make data-view-access.js run less time to prevent timeouts on 32-bit

* microbenchmarks/data-view-accesses.js:

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

13 months agoWeb Inspector: cannot delete multiple event breakpoints by repeatedly hitting delete
drousso@apple.com [Wed, 22 Aug 2018 17:56:44 +0000 (17:56 +0000)]
Web Inspector: cannot delete multiple event breakpoints by repeatedly hitting delete
https://bugs.webkit.org/show_bug.cgi?id=188803
<rdar://problem/43572838>

Reviewed by Matt Baker.

* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._domBreakpointAddedOrRemoved):
(WI.DebuggerSidebarPanel.prototype._eventBreakpointAddedOrRemoved):

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

13 months agoVersioning.
kocsen_chung@apple.com [Wed, 22 Aug 2018 17:51:01 +0000 (17:51 +0000)]
Versioning.

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

13 months ago[Win] Some video tests under http/tests/security are crashing on EWS.
pvollan@apple.com [Wed, 22 Aug 2018 17:29:18 +0000 (17:29 +0000)]
[Win] Some video tests under http/tests/security are crashing on EWS.
https://bugs.webkit.org/show_bug.cgi?id=188853

Unreviewed test gardening.

* platform/win/TestExpectations:

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

13 months ago[Win] Some video tests under http/tests/security are crashing on EWS.
pvollan@apple.com [Wed, 22 Aug 2018 17:19:30 +0000 (17:19 +0000)]
[Win] Some video tests under http/tests/security are crashing on EWS.
https://bugs.webkit.org/show_bug.cgi?id=188853

Unreviewed test gardening.

* platform/win/TestExpectations:

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

13 months agoTry removing defaultSessionParameters from NetworkProcessCreationParameters
sihui_liu@apple.com [Wed, 22 Aug 2018 17:17:34 +0000 (17:17 +0000)]
Try removing defaultSessionParameters from NetworkProcessCreationParameters
https://bugs.webkit.org/show_bug.cgi?id=188831

Reviewed by Alex Christensen.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::ensureNetworkProcess):

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

13 months ago[LFC][Floating] Move files to a dedicated directory.
zalan@apple.com [Wed, 22 Aug 2018 17:10:34 +0000 (17:10 +0000)]
[LFC][Floating] Move files to a dedicated directory.
https://bugs.webkit.org/show_bug.cgi?id=188846

Reviewed by Simon Fraser.

layout/Float* -> layout/floats

* WebCore.xcodeproj/project.pbxproj:
* layout/floatformatting/FloatingContext.cpp: Renamed from Source/WebCore/layout/FloatingContext.cpp.
(WebCore::Layout::FloatingPair::isEmpty const):
(WebCore::Layout::FloatingPair::verticalPosition const):
(WebCore::Layout::Iterator::operator* const):
(WebCore::Layout::begin):
(WebCore::Layout::end):
(WebCore::Layout::FloatingContext::FloatingContext):
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
(WebCore::Layout::FloatingContext::floatingPosition const):
(WebCore::Layout::FloatingContext::initialVerticalPosition const):
(WebCore::Layout::FloatingContext::alignWithContainingBlock const):
(WebCore::Layout::FloatingContext::alignWithFloatings const):
(WebCore::Layout::FloatingContext::toContainingBlock const):
(WebCore::Layout::FloatingPair::FloatingPair):
(WebCore::Layout::FloatingPair::left const):
(WebCore::Layout::FloatingPair::right const):
(WebCore::Layout::FloatingPair::intersects const):
(WebCore::Layout::FloatingPair::operator == const):
(WebCore::Layout::FloatingPair::bottom const):
(WebCore::Layout::Iterator::Iterator):
(WebCore::Layout::previousFloatingIndex):
(WebCore::Layout::Iterator::operator++):
(WebCore::Layout::Iterator::set):
(WebCore::Layout::Iterator::operator== const):
(WebCore::Layout::Iterator::operator!= const):
* layout/floatformatting/FloatingContext.h: Renamed from Source/WebCore/layout/FloatingContext.h.
(WebCore::Layout::FloatingContext::floatingState const):
(WebCore::Layout::FloatingContext::layoutContext const):
* layout/floatformatting/FloatingState.cpp: Renamed from Source/WebCore/layout/FloatingState.cpp.
(WebCore::Layout::FloatingState::FloatItem::FloatItem):
(WebCore::Layout::FloatingState::FloatingState):
(WebCore::Layout::belongsToThisFloatingContext):
(WebCore::Layout::FloatingState::remove):
(WebCore::Layout::FloatingState::append):
(WebCore::Layout::FloatingState::bottom const):
* layout/floatformatting/FloatingState.h: Renamed from Source/WebCore/layout/FloatingState.h.
(WebCore::Layout::FloatingState::create):
(WebCore::Layout::FloatingState::isEmpty const):
(WebCore::Layout::FloatingState::FloatItem::layoutBox const):
(WebCore::Layout::FloatingState::FloatItem::containingBlock const):
(WebCore::Layout::FloatingState::FloatItem::displayBox const):
(WebCore::Layout::FloatingState::FloatItem::containingBlockDisplayBox const):
(WebCore::Layout::FloatingState::floats const):
(WebCore::Layout::FloatingState::last const):
(WebCore::Layout::FloatingState::layoutContext const):
(WebCore::Layout::FloatingState::root const):
(WebCore::Layout::FloatingState::leftBottom const):
(WebCore::Layout::FloatingState::rightBottom const):
(WebCore::Layout::FloatingState::bottom const):

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

13 months agoThe DFG CFGSimplification phase shouldn’t jettison a block when it’s the target of...
mark.lam@apple.com [Wed, 22 Aug 2018 16:55:19 +0000 (16:55 +0000)]
The DFG CFGSimplification phase shouldn’t jettison a block when it’s the target of both branch directions.
https://bugs.webkit.org/show_bug.cgi?id=188298
<rdar://problem/42888427>

Reviewed by Saam Barati.

JSTests:

* stress/bug-188298.js: Added.

Source/JavaScriptCore:

In the event that both targets of a Branch is the same block, then even if we'll
always take one path of the branch, the other target is not unreachable because
it is the same target as the one in the taken path.  Hence, it should not be
jettisoned.

* JavaScriptCore.xcodeproj/project.pbxproj:
- Added DFGCFG.h which is in use and should have been added to the project.
* dfg/DFGCFGSimplificationPhase.cpp:
(JSC::DFG::CFGSimplificationPhase::run):

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

13 months agoUse unified build for WebProcess
timothy_horton@apple.com [Wed, 22 Aug 2018 16:54:14 +0000 (16:54 +0000)]
Use unified build for WebProcess
https://bugs.webkit.org/show_bug.cgi?id=185015

Reviewed by Alex Christensen.

* Sources.txt:
* SourcesCocoa.txt:
* UIProcess/WebPageProxy.h:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
* WebProcess/Databases/WebDatabaseProvider.cpp:
* WebProcess/EntryPoint/mac/XPCService/WebContentServiceEntryPoint.mm:
* WebProcess/FileAPI/BlobRegistryProxy.cpp:
* WebProcess/FullScreen/WebFullScreenManager.cpp:
* WebProcess/Gamepad/WebGamepadProvider.cpp:
* WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp:
* WebProcess/Geolocation/WebGeolocationManager.cpp:
* WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm:
* WebProcess/InjectedBundle/API/gtk/DOM/GObjectEventListener.cpp:
* WebProcess/InjectedBundle/DOM/InjectedBundleCSSStyleDeclarationHandle.cpp:
* WebProcess/InjectedBundle/DOM/InjectedBundleFileHandle.cpp:
* WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
* WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
* WebProcess/InjectedBundle/InjectedBundleBackForwardList.cpp:
* WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.cpp:
* WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.cpp:
* WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:
* WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageFullScreenClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePagePolicyClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
* WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp:
* WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
* WebProcess/Network/NetworkProcessConnection.cpp:
* WebProcess/Network/WebLoaderStrategy.cpp:
* WebProcess/Network/WebResourceLoader.cpp:
* WebProcess/Network/WebSocketProvider.cpp:
* WebProcess/Network/WebSocketStream.cpp:
* WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
* WebProcess/Network/webrtc/LibWebRTCResolver.cpp:
* WebProcess/Network/webrtc/LibWebRTCResolver.h:
* WebProcess/Network/webrtc/LibWebRTCSocket.cpp:
* WebProcess/Network/webrtc/LibWebRTCSocket.h:
* WebProcess/Network/webrtc/WebMDNSRegister.cpp:
* WebProcess/Network/webrtc/WebRTCMonitor.cpp:
* WebProcess/Network/webrtc/WebRTCMonitor.h:
* WebProcess/Notifications/NotificationPermissionRequestManager.cpp:
* WebProcess/Notifications/WebNotificationManager.cpp:
* WebProcess/Plugins/Netscape/JSNPMethod.cpp:
* WebProcess/Plugins/Netscape/JSNPObject.cpp:
* WebProcess/Plugins/Netscape/NPJSObject.cpp:
* WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
* WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:
* WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
* WebProcess/Plugins/Netscape/NetscapePluginNone.cpp:
* WebProcess/Plugins/Netscape/NetscapePluginStream.cpp:
* WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
* WebProcess/Plugins/PDF/PDFPlugin.mm:
* WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:
* WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:
* WebProcess/Plugins/PDF/PDFPluginPasswordField.mm:
* WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:
* WebProcess/Plugins/Plugin.cpp:
* WebProcess/Plugins/PluginProcessConnection.cpp:
* WebProcess/Plugins/PluginProxy.cpp:
* WebProcess/Plugins/PluginView.cpp:
* WebProcess/Plugins/WebPluginInfoProvider.cpp:
* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
* WebProcess/Storage/WebSWClientConnection.cpp:
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
* WebProcess/Storage/WebSWOriginTable.cpp:
* WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
* WebProcess/Storage/WebServiceWorkerProvider.cpp:
* WebProcess/Storage/WebToStorageProcessConnection.cpp:
* WebProcess/UserContent/WebUserContentController.cpp:
* WebProcess/WebConnectionToUIProcess.cpp:
* WebProcess/WebCoreSupport/SessionStateConversion.cpp:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
* WebProcess/WebCoreSupport/WebColorChooser.cpp:
* WebProcess/WebCoreSupport/WebContextMenuClient.cpp:
* WebProcess/WebCoreSupport/WebDataListSuggestionPicker.cpp:
* WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.cpp:
* WebProcess/WebCoreSupport/WebDragClient.cpp:
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
* WebProcess/WebCoreSupport/WebGeolocationClient.cpp:
* WebProcess/WebCoreSupport/WebInspectorClient.cpp:
* WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp:
* WebProcess/WebCoreSupport/WebNotificationClient.cpp:
* WebProcess/WebCoreSupport/WebPerformanceLoggingClient.cpp:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
* WebProcess/WebCoreSupport/WebPopupMenu.cpp:
* WebProcess/WebCoreSupport/WebProgressTrackerClient.cpp:
* WebProcess/WebCoreSupport/WebSearchPopupMenu.cpp:
* WebProcess/WebCoreSupport/WebUserMediaClient.cpp:
* WebProcess/WebCoreSupport/WebValidationMessageClient.cpp:
* WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
* WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
* WebProcess/WebCoreSupport/ios/WebFrameLoaderClientIOS.mm:
* WebProcess/WebCoreSupport/mac/WebAlternativeTextClient.cpp:
* WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
* WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
* WebProcess/WebCoreSupport/mac/WebPopupMenuMac.mm:
* WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
* WebProcess/WebCoreSupport/win/WebContextMenuClientWin.cpp:
* WebProcess/WebCoreSupport/win/WebPopupMenuWin.cpp:
* WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp:
* WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
* WebProcess/WebPage/DrawingArea.cpp:
* WebProcess/WebPage/EventDispatcher.cpp:
* WebProcess/WebPage/FindController.cpp:
* WebProcess/WebPage/LayerTreeHost.cpp:
* WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.cpp:
* WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
* WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:
* WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteTiledBacking.cpp:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
* WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm:
* WebProcess/WebPage/RemoteWebInspectorUI.cpp:
* WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
* WebProcess/WebPage/VisitedLinkTableController.cpp:
* WebProcess/WebPage/WebBackForwardListProxy.cpp:
* WebProcess/WebPage/WebContextMenu.cpp:
* WebProcess/WebPage/WebDocumentLoader.cpp:
* WebProcess/WebPage/WebFrame.cpp:
* WebProcess/WebPage/WebInspector.cpp:
* WebProcess/WebPage/WebInspectorUI.cpp:
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebPage/WebPageOverlay.cpp:
* WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:
* WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
* WebProcess/WebPage/ios/FindControllerIOS.mm:
* WebProcess/WebPage/ios/WebPageIOS.mm:
* WebProcess/WebPage/mac/DrawingAreaMac.cpp:
* WebProcess/WebPage/mac/PageBannerMac.mm:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
* WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
* WebProcess/WebPage/mac/WebPageMac.mm:
* WebProcess/WebPage/win/WebPageWin.cpp:
* WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp:
* WebProcess/WebPage/wpe/WebPageWPE.cpp:
* WebProcess/WebProcess.cpp:
* WebProcess/WebStorage/StorageAreaImpl.cpp:
* WebProcess/WebStorage/StorageAreaMap.cpp:
* WebProcess/WebStorage/StorageNamespaceImpl.cpp:
* WebProcess/WebStorage/WebStorageNamespaceProvider.cpp:
* WebProcess/cocoa/PlaybackSessionManager.mm:
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
* WebProcess/cocoa/VideoFullscreenManager.mm:
* WebProcess/cocoa/WebProcessCocoa.mm:
* WebProcess/win/WebProcessMainWin.cpp:
* WebProcess/win/WebProcessWin.cpp:
* WebProcess/wpe/WebProcessMainWPE.cpp:

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

13 months agoCleanup: Add type alias for spell document tag
dbates@webkit.org [Wed, 22 Aug 2018 16:46:22 +0000 (16:46 +0000)]
Cleanup: Add type alias for spell document tag
https://bugs.webkit.org/show_bug.cgi?id=188817

Reviewed by Simon Fraser.

* UIProcess/TextChecker.h:
* UIProcess/TextCheckerCompletion.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::~WebPageProxy):
(WebKit::WebPageProxy::spellDocumentTag):
* UIProcess/WebPageProxy.h: Also addressed FIXME comment and modernized the code to use a std::optional
while I am here.
* UIProcess/gtk/TextCheckerGtk.cpp:
(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):
(WebKit::TextChecker::checkTextOfParagraph):
* UIProcess/ios/TextCheckerIOS.mm:
(WebKit::spellDocumentTagMap):
(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::textCheckerFor):
(WebKit::TextChecker::checkTextOfParagraph):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):
* UIProcess/mac/TextCheckerMac.mm:
(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::TextChecker::checkTextOfParagraph):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):
* UIProcess/win/TextCheckerWin.cpp:
(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):
(WebKit::TextChecker::checkTextOfParagraph):
* UIProcess/wpe/TextCheckerWPE.cpp:
(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):

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

13 months agoFetch: Stop checking Request.integrity's value in no-cors mode
commit-queue@webkit.org [Wed, 22 Aug 2018 16:24:39 +0000 (16:24 +0000)]
Fetch: Stop checking Request.integrity's value in no-cors mode
https://bugs.webkit.org/show_bug.cgi?id=188802

Patch by Rob Buis <rbuis@igalia.com> on 2018-08-22
Reviewed by Frédéric Wang.

LayoutTests/imported/w3c:

Update integrity.html expected result.

* web-platform-tests/fetch/api/basic/integrity-expected.txt:

Source/WebCore:

Remove this check since it was removed from the spec.

Behavior matches Chrome and Firefox.

Test: http/tests/subresource-integrity/sri-fetch.js:

* Modules/fetch/FetchRequest.cpp:
(WebCore::FetchRequest::initializeOptions):

LayoutTests:

Unskip fetch/api/basic/integrity.html and adjust sri-fetch.js.

* TestExpectations:
* http/tests/subresource-integrity/sri-fetch.js:

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

13 months agoMark MediaStream Recording API as under consideration
youenn@apple.com [Wed, 22 Aug 2018 15:59:06 +0000 (15:59 +0000)]
Mark MediaStream Recording API as under consideration
https://bugs.webkit.org/show_bug.cgi?id=188822

Reviewed by Jon Lee.

* features.json:

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

13 months ago[GTK][WPE] Unreviewed test gardening
Ms2ger@igalia.com [Wed, 22 Aug 2018 15:21:16 +0000 (15:21 +0000)]
[GTK][WPE] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=188845

Unreviewed test gardening.

* platform/gtk/TestExpectations: Note failing tests.
* platform/wpe/TestExpectations: Note failing tests.

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

13 months ago[GTK] Never return an uninitialized ImageGStreamer object.
Ms2ger@igalia.com [Wed, 22 Aug 2018 14:47:03 +0000 (14:47 +0000)]
[GTK] Never return an uninitialized ImageGStreamer object.
https://bugs.webkit.org/show_bug.cgi?id=188305

Reviewed by Philippe Normand.

The single caller was already checking for a null return value, so
make that check actually do something. Also remove the null-check on
the return value of image(), which asserted that it would never return
null.

Test: fast/canvas/canvas-createPattern-video-loading.html

* platform/graphics/gstreamer/ImageGStreamer.h:
(WebCore::ImageGStreamer::createImage): Return null if m_image wasn't created.
(WebCore::ImageGStreamer::image): Return a reference.
(WebCore::ImageGStreamer::rect): Always assert that m_image is present.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::paint): Update for new signature.

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

13 months agoAdd changes missing from r234925.
zalan@apple.com [Wed, 22 Aug 2018 14:27:43 +0000 (14:27 +0000)]
Add changes missing from r234925.

* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::isMarginTopCollapsedWithParent):
(WebCore::Layout::isMarginBottomCollapsedThrough):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::isMarginBottomCollapsedWithParent):

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

13 months agoUse OptionSet for NetworkCache::Storage::TraverseFlags
antti@apple.com [Wed, 22 Aug 2018 14:19:48 +0000 (14:19 +0000)]
Use OptionSet for NetworkCache::Storage::TraverseFlags
https://bugs.webkit.org/show_bug.cgi?id=188837

Reviewed by Anders Carlsson.

Type safe flags.

* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::initializeSize):
(WebKit::CacheStorage::Caches::readRecordsList):
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::traverse):
(WebKit::NetworkCache::Cache::dumpContentsToFile):
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::TraverseOperation::TraverseOperation):
(WebKit::NetworkCache::Storage::traverse):
* NetworkProcess/cache/NetworkCacheStorage.h:
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::captureDevicesChanged):
(WebKit::UserMediaPermissionRequestManager::activityStateDidChange):

Also use OptionSet<>::containsAll() in a few places.

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

13 months ago[GTK] imported/w3c/web-platform-tests/media-source/mediasource-getvideoplaybackqualit...
Ms2ger@igalia.com [Wed, 22 Aug 2018 14:13:29 +0000 (14:13 +0000)]
[GTK] imported/w3c/web-platform-tests/media-source/mediasource-getvideoplaybackquality.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=187591

Unreviewed test gardening.

Re-enable mediasource-getvideoplaybackquality.html.

The crash was fixed in r233981, and the failure in r234981-r234983.

* platform/gtk/TestExpectations:

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

13 months agoREGRESSION(r234330): [GTK] svg/as-image/svg-image-with-data-uri-background.html is...
Ms2ger@igalia.com [Wed, 22 Aug 2018 12:47:09 +0000 (12:47 +0000)]
REGRESSION(r234330): [GTK] svg/as-image/svg-image-with-data-uri-background.html is failing
https://bugs.webkit.org/show_bug.cgi?id=188220

Unreviewed test gardening.

* platform/gtk/TestExpectations: Re-enable svg/as-image/svg-image-with-data-uri-background.html.

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

13 months ago[WPE] pkg-config files should require libwpe
carlosgc@webkit.org [Wed, 22 Aug 2018 12:29:52 +0000 (12:29 +0000)]
[WPE] pkg-config files should require libwpe
https://bugs.webkit.org/show_bug.cgi?id=188835

Reviewed by Žan Doberšek.

* wpe/wpe-web-extension.pc.in:
* wpe/wpe-webkit.pc.in:

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

13 months ago[CoordGraphics] Switch to Nicosia::CompositionLayer state tracking
zandobersek@gmail.com [Wed, 22 Aug 2018 12:14:14 +0000 (12:14 +0000)]
[CoordGraphics] Switch to Nicosia::CompositionLayer state tracking
https://bugs.webkit.org/show_bug.cgi?id=188693

Reviewed by Carlos Garcia Campos.

.:

* Source/cmake/OptionsGTK.cmake: Enable USE_NICOSIA alongside
USE_COORDINATED_GRAPHICS and USE_COORDINATED_GRAPHICS_THREADED.
* Source/cmake/OptionsWPE.cmake: Ditto.

Source/WebCore:

Populate Nicosia::CompositionLayer with additional LayerState member
objects. For now we're using pending, staging and committed states,
though it might be possible to narrow down these to just two.

Pending state contains state that will be moved to staging during the
final steps of the next layer flush. flushState() method accumulates all
state changes in the staging state, and also allows the caller to
additionally perform flushing operations that are specific to backing
store, image backing or content layer containers.

commitState() method moves staging state over into the committed state,
again allowing user to pass a functor that receives the just-committed
state and apply it to their composition engine.

Changes in state objects are done under a thread-safe lock. This might
not be completely necessary at this point, but will be useful when
additonal layer state updates will be coming from e.g. the scrolling
thread. It might also make sense to tie in this lock use with the
Nicosia::Scene lock in the future.

Nicosia::ContentLayerTextureMapperImpl is modified slightly to allow
determining during flushes whether an update is pending. This is
necessary for a special case in ThreadedCompositor where content (i.e.
platform) layers like WebGL or video require an additional level of
scene update coordination. This complete special case has to go through
another review to see whether it's still necessary. Ideally we would be
able to remove it.

CoordinatedGraphicsLayer is finally switched over to using
Nicosia layer objects for state updates of any kind. This patch only
adds all the necessary bits, but doesn't yet remove any of the existing
code (but rather disables it temporarily, before it's removed).

Updating of simple state values is already in place. For backing stores,
the flushCompositingStateForThisLayerOnly() method now takes care of
preparing the backing store object if necessary as per layer state,
while the updateContentBuffers() method is switched to operate with
TiledBackingStore objects now kept on the BackingStoreTextureMapperImpl
instance associated with that backing store. Helper methods like
adjustContentsScale() and createBackingStore(), only called from the
updateContentBuffers() method, are removed and the code there inlined.

For image-backed layers, the update is now done directly in
the flushCompositingStateForThisLayerOnly() method, if necessary. The
helper syncImageBacking() method is commented out in order to prevent
double-painting of image buffers for now, but all this (along with the
CoordinatedImageBacking logic in CompositingCoordinator) will be removed
later.

For layers backed by platform layer objects, integration is relatively
simple. setContentsToPlatformLayer() is changed to properly handle any
passed-in platform layer object, and updatePlatformLayer() invokes the
swapBuffersIfNeeded() method on the ContentLayerTextureMapperImpl object
during each flush, if necessary.

In order to ensure any Nicosia-specific state update properly triggers
a composition update, m_nicosia.performLayerUpdate is added and flipped
to true during the flush in case of any state change. This then triggers
a layer sync in the CompositingCoordinator object when the
syncPendingStateChangesIncludingSubLayers() method is called. While no
old-style layer state update is provided, it causes the necessary
synchronization step that properly picks up the Nicosia-provided state
changes. Once the old-style layer state tracking is removed, this method
of update triggering will have to be updated as well.

* platform/graphics/nicosia/NicosiaPlatformLayer.h:
(Nicosia::CompositionLayer::flushState):
(Nicosia::CompositionLayer::commitState):
(Nicosia::CompositionLayer::accessCommitted):
* platform/graphics/nicosia/NicosiaScene.h:
* platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.cpp:
(Nicosia::ContentLayerTextureMapperImpl::flushUpdate):
* platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:
(WebCore::CoordinatedGraphicsLayer::~CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::setContentsNeedsDisplay):
(WebCore::CoordinatedGraphicsLayer::setContentsToPlatformLayer):
(WebCore::CoordinatedGraphicsLayer::updatePlatformLayer):
(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):
(WebCore::CoordinatedGraphicsLayer::syncPendingStateChangesIncludingSubLayers):
(WebCore::CoordinatedGraphicsLayer::updateContentBuffers):
(WebCore::CoordinatedGraphicsLayer::purgeBackingStores):
(WebCore::CoordinatedGraphicsLayer::adjustContentsScale): Deleted.
(WebCore::CoordinatedGraphicsLayer::createBackingStore): Deleted.
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:

Source/WebKit:

Switch CoordinatedGraphicsScene to utilizing Nicosia::CompositionLayer
objects for state updates of the TextureMapper layer tree.

CoordinatedGraphicsScene::paintToCurrentGLContext() now calls
updateSceneState() at the beginning. This is a new method that manages
all updates for a given Nicosia::Scene instance. Any removed layers
have their composition-side state cleaned up, and the current set of
layers is then iterated to ensure and update the corresponding
TextureMapperLayer objects.

Layers with any backing (painted backing store, platform-layer or image
content) are temporarly stored for updating outside of mutex-controlled
scene update. Performing all other state updates outside of this mutex
area will be investigated at a later point.

We then iterate over vectors for each layer backing, gathering any
affected CoordinatedBackingStore or TextureMapperPlatformLayerProxy
objects that we have to update.

This drops a bunch of member variables and helper methods off the
CoordinatedGraphicsScene class. The applyStateChanges() method will be
further simplified in the future. coordinateUpdateCompletionWithClient
logic in ThreadedCompositor should be checked to see whether it still
addresses any real-life problem, because at the moment it imposes a few
additional operations in terms of scene updates that we could really do
without. This will be checked later and removed if possible.

* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:
(WebKit::CoordinatedGraphicsScene::applyStateChanges):
(WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext):
(WebKit::compositionLayerImpl):
(WebKit::contentLayerImpl):
(WebKit::backingStoreImpl):
(WebKit::imageBackingImpl):
(WebKit::texmapLayer):
(WebKit::updateBackingStore):
(WebKit::updateImageBacking):
(WebKit::removeLayer):
(WebKit::CoordinatedGraphicsScene::commitSceneState):
(WebKit::CoordinatedGraphicsScene::updateSceneState):
(WebKit::CoordinatedGraphicsScene::purgeGLResources):
(WebKit::CoordinatedGraphicsScene::syncPlatformLayerIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::setLayerChildrenIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::setLayerFiltersIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::setLayerState): Deleted.
(WebKit::CoordinatedGraphicsScene::getLayerByIDIfExists): Deleted.
(WebKit::CoordinatedGraphicsScene::createLayers): Deleted.
(WebKit::CoordinatedGraphicsScene::createLayer): Deleted.
(WebKit::CoordinatedGraphicsScene::deleteLayers): Deleted.
(WebKit::CoordinatedGraphicsScene::deleteLayer): Deleted.
(WebKit::CoordinatedGraphicsScene::setRootLayerID): Deleted.
(WebKit::CoordinatedGraphicsScene::prepareContentBackingStore): Deleted.
(WebKit::CoordinatedGraphicsScene::createBackingStoreIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::removeBackingStoreIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::resetBackingStoreSizeToLayerSize): Deleted.
(WebKit::CoordinatedGraphicsScene::createTilesIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::removeTilesIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::updateTilesIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::syncImageBackings): Deleted.
(WebKit::CoordinatedGraphicsScene::createImageBacking): Deleted.
(WebKit::CoordinatedGraphicsScene::updateImageBacking): Deleted.
(WebKit::CoordinatedGraphicsScene::clearImageBackingContents): Deleted.
(WebKit::CoordinatedGraphicsScene::removeImageBacking): Deleted.
(WebKit::CoordinatedGraphicsScene::assignImageBackingToLayer): Deleted.
(WebKit::CoordinatedGraphicsScene::setLayerAnimationsIfNeeded): Deleted.
* Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
(WebKit::CoordinatedGraphicsScene::layerByID): Deleted.
* Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:
(WebKit::ThreadedCompositor::renderLayerTree):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::flushPendingLayerChanges):

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

13 months agoRemove stale file references in WebCore Xcode project
ddkilzer@apple.com [Wed, 22 Aug 2018 10:37:12 +0000 (10:37 +0000)]
Remove stale file references in WebCore Xcode project

I manually removed these using Xcode and verified that there was
a commit that removed the original files.

Found by tool created for Bug 188754: Tool to fix folders that
should map to directories in Xcode project files.

* WebCore.xcodeproj/project.pbxproj:
(dom/DOMExceptions.in): Removed in r219741.
(Modules/modern-media-controls/start-button.js):
(Modules/modern-media-controls/volume-slider.css):
(Modules/modern-media-controls/icon-button.css):
(Modules/modern-media-controls/volume-slider.js):
(Modules/modern-media-controls/macos-media-controls.js):
(Modules/modern-media-controls/ios-inline-media-controls.css):
(Modules/modern-media-controls/scrubber.css):
(Modules/modern-media-controls/start-button.css):
(Modules/modern-media-controls/scrubber.js):
(Modules/modern-media-controls/icon-button.js):
(Modules/modern-media-controls/macos-compact-inline-media-controls.css):
(Modules/modern-media-controls/images/iOS/enter-fullscreen@2x.png):
(Modules/modern-media-controls/images/iOS/start@1x.png):
(Modules/modern-media-controls/images/iOS/enter-fullscreen@1x.png):
(Modules/modern-media-controls/images/iOS/pause@2x.png):
(Modules/modern-media-controls/images/iOS/play@3x.png):
(Modules/modern-media-controls/images/iOS/interval-skip-back@2x.png):
(Modules/modern-media-controls/images/iOS/interval-skip-back@3x.png):
(Modules/modern-media-controls/images/iOS/pip-in@2x.png):
(Modules/modern-media-controls/images/iOS/start@3x.png):
(Modules/modern-media-controls/images/iOS/airplay@1x.png):
(Modules/modern-media-controls/images/iOS/enter-fullscreen@3x.png):
(Modules/modern-media-controls/images/iOS/slider-thumb@2x.png):
(Modules/modern-media-controls/images/iOS/airplay@2x.png):
(Modules/modern-media-controls/images/iOS/pause@3x.png):
(Modules/modern-media-controls/images/iOS/pip-in@3x.png):
(Modules/modern-media-controls/images/iOS/interval-skip-back@1x.png):
(Modules/modern-media-controls/images/iOS/pause@1x.png):
(Modules/modern-media-controls/images/iOS/start@2x.png):
(Modules/modern-media-controls/images/iOS/play@2x.png):
(Modules/modern-media-controls/images/iOS/pip-in@1x.png):
(Modules/modern-media-controls/images/iOS/play@1x.png):
(Modules/modern-media-controls/images/macOS/enter-fullscreen-compact@1x.png):
(Modules/modern-media-controls/images/macOS/rewind@1x.png):
(Modules/modern-media-controls/images/macOS/play@2x.png):
(Modules/modern-media-controls/images/macOS/volume-mute@2x.png):
(Modules/modern-media-controls/images/macOS/airplay-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/volume@2x.png):
(Modules/modern-media-controls/images/macOS/interval-skip-back@2x.png):
(Modules/modern-media-controls/images/macOS/volume-compact@2x.png):
(Modules/modern-media-controls/images/macOS/start@2x.png):
(Modules/modern-media-controls/images/macOS/exit-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/airplay@2x.png):
(Modules/modern-media-controls/images/macOS/media-selection-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/interval-skip-back@1x.png):
(Modules/modern-media-controls/images/macOS/airplay@1x.png):
(Modules/modern-media-controls/images/macOS/pip-in@1x.png):
(Modules/modern-media-controls/images/macOS/scale-to-fill@2x.png):
(Modules/modern-media-controls/images/macOS/rewind@2x.png):
(Modules/modern-media-controls/images/macOS/play-compact@1x.png):
(Modules/modern-media-controls/images/macOS/media-selection-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/pip-in-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/volume@1x.png):
(Modules/modern-media-controls/images/macOS/pip-in@2x.png):
(Modules/modern-media-controls/images/macOS/play-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/volume-down-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/pause-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/enter-fullscreen-compact@2x.png):
(Modules/modern-media-controls/images/macOS/enter-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/pause-compact@1x.png):
(Modules/modern-media-controls/images/macOS/start@1x.png):
(Modules/modern-media-controls/images/macOS/pip-in-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/pause-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/play@1x.png):
(Modules/modern-media-controls/images/macOS/exit-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/forward@1x.png):
(Modules/modern-media-controls/images/macOS/enter-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/pause@1x.png):
(Modules/modern-media-controls/images/macOS/scale-to-fit@2x.png):
(Modules/modern-media-controls/images/macOS/interval-skip-back-compact@2x.png):
(Modules/modern-media-controls/images/macOS/pause@2x.png):
(Modules/modern-media-controls/images/macOS/volume-up-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/volume-compact@1x.png):
(Modules/modern-media-controls/images/macOS/play-compact@2x.png):
(Modules/modern-media-controls/images/macOS/media-selection@2x.png):
(Modules/modern-media-controls/images/macOS/forward@2x.png):
(Modules/modern-media-controls/images/macOS/interval-skip-back-compact@1x.png):
(Modules/modern-media-controls/images/macOS/scale-to-fill@1x.png):
(Modules/modern-media-controls/images/macOS/airplay-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/media-selection@1x.png):
(Modules/modern-media-controls/images/macOS/volume-mute@1x.png):
(Modules/modern-media-controls/images/macOS/pause-compact@2x.png):
(Modules/modern-media-controls/images/macOS/volume-up-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/scale-to-fit@1x.png):
(Modules/modern-media-controls/images/macOS/play-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/volume-down-fullscreen@2x.png):
(Modules/modern-media-controls/media/time-labels-support.js):
- Removed in r217823.
(Modules/webvr/VRDisplayCapabilities.cpp): Removed in r229089.
(Modules/webvr/VRFieldOfView.cpp): Removed in r228819.
(rendering/svg/RenderSVGAllInOne.cpp): Removed in r234655.

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

13 months agoUnreviewed. Do not include TreeOutlineDataGridSynchronizer.js in inspector main.
carlosgc@webkit.org [Wed, 22 Aug 2018 07:13:03 +0000 (07:13 +0000)]
Unreviewed. Do not include TreeOutlineDataGridSynchronizer.js in inspector main.

The script was removed in r235151.

* UserInterface/Main.html:

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

13 months agoDo not try to update the compositing policy when not in accelerated compositing mode
carlosgc@webkit.org [Wed, 22 Aug 2018 07:01:16 +0000 (07:01 +0000)]
Do not try to update the compositing policy when not in accelerated compositing mode
https://bugs.webkit.org/show_bug.cgi?id=188787

Reviewed by Simon Fraser.

RenderLayerCompositor::updateCompositingPolicy() is called very often (called from
RenderLayerCompositor::cacheAcceleratedCompositingFlags()) and it uses WTF::memoryFootprint() to decide the
current compositing policy. Getting the memory footprint is an expensive operation in Linux (and I suspect other
non-cocoa ports too), causing an excessive CPU usage. This caused the WPE and GTK+ unit test
/webkit/WebKitWebContext/uri-scheme to start timing out in the bots, because the test expects things to happen
fast and that's no longer the case. We could reduce the CPU usage a lot by not trying to update the policy when
not in accelerated compositing mode. We will need a solution for the accelerated compositing mode, though.

Fixes WPE/GTK+ unit test /webkit/WebKitWebContext/uri-scheme.

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateCompositingPolicy): Return early when not in accelerated compositing mode.

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

13 months ago[JSC] HeapUtil should care about pointer overflow
yusukesuzuki@slowstart.org [Wed, 22 Aug 2018 05:05:08 +0000 (05:05 +0000)]
[JSC] HeapUtil should care about pointer overflow
https://bugs.webkit.org/show_bug.cgi?id=188740

Reviewed by Saam Barati.

`pointer - sizeof(IndexingHeader) - 1` causes an undefined behavior if a pointer overflows.
For example, if `pointer` is nullptr, it causes pointer overflow. Instead of calculating this
with `char*` pointer, we cast it to `uintptr_t` temporarily. This issue is found by UBSan.

* heap/HeapUtil.h:
(JSC::HeapUtil::findGCObjectPointersForMarking):

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

13 months ago[JSC] Should not rotate constant with 64
yusukesuzuki@slowstart.org [Wed, 22 Aug 2018 05:02:56 +0000 (05:02 +0000)]
[JSC] Should not rotate constant with 64
https://bugs.webkit.org/show_bug.cgi?id=188556

Reviewed by Saam Barati.

To defend against JIT splaying, we rotate a constant with a randomly generated seed.
But if a seed becomes 64 or 0, the following code performs `value << 64` or `value >> 64`
where value's type is uint64_t, and they cause undefined behaviors (UBs). This patch limits
the seed in the range of [1, 63] not to generate code causing UBs. This is found by UBSan.

* assembler/MacroAssembler.h:
(JSC::MacroAssembler::generateRotationSeed):
(JSC::MacroAssembler::rotationBlindConstant):

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

13 months agoSupport "name" option for dedicated workers
yusukesuzuki@slowstart.org [Wed, 22 Aug 2018 04:58:26 +0000 (04:58 +0000)]
Support "name" option for dedicated workers
https://bugs.webkit.org/show_bug.cgi?id=188779

Reviewed by Joseph Pecoraro.

LayoutTests/imported/w3c:

* web-platform-tests/workers/interfaces.worker-expected.txt:
* web-platform-tests/workers/name-property-expected.txt:

Source/WebCore:

This patch adds `new Worker(url, { name: "Worker Name" })` option support[1].
This name can be accessible from `self.name` of DedicatedWorkerGlobalScope.
It is useful for debugging dedicated workers if the inspector can show the
names of the workers. This enhancement is tracked by [2].

[1]: https://github.com/whatwg/html/issues/2477
[2]: https://bugs.webkit.org/show_bug.cgi?id=164678

Tests: http/wpt/workers/name-property-enhanced.html
       http/wpt/workers/name-property-no-name.html

* workers/DedicatedWorkerGlobalScope.cpp:
(WebCore::DedicatedWorkerGlobalScope::create):
(WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):
Hold `name` member.

* workers/DedicatedWorkerGlobalScope.h:
* workers/DedicatedWorkerGlobalScope.idl:
Add `name` attribute.

* workers/DedicatedWorkerThread.cpp:
(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
(WebCore::DedicatedWorkerThread::createWorkerGlobalScope):
* workers/DedicatedWorkerThread.h:
* workers/Worker.cpp:
(WebCore::Worker::Worker):
(WebCore::Worker::create):
(WebCore::Worker::notifyFinished):
* workers/Worker.h:
* workers/Worker.idl:
Add WorkerOptions for dedicated worker creation.

* workers/WorkerGlobalScopeProxy.h:
* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):
* workers/WorkerMessagingProxy.h:
* workers/WorkerThread.cpp:
(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
Isolate copy the given `name` to pass the worker thread.

(WebCore::WorkerThread::WorkerThread):
(WebCore::WorkerThread::workerThread):
* workers/WorkerThread.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::ServiceWorkerThread):
(WebCore::ServiceWorkerThread::createWorkerGlobalScope):
* workers/service/context/ServiceWorkerThread.h:

LayoutTests:

* http/wpt/workers/name-property-enhanced-expected.txt: Added.
* http/wpt/workers/name-property-enhanced.html: Added.
* http/wpt/workers/name-property-no-name-expected.txt: Added.
* http/wpt/workers/name-property-no-name.html: Added.
* http/wpt/workers/support/name.js: Added.
(test):
* http/wpt/workers/support/no-name.js: Added.
(test):

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

13 months agoReplace booleans for modifier keys in UIEventWithKeyState with OptionSet<Modifier>
rniwa@webkit.org [Wed, 22 Aug 2018 04:41:06 +0000 (04:41 +0000)]
Replace booleans for modifier keys in UIEventWithKeyState with OptionSet<Modifier>
https://bugs.webkit.org/show_bug.cgi?id=188777

Reviewed by Simon Fraser.

Source/WebCore:

Replaced boolean arguments and instance variables for modifier keys (ctrl, alt, shift, and meta keys) in
UIEventWithKeyState with OptionSet<Modifier> and isSimulated boolean in MouseRelatedEvent with IsSimulated
enum class.

Also made movementDelta always compiled instead of only when ENABLE(POINTER_LOCK) to simplify the code.

No new tests since there should be no observable behavioral change.

* dom/Element.cpp:
(WebCore::Element::dispatchMouseEvent):
* dom/KeyboardEvent.cpp:
(WebCore::KeyboardEvent::KeyboardEvent):
(WebCore::KeyboardEvent::initKeyboardEvent): Call setModifierKeys.
* dom/MouseEvent.cpp:
(WebCore::MouseEvent::create):
(WebCore::MouseEvent::MouseEvent):
(WebCore::MouseEvent::initMouseEvent): Ditto.
* dom/MouseEvent.h:
* dom/MouseRelatedEvent.cpp:
(WebCore::MouseRelatedEvent::MouseRelatedEvent): Added a new variant which takes the minimum arguments
for gesture & touch events. In those events, detail is always set to 0, movementDelta is always set to 0,0,
and they are never simulated.
* dom/MouseRelatedEvent.h:
(WebCore::MouseRelatedEvent::IsSimulated): Added.
* dom/SimulatedClick.cpp:
(WebCore::SimulatedMouseEvent::SimulatedMouseEvent): Get OptionSet<Modifier> out of the underlying event
instead of manually setting each key state. This code now preserves the state of caps lock and alt-graph
keys but this is not observable because we have yet to implement getModifierState on MouseEvent.
(WebCore::SimulatedMouseEvent::modifiersFromUnderlyingEvent): Added.
* dom/TouchEvent.cpp:
(WebCore::TouchEvent::TouchEvent):
* dom/TouchEvent.h:
* dom/UIEventWithKeyState.h:
(WebCore::UIEventWithKeyState::Modifier): Alias to PlatformEvent::Modifier.
(WebCore::UIEventWithKeyState::ctrlKey const): Updated to use m_modifiers.
(WebCore::UIEventWithKeyState::shiftKey const): Ditto.
(WebCore::UIEventWithKeyState::altKey const): Ditto.
(WebCore::UIEventWithKeyState::metaKey const): Ditto.
(WebCore::UIEventWithKeyState::altGraphKey const): Ditto.
(WebCore::UIEventWithKeyState::capsLockKey const): Ditto.
(WebCore::UIEventWithKeyState::modifierKeys): Added.
(WebCore::UIEventWithKeyState::UIEventWithKeyState): Now takes OptionSet<Modifier>.
(WebCore::UIEventWithKeyState::setModifierKeys): Added. Used by init*Event functions in subclasses. Note that
these functions preseve the states of alt-graph and caps lock keys to match the existing behaviors in this
cleanup patch but they don't match behaviors of Chrome or Firefox.
(WebCore::UIEventWithKeyState::modifiersFromInitializer): Added.
* dom/WheelEvent.cpp:
(WebCore::WheelEvent::WheelEvent): Simulated::No corresponds to the last boolean being false.
* page/EventHandler.cpp:
(WebCore::EventHandler::dispatchDragEvent):
(WebCore::EventHandler::handleTouchEvent):
* platform/PlatformEvent.h:
(WebCore::PlatformEvent::Modifier): Added AltGraphKey.
* platform/mac/PlatformEventFactoryMac.h:
(WebCore::modifiersForEvent): Exported to be used in [WebPDFView PDFViewWillClickOnLink:withURL:].
* platform/mac/PlatformEventFactoryMac.mm:
(WebCore::modifiersForEvent):
* testing/Internals.cpp:
(WebCore::Internals::accessKeyModifiers const):

Source/WebKit:

Added two FIXMEs.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::navigateToPDFLinkWithSimulatedClick):

Source/WebKitLegacy/ios:

Create MouseEvent::create with IsSimulated set to Yes; correspoding to the last argument
being "true" before the code change.

* WebView/WebPDFViewPlaceholder.mm:
(-[WebPDFViewPlaceholder simulateClickOnLinkToURL:]):

Source/WebKitLegacy/mac:

Create MouseEvent::create with IsSimulated set to Yes; correspoding to the last argument
being "true" before the code change.

Use modifiersForEvent to convert [nsEvent modifierFlags] to OptionSet<Modifier>.

* WebView/WebPDFView.mm:
(-[WebPDFView PDFViewWillClickOnLink:withURL:]):

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

13 months agoRoll out r235139 and r235146
achristensen@apple.com [Wed, 22 Aug 2018 03:51:52 +0000 (03:51 +0000)]
Roll out r235139 and r235146
https://bugs.webkit.org/show_bug.cgi?id=188805

Source/WebKit:

It turns out shouldKeepCurrentBackForwardListItemInList has one use left.

* UIProcess/API/APILoaderClient.h:
(API::LoaderClient::shouldKeepCurrentBackForwardListItemInList):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageLoaderClient):
* UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::addItem):
(WebKit::WebBackForwardList::goToItem):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::shouldKeepCurrentBackForwardListItemInList):
* UIProcess/WebPageProxy.h:

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit/ShouldKeepCurrentBackForwardListItemInList.cpp:

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

13 months ago[Attachment Support] Remove _WKAttachments and notify the UI client upon mainframe...
wenson_hsieh@apple.com [Wed, 22 Aug 2018 03:21:56 +0000 (03:21 +0000)]
[Attachment Support] Remove _WKAttachments and notify the UI client upon mainframe navigation
https://bugs.webkit.org/show_bug.cgi?id=188715
<rdar://problem/43541790>

Reviewed by Tim Horton.

Source/WebCore:

Rename didInsertAttachment to didInsertAttachmentWithIdentifier. See WebKit ChangeLog for more detail.

Tests:  WKAttachmentTests.InvalidateAttachmentsAfterMainFrameNavigation
        WKAttachmentTests.InvalidateAttachmentsAfterWebProcessTermination

* editing/Editor.cpp:
(WebCore::Editor::notifyClientOfAttachmentUpdates):
* page/EditorClient.h:
(WebCore::EditorClient::didInsertAttachmentWithIdentifier):
(WebCore::EditorClient::didRemoveAttachmentWithIdentifier):
(WebCore::EditorClient::didInsertAttachment): Deleted.
(WebCore::EditorClient::didRemoveAttachment): Deleted.

Source/WebKit:

Adds logic for invalidating Attachment objects upon mainframe navigation, or upon web content process
termination. An invalid Attachment's wrapper may still be retained by a UI client; however, calls to -info and
other SPI methods will either return nil or immediately invoke their completion handlers with a nil result and
an NSError. See changes below for more detail.

This patch also takes some extra measures to avoid sending redundant or unexpected removal updates to the UI
client upon invalidating all Attachments.

See Tools changes for new API tests.

* UIProcess/API/APIAttachment.cpp:
(API::Attachment::invalidate):
* UIProcess/API/APIAttachment.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _didInsertAttachment:withSource:]):
(-[WKWebView _didRemoveAttachment:]):

Refactor these methods to take references to the API::Attachment that is being inserted or removed, rather than
take attachment identifiers. This allows us to keep logic for setting the InsertionState of Attachment objects
in WebPageProxy, rather than in platform code.

* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/Cocoa/_WKAttachment.h:
* UIProcess/API/Cocoa/_WKAttachment.mm:
(-[_WKAttachment info]):

If the attachment object is invalid, return nil.

(-[_WKAttachment setDisplayOptions:completion:]):
(-[_WKAttachment setFileWrapper:contentType:completion:]):

If the attachment object is invalid, immediately invoke the completion block with an error.

(-[_WKAttachment isConnected]):

Add a new readonly property for a client to easily determine whether a _WKAttachment is connected to the
document, without having to maintain the current set of connected attachment objects by observing insertion and
removal callbacks.

* UIProcess/Cocoa/PageClientImplCocoa.h:
* UIProcess/Cocoa/PageClientImplCocoa.mm:
(WebKit::PageClientImplCocoa::didInsertAttachment):
(WebKit::PageClientImplCocoa::didRemoveAttachment):

Make these take API::Attachment&s rather than identifier strings.

* UIProcess/PageClient.h:
(WebKit::PageClient::didInsertAttachment):
(WebKit::PageClient::didRemoveAttachment):

Also make these take API::Attachment&s rather than identifier strings.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
(WebKit::WebPageProxy::invalidateAllAttachments):

Introduce a helper function that invalidates all Attachments and notifies the UI client if needed. This is
invoked upon mainframe navigation, and when the web content process terminates.

(WebKit::WebPageProxy::platformRegisterAttachment):
(WebKit::WebPageProxy::didInsertAttachmentWithIdentifier):
(WebKit::WebPageProxy::didRemoveAttachmentWithIdentifier):
(WebKit::WebPageProxy::didInsertAttachment):
(WebKit::WebPageProxy::didRemoveAttachment):

Keep track of whether we've notified the UI client that an Attachment has been inserted into the document. This
allows us to send removal updates to the UI client only for Attachments that are currently in the document, from
the perspective of the UI client, and allows us to avoid sending extra removal updates in
invalidateAllAttachments for Attachments that either have already been removed, or Attachments which we haven't
inserted yet.

* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::didInsertAttachmentWithIdentifier):
(WebKit::WebEditorClient::didRemoveAttachmentWithIdentifier):
(WebKit::WebEditorClient::didInsertAttachment): Deleted.
(WebKit::WebEditorClient::didRemoveAttachment): Deleted.
* WebProcess/WebCoreSupport/WebEditorClient.h:

Rename did{Insert|Remove}Attachment to did{Insert|Remove}AttachmentWithIdentifier.

Tools:

Adds API tests to exercises cases where (1) the UI client is notified of attachment removal upon mainframe
navigation, and (2) the UI client is notified of attachment removal upon web content process termination.

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

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

13 months agoUnreviewed, rolling out r235128.
ryanhaddad@apple.com [Wed, 22 Aug 2018 02:22:41 +0000 (02:22 +0000)]
Unreviewed, rolling out r235128.

The test added with this change is frequently failing.

Reverted changeset:

"Support "name" option for dedicated workers"
https://bugs.webkit.org/show_bug.cgi?id=188779
https://trac.webkit.org/changeset/235128

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

13 months agoUnreviewed macOS Mojave build fix after r235125.
rniwa@webkit.org [Wed, 22 Aug 2018 02:04:00 +0000 (02:04 +0000)]
Unreviewed macOS Mojave build fix after r235125.

* pal/spi/cg/CoreGraphicsSPI.h:

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

13 months agoChange Selection modification to not snap the grabber when selecting above or below...
megan_gardner@apple.com [Wed, 22 Aug 2018 01:41:50 +0000 (01:41 +0000)]
Change Selection modification to not snap the grabber when selecting above or below the selection anchor
https://bugs.webkit.org/show_bug.cgi?id=188826

Reviewed by Tim Horton.

Selecting single lines is sometimes difficult because we currently snap selections to single
characters if we move past the position of the other anchor in our selection. This patch changes
this behaviour to reflect the behaviour in the rest of this system, which snaps the selection
to the position on the line of the other anchor, rather than snapping it all the way a single
Source/WebKit:

character.

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

LayoutTests:

character. This updates the tests to reflect this new behaviour.

* fast/events/touch/ios/long-press-then-drag-down-to-change-selected-text.html:
* fast/events/touch/ios/long-press-then-drag-up-to-change-selected-text.html:

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

13 months agoUnreviewed, rolling out r235107.
commit-queue@webkit.org [Wed, 22 Aug 2018 01:24:52 +0000 (01:24 +0000)]
Unreviewed, rolling out r235107.
https://bugs.webkit.org/show_bug.cgi?id=188832

"It revealed bugs in Blob code as well as regressed JS
performance tests" (Requested by saamyjoon on #webkit).

Reverted changeset:

"JSRunLoopTimer may run part of a member function after it's
destroyed"
https://bugs.webkit.org/show_bug.cgi?id=188426
https://trac.webkit.org/changeset/235107

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

13 months agoWeb Inspector: Remove TreeOutlineDataGridSynchronizer
mattbaker@apple.com [Wed, 22 Aug 2018 01:08:47 +0000 (01:08 +0000)]
Web Inspector: Remove TreeOutlineDataGridSynchronizer
https://bugs.webkit.org/show_bug.cgi?id=188449
<rdar://problem/43107980>

Reviewed by Devin Rousso.

* UserInterface/Views/HeapAllocationsTimelineView.js:
(WI.HeapAllocationsTimelineView.prototype.layout):
* UserInterface/Views/LayoutTimelineView.js:
(WI.LayoutTimelineView.prototype._processPendingRecords):
* UserInterface/Views/NetworkTimelineView.js:
(WI.NetworkTimelineView.prototype._processPendingRecords):
* UserInterface/Views/RenderingFrameTimelineView.js:
(WI.RenderingFrameTimelineView.prototype._processPendingRecords):
(WI.RenderingFrameTimelineView.prototype.dataGridNodeForTreeElement): Deleted.
* UserInterface/Views/ScriptDetailsTimelineView.js:
(WI.ScriptDetailsTimelineView.prototype._processPendingRecords):
* UserInterface/Views/TimelineDataGrid.js:
(WI.TimelineDataGrid):
(WI.TimelineDataGrid.prototype.reset):
(WI.TimelineDataGrid.prototype.shown):
(WI.TimelineDataGrid.prototype.addRowInSortOrder):
(WI.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
(WI.TimelineDataGrid.prototype._sort):
(WI.TimelineDataGrid.prototype.treeElementForDataGridNode): Deleted.
(WI.TimelineDataGrid.prototype.dataGridNodeForTreeElement): Deleted.
* UserInterface/Views/TreeOutlineDataGridSynchronizer.js: Removed.

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

13 months agoCleanup: Remove unused file-local static variable from TextCheckerIOS.mm
dbates@webkit.org [Wed, 22 Aug 2018 00:49:32 +0000 (00:49 +0000)]
Cleanup: Remove unused file-local static variable from TextCheckerIOS.mm
https://bugs.webkit.org/show_bug.cgi?id=188818

Reviewed by Wenson Hsieh.

* UIProcess/ios/TextCheckerIOS.mm:
(WebKit::TextChecker::isSmartInsertDeleteEnabled):

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

13 months ago[iOS][WK2] Misspelled words are not underlined
dbates@webkit.org [Wed, 22 Aug 2018 00:45:55 +0000 (00:45 +0000)]
[iOS][WK2] Misspelled words are not underlined
https://bugs.webkit.org/show_bug.cgi?id=188800
<rdar://problem/34811332>

Reviewed by Wenson Hsieh.

Implement enough of TextChecker for iOS to compute the list of misspelled words in a
paragraph and advertise support for continuous spell checking. The WebCore editing
machinery queries TextChecker for the list of the misspelled words, creating document
markers that demarcate the misspelled words. When we paint a line of text we paint
the spelling correction dots under each misspelled word.

On iOS we make use of UITextChecker to perform spell checking of a string. We maintain
a side table that maps a "spell document tag" to a UITextChecker* to conform to the
shape of the TextChecker interface.

* Platform/spi/ios/UIKitSPI.h: Forward declare some SPI.
* UIProcess/ios/TextCheckerIOS.mm:
(WebKit::mutableState): Added.
(WebKit::TextChecker::state): Turns around and returns mutableState().
(WebKit::TextChecker::isContinuousSpellCheckingAllowed): Returns true if we are building
with USE(UNIFIED_TEXT_CHECKING). Otherwise, do what we do now.
(WebKit::TextChecker::setContinuousSpellCheckingEnabled): Update state.
(WebKit::TextChecker::continuousSpellCheckingEnabledStateChanged): Ditto.
(WebKit::spellDocumentTagMap): Returns HashMap that maps a "spell document tag" (int64_t) to
a RetainPtr<UITextChecker>>.
(WebKit::TextChecker::uniqueSpellDocumentTag): Generates a unique identifier for the page
this text checker is associated with.
(WebKit::TextChecker::closeSpellDocumentWithTag): Removes the entry for the specified identifier
from the HashMap.
(WebKit::textCheckerFor): Query the HashMap for the UITextChecker for the specified spell
document tag, if it exists. Otherwise, create a new UITextChecker and add a new map entry
that associates it with the specified spell document tag.
(WebKit::TextChecker::checkTextOfParagraph): Spell check the specified string and return a list
that represents the misspelled words.
(WebKit::TextChecker::checkSpellingOfString): Added a comment to explain that iOS does not implement
this function and instead implements checkTextOfParagraph().
(WebKit::TextChecker::checkGrammarOfString): Ditto.

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

13 months agoTransition ResizeReversePaginatedWebView API test from WKPageLoaderClient to WKPageNa...
achristensen@apple.com [Tue, 21 Aug 2018 23:59:03 +0000 (23:59 +0000)]
Transition ResizeReversePaginatedWebView API test from WKPageLoaderClient to WKPageNavigationClient
https://bugs.webkit.org/show_bug.cgi?id=188821

Reviewed by Simon Fraser.

Source/WebKit:

Add some more values to WKPageRenderingProgressEvents which were already supported by _WKRenderingProgressEvents and WKLayoutMilestones.

* UIProcess/API/C/WKPageRenderingProgressEvents.h:
* UIProcess/API/C/WKPageRenderingProgressEventsInternal.h:
(pageRenderingProgressEvents):

Tools:

* TestWebKitAPI/Tests/WebKit/ResizeReversePaginatedWebView.cpp:
(TestWebKitAPI::didLayout):
(TestWebKitAPI::TEST):

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

13 months agoWeb Inspector: ⌘G does not while find banner is focused
commit-queue@webkit.org [Tue, 21 Aug 2018 23:58:21 +0000 (23:58 +0000)]
Web Inspector: ⌘G does not while find banner is focused
https://bugs.webkit.org/show_bug.cgi?id=188815
<rdar://problem/43577158>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-08-21
Reviewed by Matt Baker.

* UserInterface/Base/Main.js:
Allow an <input> element to be the current focus element, which is what will
our global KeyboardShortcut handlers will interact with. Also make sure
that showing the find banner for the first time still focuses it.

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

13 months agoFix API tests after r235139
achristensen@apple.com [Tue, 21 Aug 2018 23:50:29 +0000 (23:50 +0000)]
Fix API tests after r235139
https://bugs.webkit.org/show_bug.cgi?id=188805

Apparently the call to didChangeBackForwardList with no changes was observable.  We should rename, but I'm restoring existing behavior for now.

* UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::goToItem):

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

13 months agoStorage Access API: The call to ResourceLoadStatisticsMemoryStore::grantStorageAccess...
wilander@apple.com [Tue, 21 Aug 2018 23:32:32 +0000 (23:32 +0000)]
Storage Access API: The call to ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal() should send eTLD+1s, not full host names
https://bugs.webkit.org/show_bug.cgi?id=188783
<rdar://problem/43559215>

Reviewed by Alex Christensen.

* UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
(WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess):
    Now sends the eTLD+1 for the top frame and sub frame.

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

13 months ago[WHLSL] Call expressions shouldn't have type arguments
mmaxfield@apple.com [Tue, 21 Aug 2018 23:28:35 +0000 (23:28 +0000)]
[WHLSL] Call expressions shouldn't have type arguments
https://bugs.webkit.org/show_bug.cgi?id=188770

Reviewed by Filip Pizlo.

Call expressions only had type arguments for casts, becuase native types can have type arguments.
However, instead of putting those type arguments on the CallExpression, we should parse the casted
type as a real type and not as an identifier, which puts the type arguments in the TypeRef.

Test: casts

* WebGPUShadingLanguageRI/CallExpression.js:
(CallExpression):
(CallExpression.prototype.get name):
(CallExpression.resolve):
(CallExpression.prototype.get typeArguments): Deleted.
(CallExpression.prototype.becomeCast): Deleted.
* WebGPUShadingLanguageRI/NameResolver.js:
(NameResolver.prototype.visitCallExpression):
* WebGPUShadingLanguageRI/Parse.js:
(parseConstexpr):
(parseTypeDef):
(parseLeftOperatorCall):
(parseCallExpression.let.parseArguments):
(parsePossiblePrefix):
(parsePossibleRelationalEquality):
(parseLeftLogicalExpression):
(parseIfStatement):
(parseWhile):
(parseFor):
(parseDo):
* WebGPUShadingLanguageRI/RemoveTypeArguments.js:
* WebGPUShadingLanguageRI/Rewriter.js:
(Rewriter.prototype.visitCallExpression):

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

13 months agoUse VisiblePosition to calculate selection ranges
megan_gardner@apple.com [Tue, 21 Aug 2018 22:41:11 +0000 (22:41 +0000)]
Use VisiblePosition to calculate selection ranges
https://bugs.webkit.org/show_bug.cgi?id=188767
<rdar://problem/43577166>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Exposing comparePositions.

* editing/Editing.h:

Source/WebKit:

Switches to using VisiblePosition, instead of Position. This code used to use VisiblePosiiton,
but it has been changed a lot lately, and using Position causes issues with next and previous
when trying to snap a selection. VisiblePosition gives us the correct information, and does not
result in collapsed ranges.

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

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