WebKit-https.git
10 months agoIntroduce new SPI for context menus on iOS
achristensen@apple.com [Thu, 6 Jun 2019 02:10:51 +0000 (02:10 +0000)]
Introduce new SPI for context menus on iOS
https://bugs.webkit.org/show_bug.cgi?id=198590

Reviewed by Tim Horton.

Also introduce WKContextMenuElementInfo which is API.
This is part of <rdar://problem/51003503>

* Shared/API/APIObject.h:
* Shared/API/Cocoa/WebKit.h:
* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
* Sources.txt:
* SourcesCocoa.txt:
* UIProcess/API/APIContextMenuElementInfo.cpp: Added.
(API::ContextMenuElementInfo::ContextMenuElementInfo):
* UIProcess/API/APIContextMenuElementInfo.h: Added.
* UIProcess/API/Cocoa/WKContextMenuElementInfo.h: Added.
* UIProcess/API/Cocoa/WKContextMenuElementInfo.mm: Added.
(-[WKContextMenuElementInfo linkURL]):
(-[WKContextMenuElementInfo _apiObject]):
(-[WKContextMenuElementInfo _activatedElementInfo]):
* UIProcess/API/Cocoa/WKContextMenuElementInfoInternal.h: Added.
* UIProcess/API/Cocoa/WKContextMenuElementInfoPrivate.h: Added.
* UIProcess/API/Cocoa/WKPreviewElementInfo.h:
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/API/Cocoa/_WKActivatedElementInfo.h:
* UIProcess/API/Cocoa/_WKActivatedElementInfo.mm:
(-[_WKActivatedElementInfo _initWithInteractionInformationAtPosition:]):
(-[_WKActivatedElementInfo isAnimatedImage]):
* UIProcess/ios/WKActionSheetAssistant.h:
* UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant defaultActionsForLinkSheet:]):
(-[WKActionSheetAssistant defaultActionsForImageSheet:]):
* UIProcess/ios/WKContentView.h:
* UIProcess/ios/WKContentViewInteraction.mm:
* WebKit.xcodeproj/project.pbxproj:

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

10 months ago-[WKWebView _suspendAllMediaPlayback] does not persist across navigation.
jer.noble@apple.com [Thu, 6 Jun 2019 01:22:18 +0000 (01:22 +0000)]
-[WKWebView _suspendAllMediaPlayback] does not persist across navigation.
https://bugs.webkit.org/show_bug.cgi?id=198585

Reviewed by Chris Dumez.

Source/WebKit:

Add a new WebPageCreationParameters entry for mediaPlaybackIsSuspended, and pass
that value across during WebPage creation.

* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::suspendAllMediaPlayback):
(WebKit::WebPageProxy::resumeAllMediaPlayback):
(WebKit::WebPageProxy::creationParameters):
* UIProcess/WebPageProxy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage):

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
* TestWebKitAPI/Tests/WebKitCocoa/WKWebViewSuspendAllMediaPlayback.mm: Added.
(TEST):
* TestWebKitAPI/Tests/WebKitLegacy/ios/video-with-audio.html:

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

10 months ago[WHLSL] Parsing and lexing the standard library is slow
rmorisset@apple.com [Thu, 6 Jun 2019 00:46:25 +0000 (00:46 +0000)]
[WHLSL] Parsing and lexing the standard library is slow
https://bugs.webkit.org/show_bug.cgi?id=192890
<rdar://problem/50746335>

Reviewed by Myles Maxfield.

The main idea is to avoid backtracking by instead peeking at the next token (and occasionally at the one after that).
This implies a few things:
- We can replace the stack of tokens by a trivial ring buffer of size 2 (holding the next token and the one after, or WTF::nullopt if we are at the end of the file).
- We now have "completeFooExpression" functions, to avoid having to reparse the prefix of some expression, if we find half-way through what it is.

I also fixed the following parser bug:
- https://bugs.webkit.org/show_bug.cgi?id=198305 [WHLSL] Multiple variables with initializers in a declaration statement crashes the compiler
    which was due to a mistake I made in the grammar

Finally I added two new macros: CONSUME_TYPE and PARSE to eliminate about 500 lines of error propagation boilerplate.

There are still lots of ways of improving the parser and lexer, such as:
- finishing the conversion of tokens in the lexer, not bothering with allocating string views
- make two special tokens Invalid and EOF, to remove the overhead of Optional
- make peekTypes and consumeTypes use templates to avoid constructing a Vector and calling find on it.
- Turn the entire lexer into a proper automata, not going through the same characters again and again (this is certainly the largest win by far)
- Remove the last few pieces of backtracking from the parser.

The current patch is already enough to make parsing the full standard library (something like 85k lines) approximately 260ms.
This is still longer than I would like, but nowhere near the bottleneck any longer because of some other parts of the compiler.

* Modules/webgpu/WHLSL/WHLSLLexer.h:
(WebCore::WHLSL::Lexer::Lexer):
(WebCore::WHLSL::Lexer::consumeToken):
(WebCore::WHLSL::Lexer::peek):
(WebCore::WHLSL::Lexer::peekFurther):
(WebCore::WHLSL::Lexer::state const):
(WebCore::WHLSL::Lexer::setState):
(WebCore::WHLSL::Lexer::unconsumeToken): Deleted.
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parse):
(WebCore::WHLSL::Parser::peek):
(WebCore::WHLSL::Parser::peekTypes):
(WebCore::WHLSL::Parser::tryType):
(WebCore::WHLSL::Parser::tryTypes):
(WebCore::WHLSL::Parser::consumeTypes):
(WebCore::WHLSL::Parser::parseConstantExpression):
(WebCore::WHLSL::Parser::parseTypeArgument):
(WebCore::WHLSL::Parser::parseTypeArguments):
(WebCore::WHLSL::Parser::parseTypeSuffixAbbreviated):
(WebCore::WHLSL::Parser::parseTypeSuffixNonAbbreviated):
(WebCore::WHLSL::Parser::parseType):
(WebCore::WHLSL::Parser::parseTypeDefinition):
(WebCore::WHLSL::Parser::parseResourceSemantic):
(WebCore::WHLSL::Parser::parseSpecializationConstantSemantic):
(WebCore::WHLSL::Parser::parseStageInOutSemantic):
(WebCore::WHLSL::Parser::parseSemantic):
(WebCore::WHLSL::Parser::parseQualifiers):
(WebCore::WHLSL::Parser::parseStructureElement):
(WebCore::WHLSL::Parser::parseStructureDefinition):
(WebCore::WHLSL::Parser::parseEnumerationDefinition):
(WebCore::WHLSL::Parser::parseEnumerationMember):
(WebCore::WHLSL::Parser::parseNativeTypeDeclaration):
(WebCore::WHLSL::Parser::parseNumThreadsFunctionAttribute):
(WebCore::WHLSL::Parser::parseAttributeBlock):
(WebCore::WHLSL::Parser::parseParameter):
(WebCore::WHLSL::Parser::parseParameters):
(WebCore::WHLSL::Parser::parseFunctionDefinition):
(WebCore::WHLSL::Parser::parseComputeFunctionDeclaration):
(WebCore::WHLSL::Parser::parseVertexFragmentFunctionDeclaration):
(WebCore::WHLSL::Parser::parseRegularFunctionDeclaration):
(WebCore::WHLSL::Parser::parseOperatorFunctionDeclaration):
(WebCore::WHLSL::Parser::parseFunctionDeclaration):
(WebCore::WHLSL::Parser::parseNativeFunctionDeclaration):
(WebCore::WHLSL::Parser::parseBlock):
(WebCore::WHLSL::Parser::parseBlockBody):
(WebCore::WHLSL::Parser::parseIfStatement):
(WebCore::WHLSL::Parser::parseSwitchStatement):
(WebCore::WHLSL::Parser::parseSwitchCase):
(WebCore::WHLSL::Parser::parseForLoop):
(WebCore::WHLSL::Parser::parseWhileLoop):
(WebCore::WHLSL::Parser::parseDoWhileLoop):
(WebCore::WHLSL::Parser::parseVariableDeclaration):
(WebCore::WHLSL::Parser::parseVariableDeclarations):
(WebCore::WHLSL::Parser::parseStatement):
(WebCore::WHLSL::Parser::parseEffectfulExpression):
(WebCore::WHLSL::Parser::parseEffectfulAssignment):
(WebCore::WHLSL::Parser::parseExpression):
(WebCore::WHLSL::Parser::parseTernaryConditional): Deleted.
(WebCore::WHLSL::Parser::completeTernaryConditional):
(WebCore::WHLSL::Parser::parseAssignment): Deleted.
(WebCore::WHLSL::Parser::completeAssignment):
(WebCore::WHLSL::Parser::parsePossibleTernaryConditional):
(WebCore::WHLSL::Parser::parsePossibleLogicalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleLogicalBinaryOperation):
(WebCore::WHLSL::Parser::parsePossibleRelationalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleRelationalBinaryOperation):
(WebCore::WHLSL::Parser::parsePossibleShift):
(WebCore::WHLSL::Parser::completePossibleShift):
(WebCore::WHLSL::Parser::parsePossibleAdd):
(WebCore::WHLSL::Parser::completePossibleAdd):
(WebCore::WHLSL::Parser::parsePossibleMultiply):
(WebCore::WHLSL::Parser::completePossibleMultiply):
(WebCore::WHLSL::Parser::parsePossiblePrefix):
(WebCore::WHLSL::Parser::parsePossibleSuffix):
(WebCore::WHLSL::Parser::parseCallExpression):
(WebCore::WHLSL::Parser::parseTerm):
(WebCore::WHLSL::Parser::parseAddressSpaceType): Deleted.
(WebCore::WHLSL::Parser::parseNonAddressSpaceType): Deleted.
(WebCore::WHLSL::Parser::parseEntryPointFunctionDeclaration): Deleted.
(WebCore::WHLSL::Parser::parseEffectfulPrefix): Deleted.
(WebCore::WHLSL::Parser::parseEffectfulSuffix): Deleted.
* Modules/webgpu/WHLSL/WHLSLParser.h:
(WebCore::WHLSL::Parser::Error::dump const):

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

10 months agoWebAssembly: pow functions returns 0 when exponent 1.0 or -1.0
justin_michaud@apple.com [Thu, 6 Jun 2019 00:28:53 +0000 (00:28 +0000)]
WebAssembly: pow functions returns 0 when exponent 1.0 or -1.0
https://bugs.webkit.org/show_bug.cgi?id=198106

Reviewed by Saam Barati.

JSTests:

* wasm/regress/selectf64.js: Added.
* wasm/regress/selectf64.wasm: Added.
* wasm/regress/selectf64.wat: Added.

Source/JavaScriptCore:

Fix bug caused by using fcsel sX instead of fcsel dX on an f64 value in moveDoubleConditionally32.

* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::moveDoubleConditionally32):

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

10 months agoTestWebKitAPI.WKWebView.LocalStorageProcessSuspends is flaky on release builds
sihui_liu@apple.com [Wed, 5 Jun 2019 23:05:51 +0000 (23:05 +0000)]
TestWebKitAPI.WKWebView.LocalStorageProcessSuspends is flaky on release builds
https://bugs.webkit.org/show_bug.cgi?id=198582

Reviewed by Youenn Fablet.

Initialize the state of StorageManager.

* NetworkProcess/WebStorage/StorageManager.h:

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

10 months agoRevert part of r246126
achristensen@apple.com [Wed, 5 Jun 2019 22:53:11 +0000 (22:53 +0000)]
Revert part of r246126
https://bugs.webkit.org/show_bug.cgi?id=197132

* platform/ios/WebItemProviderPasteboard.h:
This change broke an internal build, so I'm reverting it.

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

10 months ago[CSP] Data URLs should inherit their CSP policy
dbates@webkit.org [Wed, 5 Jun 2019 22:09:25 +0000 (22:09 +0000)]
[CSP] Data URLs should inherit their CSP policy
https://bugs.webkit.org/show_bug.cgi?id=198572
<rdar://problem/50660927>

Reviewed by Brent Fulgham.

Source/WebCore:

As per <https://w3c.github.io/webappsec-csp/#security-inherit-csp> (Editor's Draft, 28 February 2019) data
URLs should inherit their CSP policy from their parent (if they have one).

Test: http/tests/security/contentSecurityPolicy/subframe-with-data-url-inheritance.html

* dom/Document.cpp:
(WebCore::Document::shouldInheritContentSecurityPolicyFromOwner const):

LayoutTests:

Add a test to ensure that a framed data URL inherits its CSP policy from its parent document.

* http/tests/security/contentSecurityPolicy/subframe-with-data-url-inheritance-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/subframe-with-data-url-inheritance.html: Added.

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

10 months agoUnreviewed. Follow up fix after r246115.
sbarati@apple.com [Wed, 5 Jun 2019 21:28:01 +0000 (21:28 +0000)]
Unreviewed. Follow up fix after r246115.
I changed the code to assert that we don't have duplicate native
functions. It turns out we do. I will fix that here, then add
back the assert. https://bugs.webkit.org/show_bug.cgi?id=198580

* Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
(WebCore::WHLSL::checkDuplicateFunctions):

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

10 months agoRe-enable safe browsing in WKWebView
commit-queue@webkit.org [Wed, 5 Jun 2019 21:24:45 +0000 (21:24 +0000)]
Re-enable safe browsing in WKWebView
https://bugs.webkit.org/show_bug.cgi?id=196161
<rdar://problem/49171413>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-06-05
Reviewed by Ryosuke Niwa.

Source/WebKit:

This is mostly just reverting r241728.

* Shared/WebPreferences.yaml:
* UIProcess/API/Cocoa/WKPreferences.h:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences setSafeBrowsingEnabled:]):
(-[WKPreferences isSafeBrowsingEnabled]):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
* TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm:
(TEST):
(safeBrowsingView):

LayoutTests:

* platform/mac-wk2/http/tests/navigation/keyboard-events-during-provisional-navigation-expected.txt:

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

10 months agoProgress towards resurrecting Mac CMake build
commit-queue@webkit.org [Wed, 5 Jun 2019 21:11:39 +0000 (21:11 +0000)]
Progress towards resurrecting Mac CMake build
https://bugs.webkit.org/show_bug.cgi?id=197132

Patch by Alex Christensen <achristensen@webkit.org> on 2019-06-05
Reviewed by Don Olmstead.

Source/JavaScriptCore:

* API/JSScript.mm:
(-[JSScript readCache]):
(-[JSScript sourceCode]):
(-[JSScript jsSourceCode]):
(-[JSScript writeCache:]):
* CMakeLists.txt:

Source/WebCore:

* CMakeLists.txt:
* PlatformMac.cmake:
* platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:

Source/WebCore/PAL:

* pal/PlatformMac.cmake:

Source/WebKit:

* PlatformMac.cmake:

Source/WebKitLegacy:

* PlatformMac.cmake:

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

10 months agoRemove logSiteIdentifier from UserMediaPermissionRequestManagerProxy::requestUserMedi...
youenn@apple.com [Wed, 5 Jun 2019 20:39:53 +0000 (20:39 +0000)]
Remove logSiteIdentifier from UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame
https://bugs.webkit.org/show_bug.cgi?id=198575

Reviewed by Eric Carlson.

* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):

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

10 months ago== Rolled over to ChangeLog-2019-06-05 ==
mcatanzaro@igalia.com [Wed, 5 Jun 2019 20:32:55 +0000 (20:32 +0000)]
== Rolled over to ChangeLog-2019-06-05 ==

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

10 months ago[iOS] Update sandboxes to address iokit-get-property errors
bfulgham@apple.com [Wed, 5 Jun 2019 20:26:14 +0000 (20:26 +0000)]
[iOS] Update sandboxes to address iokit-get-property errors
https://bugs.webkit.org/show_bug.cgi?id=198494
<rdar://problem/51322072> and <rdar://problem/50602737>

Reviewed by Alexey Proskuryakov.

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

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

10 months ago[Pointer Events] Fire pointerout and pointerleave events after firing pointercancel
commit-queue@webkit.org [Wed, 5 Jun 2019 19:21:38 +0000 (19:21 +0000)]
[Pointer Events] Fire pointerout and pointerleave events after firing pointercancel
https://bugs.webkit.org/show_bug.cgi?id=198560

Patch by Antoine Quint <graouts@apple.com> on 2019-06-05
Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark WPT progressions. Notably, the iOS-specific tests now have 100% PASS rate.

* web-platform-tests/pointerevents/pointerevent_mouse_capture_change_hover-expected.txt:
* web-platform-tests/pointerevents/pointerevent_pointercancel_touch-expected.txt:
* web-platform-tests/pointerevents/pointerevent_pointerleave_after_pointercancel_touch-expected.txt:
* web-platform-tests/pointerevents/pointerevent_pointerout_after_pointercancel_touch-expected.txt:

Source/WebCore:

The Pointer Events specification mandates that "pointerout" and "pointerleave" events must be dispatched
immediately after dispatching a "pointercancel" event.

Since we needed to determine the bubbling, cancelable and composed nature of those events in additional
places, we now have static methods to determine this defined in PointerEvent.h such that both PointerEvent.cpp
and PointerEventIOS.cpp may use them. This should guarantee consistency going forward.

* dom/PointerEvent.cpp:
(WebCore::PointerEvent::create):
(WebCore::PointerEvent::PointerEvent):
* dom/PointerEvent.h:
* dom/ios/PointerEventIOS.cpp:
(WebCore::pointerEventType):
(WebCore::PointerEvent::create):
(WebCore::PointerEvent::PointerEvent):
(WebCore::phaseIsCancelable): Deleted.
(WebCore::typeCanBubble): Deleted.
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::cancelPointer):

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

10 months ago[WHLSL] Implement loop expressions
sbarati@apple.com [Wed, 5 Jun 2019 18:36:29 +0000 (18:36 +0000)]
[WHLSL] Implement loop expressions
https://bugs.webkit.org/show_bug.cgi?id=195808
<rdar://problem/50746309>

Reviewed by Myles Maxfield.

Source/WebCore:

This patch makes continue/break break for "do/while/for" loops
in WHLSL. Because of the way we emit code where every expression
turns into a Metal statement, it's not convenient to emit native
Metal loop constructs. Instead, we model break/continue as if
we had goto.

For example, this WHLSL program:
```
for (INIT; COND; INC) {
    if (b)
        continue;
    if (b2)
        break;
}
```
would become something like:
```
INIT;
while (1) {
    if (!COND)
        break;
    if (b)
        goto increment;
    if (b2)
        goto exit;
increment:
    INC;
}
exit:
```

However, Metal doesn't have goto, so we model goto using a run-once
loop and a variable indicating if we should break out early. This
"break out early" variable is initially set to false. We "should
break out early" when executing a WHLSL "break" statement. "continue"
is modeled as breaking out of the run-once loop, but not touching the
"break out early" variable. "break" is modeled as setting the "break
out early" variable to true, followed by breaking out of the run-once loop.
The above WHLSL will turn into this Metal:
```
bool breakOutOfCurrentLoop = false;
INIT;
while (1) {
    if (!COND)
        break;
    do {
        if (b) {
            // WHLSL 'continue'
            break;
        }
        if (b2) {
            // WHLSL 'break'
            breakOutOfCurrentLoop = true;
            break;
        }
    } while (0);
    if (breakOutOfCurrentLoop)
        break;
    INC;
}
```

This patch also found a bug with ForLoop where it held a Variant<VariableDeclarationsStatement, Expression>.
This is invalid to do since we mutate the AST in place. This means some phase
could replace VariableDeclarationsStatement with some other Statement, and
we'd be breaking the C++ type system. So this patch migrates ForLoop to hold
a statement instead. In general, AST nodes that point to other AST nodes
should use broad types unless we know apriori that a certain type will
never be replaced.

Tests: webgpu/whlsl-do-while-loop-break.html
       webgpu/whlsl-do-while-loop-continue.html
       webgpu/whlsl-do-while-loop.html
       webgpu/whlsl-loops-break.html
       webgpu/whlsl-loops-continue.html
       webgpu/whlsl-loops.html
       webgpu/whlsl-nested-loop.html
       webgpu/whlsl-while-loop-break.html
       webgpu/whlsl-while-loop-continue.html

* Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
(WebCore::WHLSL::AST::ForLoop::ForLoop):
(WebCore::WHLSL::AST::ForLoop::initialization):
* Modules/webgpu/WHLSL/Metal/WHLSLFunctionWriter.cpp:
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::visit):
(WebCore::WHLSL::Metal::FunctionDefinitionWriter::emitLoop):
* Modules/webgpu/WHLSL/WHLSLASTDumper.cpp:
(WebCore::WHLSL::ASTDumper::visit):
* Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::Checker::visit):
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseForLoop):
* Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
* Modules/webgpu/WHLSL/WHLSLStandardLibrary.txt:
* Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
(WebCore::WHLSL::Visitor::visit):

LayoutTests:

* webgpu/whlsl-do-while-loop-break-expected.html: Added.
* webgpu/whlsl-do-while-loop-break.html: Added.
* webgpu/whlsl-do-while-loop-continue-expected.html: Added.
* webgpu/whlsl-do-while-loop-continue.html: Added.
* webgpu/whlsl-do-while-loop-expected.html: Added.
* webgpu/whlsl-do-while-loop.html: Added.
* webgpu/whlsl-loops-break-expected.html: Added.
* webgpu/whlsl-loops-break.html: Added.
* webgpu/whlsl-loops-continue-expected.html: Added.
* webgpu/whlsl-loops-continue.html: Added.
* webgpu/whlsl-loops-expected.html: Added.
* webgpu/whlsl-loops.html: Added.
* webgpu/whlsl-nested-loop-expected.html: Added.
* webgpu/whlsl-nested-loop.html: Added.
* webgpu/whlsl-while-loop-break-expected.html: Added.
* webgpu/whlsl-while-loop-break.html: Added.
* webgpu/whlsl-while-loop-continue-expected.html: Added.
* webgpu/whlsl-while-loop-continue.html: Added.

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

10 months agoWeb Inspector: Dark Mode: inactive tab bar tint is too light
drousso@apple.com [Wed, 5 Jun 2019 18:29:34 +0000 (18:29 +0000)]
Web Inspector: Dark Mode: inactive tab bar tint is too light
https://bugs.webkit.org/show_bug.cgi?id=198546

Reviewed by Joseph Pecoraro.

* UserInterface/Views/TabBar.css:
(@media (prefers-color-scheme: dark)):

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

10 months agoFix icons positioned incorrectly when a featured image is used
jond@apple.com [Wed, 5 Jun 2019 18:23:49 +0000 (18:23 +0000)]
Fix icons positioned incorrectly when a featured image is used
https://bugs.webkit.org/show_bug.cgi?id=198535

Reviewed by Devin Rousso.

* wp-content/themes/webkit/style.css:
(.tile .background-image.loaded svg):
(.tile .featured-image::before):

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

10 months agoUpstream content mode support into open source from WebKitAdditions
wenson_hsieh@apple.com [Wed, 5 Jun 2019 18:23:06 +0000 (18:23 +0000)]
Upstream content mode support into open source from WebKitAdditions
https://bugs.webkit.org/show_bug.cgi?id=198484
<rdar://problem/51355671>

Reviewed by Andy Estes.

Source/WebCore:

* Modules/modern-media-controls/media/media-controller.js:
(MediaController.prototype.get layoutTraits):

Adjust modern media controls code to use iOS-style controls on PLATFORM(IOS_FAMILY), instead of depending on the
navigator's platform name or the presence of touch events.

* page/Quirks.cpp:
(WebCore::shouldSuppressAutocorrectionAndAutocaptializationInHiddenEditableAreasForHost):
(WebCore::shouldEmulateUndoRedoInHiddenEditableAreasForHost):
* page/SettingsBase.h:
* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::mediaControlsScript):

Source/WebCore/PAL:

Add some new constants to MobileGestaltSPI.h.

* pal/spi/ios/MobileGestaltSPI.h:

Source/WebKit:

Move code for handling WKContentMode into open source. No change in behavior, for internal builds.

* Shared/API/Cocoa/WebKit.apinotes:
* Shared/WebContentMode.h: Renamed from Source/WebKit/Shared/WebCompatibilityMode.h.
* Shared/WebPreferences.yaml:
* UIProcess/API/APINavigation.h:
(API::Navigation::setEffectiveContentMode):
(API::Navigation::effectiveContentMode const):
(API::Navigation::setEffectiveCompatibilityMode): Deleted.
(API::Navigation::effectiveCompatibilityMode const): Deleted.
* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::shouldBypassContentModeSafeguards const):
(API::NavigationClient::shouldBypassCompatibilityModeSafeguards const): Deleted.
* UIProcess/API/APIWebsitePolicies.cpp:
(API::WebsitePolicies::copy const):
* UIProcess/API/APIWebsitePolicies.h:
* UIProcess/API/Cocoa/WKNavigation.h:
* UIProcess/API/Cocoa/WKNavigation.mm:
(-[WKNavigation effectiveContentMode]):
* UIProcess/API/Cocoa/WKWebpagePreferences.h:
* UIProcess/API/Cocoa/WKWebpagePreferences.mm:
(WebKit::contentMode):
(WebKit::webContentMode):
(-[WKWebpagePreferences _allowSiteSpecificQuirksToOverrideCompatibilityMode]):
(-[WKWebpagePreferences _setAllowSiteSpecificQuirksToOverrideCompatibilityMode:]):
(-[WKWebpagePreferences setPreferredContentMode:]):
(-[WKWebpagePreferences preferredContentMode]):
* UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h:
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::shouldBypassContentModeSafeguards const):
(WebKit::NavigationState::NavigationClient::shouldBypassCompatibilityModeSafeguards const): Deleted.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies):
(WebKit::WebPageProxy::effectiveCompatibilityModeAfterAdjustingPolicies): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::desktopClassBrowsingSupported):
(WebKit::webViewSizeIsNarrow):
(WebKit::desktopClassBrowsingRecommendedForRequest):
(WebKit::desktopClassBrowsingRecommended):
(WebKit::WebPageProxy::effectiveContentModeAfterAdjustingPolicies):
* WebKit.xcodeproj/project.pbxproj:

Tools:

Change the "useModernCompatibilityMode" layout test option to instead be "contentMode", with values of either
"mobile" or "desktop".

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/ios/PreferredCompatibilityMode.mm: Removed.
* TestWebKitAPI/ios/PreferredContentMode.mm: Added.
(-[ContentModeNavigationDelegate setDecidePolicyForNavigationActionWithPreferences:]):
(-[ContentModeNavigationDelegate decidePolicyForNavigationActionWithPreferences]):
(-[ContentModeNavigationDelegate webView:decidePolicyForNavigationAction:preferences:decisionHandler:]):
(+[WKWebpagePreferences preferencesWithContentMode:]):
(-[WKWebView navigatorUserAgent]):
(-[WKWebView navigatorPlatform]):
(-[WKWebView loadTestPageNamed:withPolicyDecisionHandler:]):
(-[WKWebView loadHTMLString:withPolicyDecisionHandler:]):
(-[WKWebView loadTestPageNamed:andExpectEffectiveContentMode:withPolicyDecisionHandler:]):
(-[NSString shouldContainStrings:]):
(IPhoneUserInterfaceSwizzler::IPhoneUserInterfaceSwizzler):
(IPhoneUserInterfaceSwizzler::phoneUserInterfaceIdiom):
(TestWebKitAPI::setUpWebViewForPreferredContentModeTestingWithoutNavigationDelegate):
(TestWebKitAPI::setUpWebViewForPreferredContentModeTesting):
(TestWebKitAPI::makeContentModeDecisionHandler):
(TestWebKitAPI::TEST):
* WebKitTestRunner/TestController.cpp:
(WTR::updateTestOptionsFromTestHeader):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::hasSameInitializationOptions const):
* WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::platformCreateWebView):
(WTR::TestController::configureContentMode):
(WTR::TestController::enableModernCompatibilityMode): Deleted.

LayoutTests:

Explicitly opt a few tests into desktop or mobile content mode.

* fast/media/ios/ipad/enable-MediaSource-API-in-modern-compatibility-mode.html:
* fast/scrolling/ipad/overflow-scrolling-touch-enabled-stacking-modern-compatibility-mode-expected.html:
* fast/scrolling/ipad/overflow-scrolling-touch-enabled-stacking-modern-compatibility-mode.html:
* media/modern-media-controls/media-controller/ios/media-controller-ios-layout-traits-modern-compatibility-mode.html:
* platform/ipad/fast/css/webkit-overflow-scrolling-parsing-modern-compatibility-mode.html:
* platform/ipad/fast/viewport/empty-meta.html:
* platform/ipad/fast/viewport/viewport-unchanged-by-minimum-effective-width-if-not-ignore-meta-viewport.html:
* platform/ipad/media/modern-media-controls/media-documents/media-document-audio-ios-sizing.html:

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

10 months agoimported/w3c/web-platform-tests/IndexedDB/keypath-special-identifiers.htm is a flaky...
sroberts@apple.com [Wed, 5 Jun 2019 18:02:27 +0000 (18:02 +0000)]
imported/w3c/web-platform-tests/IndexedDB/keypath-special-identifiers.htm is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=198573

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations: Updating expectations for flaky test

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

10 months agoRemove some unused selection code
timothy_horton@apple.com [Wed, 5 Jun 2019 18:01:03 +0000 (18:01 +0000)]
Remove some unused selection code
https://bugs.webkit.org/show_bug.cgi?id=198451

Reviewed by Wenson Hsieh.

* Platform/spi/ios/UIKitSPI.h:
* Shared/ios/GestureTypes.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(toGestureType):
(toUIWKGestureType):
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView actionSheetAssistant:shareElementWithURL:rect:]):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::selectWithGesture):
(WebKit::WebPage::selectTextWithGranularityAtPoint):
(WebKit::canShrinkToTextSelection): Deleted.
(WebKit::hasCustomLineHeight): Deleted.
(WebKit::WebPage::rangeForWebSelectionAtPosition): Deleted.

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

10 months ago[WHLSL] checkDuplicateFunctions() should not be O(n^2)
sbarati@apple.com [Wed, 5 Jun 2019 17:40:21 +0000 (17:40 +0000)]
[WHLSL] checkDuplicateFunctions() should not be O(n^2)
https://bugs.webkit.org/show_bug.cgi?id=198155
<rdar://problem/51288811>

Reviewed by Myles Maxfield.

Originally, we filed this bug because we thought checkDuplicateFunctions()
would take on the order of hundreds of milliseconds when using the
full standard library. However, I was never able to reproduce that phase
taking that long. I was seeing it take 3.5-4ms. Anyways, it makes sense
to make this phase not be O(N^2), since the number of functions is a user
controlled value. I am now seeing ~2.5ms to run this phase against the
full standard library. On a microbenchmark I checked against, where there
were 100,000 unique functions, this pass runs twice as fast as it used
to, now taking 450ms instead of 900ms.

* Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
(WebCore::WHLSL::AST::ArrayReferenceType::ArrayReferenceType):
* Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
* Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
(WebCore::WHLSL::AST::PointerType::PointerType):
* Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
* Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
* Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
* Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
(WebCore::WHLSL::DuplicateFunctionKey::DuplicateFunctionKey):
(WebCore::WHLSL::DuplicateFunctionKey::isEmptyValue const):
(WebCore::WHLSL::DuplicateFunctionKey::isHashTableDeletedValue const):
(WebCore::WHLSL::DuplicateFunctionKey::hash const):
(WebCore::WHLSL::DuplicateFunctionKey::operator== const):
(WebCore::WHLSL::DuplicateFunctionKey::Hash::hash):
(WebCore::WHLSL::DuplicateFunctionKey::Hash::equal):
(WebCore::WHLSL::DuplicateFunctionKey::Traits::isEmptyValue):
(WebCore::WHLSL::checkDuplicateFunctions):

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

10 months ago[LFC][IFC] LineLayout::placeInlineItems should not apply float contraint.
zalan@apple.com [Wed, 5 Jun 2019 17:34:20 +0000 (17:34 +0000)]
[LFC][IFC] LineLayout::placeInlineItems should not apply float contraint.
https://bugs.webkit.org/show_bug.cgi?id=198565
<rdar://problem/51440718>

Reviewed by Antti Koivisto.

This patch moves float constraint handling from placeInlineItems() to LineLayout::layout().
When placeInlineItems() is called by the preferred width computation, intruding floats should be ignored
since they don't constrain the "min/max lines".

* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::LineInput::HorizontalConstraint::HorizontalConstraint):
(WebCore::Layout::InlineFormattingContext::LineLayout::LineInput::LineInput):
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
(WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
(WebCore::Layout::constructLine): Deleted.

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

10 months agoREGRESSION (~r244378) fast/events/touch/ios/content-observation/stuck-with-hover...
zalan@apple.com [Wed, 5 Jun 2019 17:33:54 +0000 (17:33 +0000)]
REGRESSION (~r244378) fast/events/touch/ios/content-observation/stuck-with-hover-state.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=198571
<rdar://problem/50349265>

Reviewed by Brent Fulgham.

testRunner.notifyDone() is called prematurely.

* fast/events/touch/ios/content-observation/stuck-with-hover-state.html:

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

10 months agoImprove accessibility on webkit.org
jond@apple.com [Wed, 5 Jun 2019 17:03:27 +0000 (17:03 +0000)]
Improve accessibility on webkit.org
https://bugs.webkit.org/show_bug.cgi?id=198531

Reviewed by Devin Rousso.

* wp-content/themes/webkit/functions.php: Added menuitem ARIA role to links
* wp-content/themes/webkit/widgets/post.php: Added aria-label to SVG icons

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

10 months agohttp/tests/websocket/tests/hybi/handshake-ok-with-legacy-websocket-response-headers...
sroberts@apple.com [Wed, 5 Jun 2019 17:02:04 +0000 (17:02 +0000)]
http/tests/websocket/tests/hybi/handshake-ok-with-legacy-websocket-response-headers.html is a flaky failure on Mojave
https://bugs.webkit.org/show_bug.cgi?id=176240

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

10 months agoUnreviewed assertion fix for macOS after r246097.
cdumez@apple.com [Wed, 5 Jun 2019 17:01:35 +0000 (17:01 +0000)]
Unreviewed assertion fix for macOS after r246097.

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::processPoolForCookieStorageOperations):

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

10 months agoUnreviewed, add GTK baselines for new mediacapabilities test.
philn@webkit.org [Wed, 5 Jun 2019 16:56:57 +0000 (16:56 +0000)]
Unreviewed, add GTK baselines for new mediacapabilities test.

This test was added in r245636 with baselines for the mac port, but not for the GTK port.

* platform/gtk/media/mediacapabilities/mediacapabilities-types-expected.txt: Added.

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

10 months agoUnreviewed, rolling out r246052.
tsavell@apple.com [Wed, 5 Jun 2019 16:48:16 +0000 (16:48 +0000)]
Unreviewed, rolling out r246052.

Caused 3 webgpu/ failures.

Reverted changeset:

"[WHLSL] Parsing and lexing the standard library is slow"
https://bugs.webkit.org/show_bug.cgi?id=192890
https://trac.webkit.org/changeset/246052

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

10 months ago[GStreamer] Crash in MediaPlayerPrivateGStreamerBase::ensureGstGLContext
mcatanzaro@igalia.com [Wed, 5 Jun 2019 16:41:05 +0000 (16:41 +0000)]
[GStreamer] Crash in MediaPlayerPrivateGStreamerBase::ensureGstGLContext
https://bugs.webkit.org/show_bug.cgi?id=198567

Reviewed by Philippe Normand.

MediaPlayerPrivateGStreamerBase::ensureGstGLContext is currently a guaranteed crash because
it expects PlatformDisplay::sharedDisplayForCompositing() to return a PlatformDisplayLibWPE
if compiled with USE(WPE_RENDERER), but PlatformDisplayLibWPE has lower precedence than
PlatformDisplayX11 and PlatformDisplayWayland. When running our layout tests with
run-webkit-tests --gtk, it's guaranteed to be a PlatformDisplayX11.

I think Carlos was clearly expecting PlatformDisplayLibWPE, so I don't know what the ideal
desired behavior is, but the crashes go away if we change the code to allow any type of
PlatformDisplay. This should hopefully fix our bots, which are still exiting early.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext):

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

10 months agoMark two tests added in r246016 as slow.
tsavell@apple.com [Wed, 5 Jun 2019 14:52:26 +0000 (14:52 +0000)]
Mark two tests added in r246016 as slow.
https://bugs.webkit.org/show_bug.cgi?id=198459

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

10 months ago[LFC][IFC] Move inline item height computation to a dedicated function
zalan@apple.com [Wed, 5 Jun 2019 14:47:20 +0000 (14:47 +0000)]
[LFC][IFC] Move inline item height computation to a dedicated function
https://bugs.webkit.org/show_bug.cgi?id=198550
<rdar://problem/51424223>

Reviewed by Antti Koivisto.

The inlineItem height value is not available during preferred width computation (hence optional).

* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::UncommittedContent::add):
(WebCore::Layout::inlineItemWidth):
(WebCore::Layout::inlineItemHeight):
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::appendInlineContainerStart):
(WebCore::Layout::Line::appendInlineContainerEnd):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::appendNonReplacedInlineBox):
(WebCore::Layout::Line::appendReplacedInlineBox):
* layout/inlineformatting/InlineLine.h:

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

10 months agoUpdate the CSS Text WPT test suite
jfernandez@igalia.com [Wed, 5 Jun 2019 13:22:53 +0000 (13:22 +0000)]
Update the CSS Text WPT test suite
https://bugs.webkit.org/show_bug.cgi?id=197929

Reviewed by Myles C. Maxfield.

Import the last changes in the CSS Text suite.

LayoutTests/imported/w3c:

* web-platform-tests/css/css-text/line-break/line-break-anywhere-001.html:
* web-platform-tests/css/css-text/line-break/line-break-anywhere-002.html:
* web-platform-tests/css/css-text/line-break/line-break-anywhere-013-expected.html: Added.
* web-platform-tests/css/css-text/line-break/line-break-anywhere-013.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-024.html.
* web-platform-tests/css/css-text/line-break/line-break-anywhere-014-expected.html: Added.
* web-platform-tests/css/css-text/line-break/line-break-anywhere-014.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-024.html.
* web-platform-tests/css/css-text/line-break/line-break-anywhere-015-expected.html: Added.
* web-platform-tests/css/css-text/line-break/line-break-anywhere-015.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-024.html.
* web-platform-tests/css/css-text/line-break/line-break-anywhere-016-expected.html: Added.
* web-platform-tests/css/css-text/line-break/line-break-anywhere-016.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-024.html.
* web-platform-tests/css/css-text/line-break/w3c-import.log:
* web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-008.html:
* web-platform-tests/css/css-text/white-space/break-spaces-009.html:
* web-platform-tests/css/css-text/white-space/break-spaces-010-expected.html: Added.
* web-platform-tests/css/css-text/white-space/break-spaces-010.html: Added.
* web-platform-tests/css/css-text/white-space/w3c-import.log:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-004-expected.html:
* web-platform-tests/css/css-text/white-space/white-space-intrinsic-size-004.html:
* web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-002-expected.html:
* web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-002.html:
* web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-003-expected.html:
* web-platform-tests/css/css-text/white-space/white-space-pre-wrap-trailing-spaces-003.html:
* web-platform-tests/css/css-text/word-break/w3c-import.log:
* web-platform-tests/css/css-text/word-break/word-break-break-all-017.html:
* web-platform-tests/css/css-text/word-break/word-break-break-all-023.html:
* web-platform-tests/css/css-text/word-break/word-break-break-all-024.html:
* web-platform-tests/css/css-text/word-break/word-break-break-all-025-expected.html: Added.
* web-platform-tests/css/css-text/word-break/word-break-break-all-025.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-024.html.
* web-platform-tests/css/css-text/word-break/word-break-break-all-026-expected.html: Added.
* web-platform-tests/css/css-text/word-break/word-break-break-all-026.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-024.html.
* web-platform-tests/css/css-text/word-break/word-break-break-all-027-expected.html: Added.
* web-platform-tests/css/css-text/word-break/word-break-break-all-027.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-024.html.
* web-platform-tests/css/css-text/word-break/word-break-break-all-028-expected.html: Added.
* web-platform-tests/css/css-text/word-break/word-break-break-all-028.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-text/word-break/word-break-break-all-024.html.

LayoutTests:

* TestExpectations: A few tests pass now
  - white-space-intrinsic-size-004.html
  - white-space-pre-wrap-trailing-spaces-003.html

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

10 months ago[Pointer Events] Add support for chorded button interactions
graouts@webkit.org [Wed, 5 Jun 2019 08:41:30 +0000 (08:41 +0000)]
[Pointer Events] Add support for chorded button interactions
https://bugs.webkit.org/show_bug.cgi?id=198462

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark the progression for web-platform-tests/pointerevents/pointerevent_mouse_capture_change_hover.html which
proves the correct implementation of the chorded button interactions section of the Pointer Events spec. To do that,
we also had to make use of the "button" parameter used in WPT tests action sequences, which allows the test to indicate
which mouse button is pressed. Finally, there is now a change in the pointerevent_pointermove_on_chorded_mouse_button.html
results, another source change is required to get this test to fully pass.

* web-platform-tests/pointerevents/pointerevent_mouse_capture_change_hover-expected.txt:
* web-platform-tests/pointerevents/pointerevent_pointermove_on_chorded_mouse_button-expected.txt:
* web-platform-tests/resources/testdriver-vendor.js:
(dispatchMouseActions):

Source/WebCore:

Pointer events differ from mouse events in that pressing a button on a mouse and then pressing a second button
would yield two "mousedown" events but a single "pointerdown" event, for the first time we're transitioning from
a state where no button is pressed at all, and then a "pointermove" event to indicate an additional button has been
pressed. This is what the Pointer Events specification calls "chorded button interactions".
See https://w3c.github.io/pointerevents/#chorded-button-interactions for the full details.

To implement this, we no longer directly call PointerEvent::create() from Element::dispatchMouseEvent() but instead
call the new PointerCaptureController::pointerEventForMouseEvent() which implements the required logic to determine
for "mousedown" and "mouseup" mouse events, if we're transitioning from or to a state where no button is pressed at
all.

While that basic change is pretty small, a wider change was required to report the correct value for a PointerEvents'
"button" property which should return "-1" when there is no change in pressed button state compared to any previous
pointer event.

Up until now, MouseEvent.button was an "unsigned short", as specified up to and including DOM Level 2 Events. But the
UI Events spec says that property is a "short", and PointerEvent is the only interface where a "-1" value is used. This
required some changes throughout our codebase since we used a "-1" value to specify that no button was pressed when dealing
with NSEvent input and going through PlatformMouseEvent and eventually MouseEvent. So now we change the various NoButton
enum values to be "-2" and use that value, which is not going to be used for any mouse button, as the value reflected as
"0" through MouseEvent.button, as specified by UI Events.

Furthermore, we identified another issue: MouseEvent.buttons would always return 0 in DRT and WKTR. We rely upon that
value in PointerCaptureController::pointerEventForMouseEvent() and so we had to make that work for the relevant WPT test,
web-platform-tests/pointerevents/pointerevent_mouse_capture_change_hover.html, to pass and show a correct implementation
of chorded button interactions. The details of the work required for this is in Tools/ChangeLog.

* dom/Element.cpp:
(WebCore::Element::dispatchMouseEvent):
* dom/MouseEvent.cpp:
(WebCore::MouseEvent::create):
(WebCore::MouseEvent::MouseEvent):
(WebCore::MouseEvent::initMouseEvent):
(WebCore::MouseEvent::initMouseEventQuirk):
* dom/MouseEvent.h:
(WebCore::MouseEvent::button const):
* dom/MouseEvent.idl:
* dom/MouseEventInit.h:
* dom/MouseEventInit.idl:
* dom/PointerEvent.cpp:
(WebCore::PointerEvent::create):
(WebCore::PointerEvent::PointerEvent):
* dom/PointerEvent.h:
* loader/NavigationAction.h:
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::pointerEventForMouseEvent):
* page/PointerCaptureController.h:
* platform/PlatformMouseEvent.h:

Source/WebKit:

Update to use -2 instead of -1 for NoButton.

* Shared/API/c/WKEvent.h:
* Shared/WebEvent.h:

Source/WebKitLegacy/mac:

Update -[DOMMouseEvent button] to be a "short" and update the noButton value from -1 to -2.

* DOM/DOMMouseEvent.h:
* DOM/DOMMouseEvent.mm:
(-[DOMMouseEvent button]):
* WebView/WebPDFView.mm:
(-[WebPDFView PDFViewWillClickOnLink:withURL:]):

Tools:

Until now, MouseEvent.buttons would always return 0 when used within DRT and WKTR as [NSEvent pressedMouseButtons], used
by PlatformMouseEventBuilder to set the m_buttons value eventually used to set MouseEvent.buttons, not account for the
NSEvent created through the eventSender JS object in tests. To fix this, we now track the pressed mouse buttons within
DRT and WKTR as mouseDown() and mouseUp() are called, and swizzle [NSEvent pressedMouseButtons] to return that value.

In the case of DRT, one test would fail when swizzling this method in the case where the target view for the event would
be the DRTMockScroller, a subclass of NSScroller. So we only swizzle when the target view is *not* an NSScroller or a
subclass.

Finally, we change the NoMouseButton enum value from -1 to -2 to adjust to MouseEvent.button now being a "short".

* DumpRenderTree/mac/EventSendingController.mm:
(swizzledEventPressedMouseButtons):
(-[EventSendingController mouseDown:withModifiers:]):
(-[EventSendingController mouseUp:withModifiers:]):
(-[EventSendingController mouseMoveToX:Y:]):
* TestWebKitAPI/Tests/mac/IsNavigationActionTrusted.mm:
* WebKitTestRunner/EventSenderProxy.h:
(WTR::EventSenderProxy::mouseButtonsCurrentlyDown const):
* WebKitTestRunner/mac/EventSenderProxy.mm:
(WTR::swizzledEventPressedMouseButtons):
(WTR::EventSenderProxy::mouseDown):
(WTR::EventSenderProxy::mouseUp):
(WTR::EventSenderProxy::mouseMoveTo):

LayoutTests:

Update some tests and their expectations due to MouseEvent.buttons now returning the correct value in DRT and WKTR
and MouseEvent.button now being a "short" instead of an "unsigned short".

* fast/events/constructors/mouse-event-constructor-expected.txt:
* fast/events/constructors/mouse-event-constructor.html: Update the test to test the boundary values for "short" instead
of "unsigned short" as well as the new "magic" value of -2 for no button, which ends up being reported as 0.
* fast/events/constructors/wheel-event-constructor-expected.txt:
* fast/events/constructors/wheel-event-constructor.html: Update the test to test the boundary values for "short" instead
of "unsigned short" as well as the new "magic" value of -2 for no button, which ends up being reported as 0.
* fast/events/fire-mousedown-while-pressing-mouse-button.html: Rewrite this test to always use MouseEvent.buttons and
adjust the bitmask expectations which were way off.
* platform/mac-wk1/imported/w3c/web-platform-tests/pointerevents/pointerevent_mouse_capture_change_hover-expected.txt:
* platform/mac-highsierra/imported/w3c/web-platform-tests/pointerevents/pointerevent_mouse_capture_change_hover-expected.txt:
* platform/mac-highsierra-wk1/imported/w3c/web-platform-tests/pointerevents/pointerevent_mouse_capture_change_hover-expected.txt:
This test fails differently in WK1 and WK2 and will be addressed in a future patch.

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

10 months agoREGRESSION(r245796): [WPE][GTK] Web process crash on startup
mcatanzaro@igalia.com [Wed, 5 Jun 2019 07:56:07 +0000 (07:56 +0000)]
REGRESSION(r245796): [WPE][GTK] Web process crash on startup
https://bugs.webkit.org/show_bug.cgi?id=198485

Reviewed by Chris Dumez.

Source/WebCore:

ResourceRequest's PageIdentifier may be unset, which causes coding to fail as
ObjectIdentifiers are required to be valid (nonzero). We need to use Optional here.
Previously, 0 was used to indicate unset page ID. This is clearer.

* platform/network/soup/ResourceRequest.h:
(WebCore::ResourceRequest::initiatingPageID const):
(WebCore::ResourceRequest::decodeWithPlatformData):
* platform/network/soup/ResourceRequestSoup.cpp:
(WebCore::ResourceRequest::updateSoupRequest const):

Source/WebKit:

* UIProcess/API/glib/WebKitURISchemeRequest.cpp:
(webkitURISchemeRequestCreate):

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

10 months ago[GTK][WPE] Re-enable process warming
carlosgc@webkit.org [Wed, 5 Jun 2019 07:42:09 +0000 (07:42 +0000)]
[GTK][WPE] Re-enable process warming
https://bugs.webkit.org/show_bug.cgi?id=198526

Reviewed by Michael Catanzaro.

It was disabled in r243490 because bubblewrap sandbox needs a valid WebsiteDataStore before launching the web
process. We can use the default WebsiteDataStore from the WebProcessPool and only use the prewarmed process
later if the given WebsiteDataStore is the same as the WebProcessPool one.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::tryTakePrewarmedProcess): Do not use the prewarmed process if WebsiteDataStore is
different than the one used to launch the process when sandboxing is enabled.
* UIProcess/glib/WebProcessPoolGLib.cpp:
(WebKit::WebProcessPool::platformInitialize): Do not disable process warming.
* UIProcess/glib/WebProcessProxyGLib.cpp:
(WebKit::WebProcessProxy::platformGetLaunchOptions): Use the WebsiteDataStore from the WebProcessPool if process
is prewarmed and sandboxing is enabled.

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

10 months agoiPadOS: Google calendars new event picker moves and flickers in landscape with softwa...
rniwa@webkit.org [Wed, 5 Jun 2019 06:09:24 +0000 (06:09 +0000)]
iPadOS: Google calendars new event picker moves and flickers in landscape with software keyboard
https://bugs.webkit.org/show_bug.cgi?id=198556

Reviewed by Wenson Hsieh.

Fix the issuse that it's really hard to create a new event using Google calendar on iPadOS with
a software keyboard enabled because tapping on date brings up software keyboard and erratically
shifts up/down the new event dialog/pane.

Add a site specific quirk to pretend these input elements have inputmode=none for now.

No new tests since this is a site specific quirk.

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

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

10 months agoCookies set via [WKHTTPCookieStore setCookie:] on store right after constructing...
cdumez@apple.com [Wed, 5 Jun 2019 05:00:23 +0000 (05:00 +0000)]
Cookies set via [WKHTTPCookieStore setCookie:] on store right after constructing WKWebView get lost
https://bugs.webkit.org/show_bug.cgi?id=198553
<rdar://problem/51317144>

Reviewed by Geoffrey Garen.

Source/WebKit:

If you call [WKHTTPCookieStore setCookie:] right after you construct the WKWebView and before the
WebContent process has finished launching, then WebsiteDataStore::processPoolForCookieStorageOperations()
would return null, even though there is already a view/page/WebProcessProxy/WebProcessPool for this data
store. As a result, the cookie would get added to the WebsiteDataStore's m_pendingCookies but it will
not be used since we've already previously launched a network process when we constructed the web view.

The reason processPoolForCookieStorageOperations() would return null is because WebsiteDataStore::processPools()
relies on WebProcessLifetimeObserver::processes() but processes only register themselves with the
WebProcessLifetimeObservers when they have pages *and* after they are finished launching.

This patch updates processPoolForCookieStorageOperations() to fallback to iterating over all process pools
and find a process pool with a process using the current data store and which has pages. This way, even if
the process is still launching, we'll properly find its associated process pool.

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::processPoolForCookieStorageOperations):

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm:
(-[CheckSessionCookieUIDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(TEST):

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

10 months ago[ContentChangeObserver] Gmail text editing controls require two taps
zalan@apple.com [Wed, 5 Jun 2019 04:15:21 +0000 (04:15 +0000)]
[ContentChangeObserver] Gmail text editing controls require two taps
https://bugs.webkit.org/show_bug.cgi?id=198541
<rdar://problem/51375055>

Reviewed by Simon Fraser.

Source/WebCore:

When the animation completes we should also check if the newly visible content is also clickable and report it accordingly.
When the animated content is not clickable, we need to proceed with click instead of stopping at hover.

Test: fast/events/touch/ios/content-observation/100ms-delay-10ms-transition-on-mousemove-no-clickable.html

* page/ios/ContentChangeObserver.cpp:
(WebCore::isConsideredClickable):
(WebCore::ContentChangeObserver::didFinishTransition):
(WebCore::ContentChangeObserver::adjustObservedState):
(WebCore::ContentChangeObserver::StyleChangeScope::~StyleChangeScope):
(WebCore::ContentChangeObserver::StyleChangeScope::isConsideredClickable const): Deleted. -> Turn it into a static function so that didFinishTransition could call it as well.
* page/ios/ContentChangeObserver.h:

LayoutTests:

* fast/events/touch/ios/content-observation/100ms-delay-10ms-transition-on-mousemove-no-clickable.html: Added.

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

10 months agoFix miscellaneous build warnings
mcatanzaro@igalia.com [Wed, 5 Jun 2019 03:14:20 +0000 (03:14 +0000)]
Fix miscellaneous build warnings
https://bugs.webkit.org/show_bug.cgi?id=198544

Reviewed by Don Olmstead.

Source/JavaScriptCore:

Silence -Wclass-memaccess warning in this dangerous code.

* wasm/WasmInstance.cpp:
(JSC::Wasm::Instance::Instance):

Source/WebCore:

Carefully silence -Wsign-compare warnings.

* contentextensions/DFABytecodeCompiler.cpp:
(WebCore::ContentExtensions::DFABytecodeCompiler::compile):
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::indexForData):
* xml/XSLStyleSheetLibxslt.cpp:
(WebCore::XSLStyleSheet::parseString):

Source/WebKit:

Carefully silence -Wsign-compare warnings.

* NetworkProcess/cache/NetworkCacheData.cpp:
(WebKit::NetworkCache::readOrMakeSalt):

Tools:

When converting to PRIVATE include directories, we accidentally dropped SYSTEM here. The
naming convention used here is a bit confusing: the *_SYSTEM_INCLUDE_DIRECTORIES actually
uses both SYSTEM and PRIVATE. We should probably clarify this.

* TestWebKitAPI/PlatformGTK.cmake:

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

10 months agoImprove performance of the lazy image loader
jond@apple.com [Wed, 5 Jun 2019 02:21:26 +0000 (02:21 +0000)]
Improve performance of the lazy image loader
https://bugs.webkit.org/show_bug.cgi?id=198530

Reviewed by Devin Rousso.

* wp-content/themes/webkit/scripts/global.js:
(enableScrollableTables):
(lazyLoadImages):
(findParentMenu): Deleted.
(i.m.menus.m.targetMenu.targetMenuClass.indexOf): Deleted.
(inView): Deleted.
(): Deleted.
(loadImage.else.img.onload): Deleted.
(loadImage): Deleted.
(onMovement): Deleted.
(updateImages): Deleted.

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

10 months agogetUserMedia requests should be processed sequentially in UIProcess
youenn@apple.com [Wed, 5 Jun 2019 01:03:04 +0000 (01:03 +0000)]
getUserMedia requests should be processed sequentially in UIProcess
https://bugs.webkit.org/show_bug.cgi?id=198430
<rdar://problem/51311420>

Reviewed by Eric Carlson.

Source/WebKit:

Before the patch, we process all incoming gum/gdm requests in parallel.
We now queueu them and process them one at a time.
This allows to take into consideration state changes triggered by one request for the next one.
In particular, if a user grants a request, this might grant the next one as well.

To implement that, we keep a reference of the current request to process.
We queue other requests happening whenever another request comes.
When the request is processed, we look at the next one in the queue.
To ensure we do not stop processing the queue for no good reason, some refactoring is done:
- queue processing happens when sending back IPC response to WebProcess.
- denyRequest/grantRequest are consistently called in the manager proxy.

* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::invalidatePendingRequests):
Invalidate pregranted requests as well.
(WebKit::UserMediaPermissionRequestManagerProxy::denyRequest):
Renamed from userMediaAccessWasDenied to denyRequest.
This method is now consistently used whenever the manager proxy wants to deny the request.
It does the IPC to the WebProcess and triggers processing of the next request.
(WebKit::UserMediaPermissionRequestManagerProxy::grantRequest):
Renamed from userMediaAccessWasGranted to grantRequest.
(WebKit::UserMediaPermissionRequestManagerProxy::finishGrantingRequest):
This method is now consistently used whenever the manager proxy wants to deny the request.
It does the IPC to the WebProcess and triggers processing of the next request.
(WebKit::UserMediaPermissionRequestManagerProxy::rejectionTimerFired):
We now keep a queue of request instead of request IDs to make the deny code path more consistent.
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
(WebKit::UserMediaPermissionRequestManagerProxy::processNextUserMediaRequestIfNeeded):
(WebKit::UserMediaPermissionRequestManagerProxy::startProcessingUserMediaPermissionRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionRequest):
To make sure we do not process a different request, we keep a pointer to the request and compare it with the current media request.
(WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionInvalidRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionValidRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::viewIsBecomingVisible):
* UIProcess/UserMediaPermissionRequestManagerProxy.h:
(WebKit::UserMediaPermissionRequestManagerProxy::denyRequest):
* UIProcess/UserMediaPermissionRequestProxy.cpp:
(WebKit::setDeviceAsFirst):
(WebKit::UserMediaPermissionRequestProxy::allow):
(WebKit::UserMediaPermissionRequestProxy::deny):
* UIProcess/UserMediaPermissionRequestProxy.h:

Tools:

* TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm:
(-[GetUserMediaRepromptUIDelegate _webView:requestMediaCaptureAuthorization:decisionHandler:]):
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKit/getUserMedia.html:

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

10 months agoFix 64-bit vs 32-bit mismatch in ISOFairPlayStreamingPsshBox.cpp
krollin@apple.com [Wed, 5 Jun 2019 00:40:35 +0000 (00:40 +0000)]
Fix 64-bit vs 32-bit mismatch in ISOFairPlayStreamingPsshBox.cpp
https://bugs.webkit.org/show_bug.cgi?id=198539
<rdar://problem/51410358>

Reviewed by Alex Christensen.

Both ISOFairPlayStreamingKeyAssetIdBox and
ISOFairPlayStreamingKeyContextBox have Vector<> data members. The
parse() members of these classes call Vector<>::resize() on these
members. In both cases, the type of the parameter passed is a
uint64_t. However, resize() takes a size_t. On some platforms, size_t
is a 32-bit value, leading to a compile-time type mismatch error. Fix
this by changing the type of the value passed to parse() into a
size_t.

No new tests -- no new functionality.

* platform/graphics/avfoundation/ISOFairPlayStreamingPsshBox.cpp:
(WebCore::ISOFairPlayStreamingKeyAssetIdBox::parse):
(WebCore::ISOFairPlayStreamingKeyContextBox::parse):

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

10 months agoFix 64-bit vs 32-bit mismatch in TileController.cpp
krollin@apple.com [Wed, 5 Jun 2019 00:26:10 +0000 (00:26 +0000)]
Fix 64-bit vs 32-bit mismatch in TileController.cpp
https://bugs.webkit.org/show_bug.cgi?id=198540
<rdar://problem/51410851>

Reviewed by Alex Christensen.

TileController::blankPixelCountForTiles calculates its result as a
uint64_t, but returns it as an unsigned. The former is a 64-bit value,
while the latter can be a 32-bit value on some platforms. This
mismatch can lead to a compile-time error. Fix this by explicitly
casting the 64-bit value to an "unsigned".

No new tests -- no new functionality.

* platform/graphics/ca/TileController.cpp:
(WebCore::TileController::blankPixelCountForTiles):

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

10 months agoUnreviewed, rolling out r246086.
commit-queue@webkit.org [Wed, 5 Jun 2019 00:23:59 +0000 (00:23 +0000)]
Unreviewed, rolling out r246086.
https://bugs.webkit.org/show_bug.cgi?id=198549

Causing Internal build failures (Requested by ShawnRoberts on
#webkit).

Reverted changeset:

"Remove some unused selection code"
https://bugs.webkit.org/show_bug.cgi?id=198451
https://trac.webkit.org/changeset/246086

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

10 months agoLayout test landed flaky in 245873 [ Release ] http/wpt/service-workers/service-worke...
youenn@apple.com [Wed, 5 Jun 2019 00:11:10 +0000 (00:11 +0000)]
Layout test landed flaky in 245873 [ Release ] http/wpt/service-workers/service-worker-networkprocess-crash.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=198435
<rdar://problem/51314295>

Reviewed by Alex Christensen.

Make the test more robust by retrying the null test more than once.

* http/wpt/service-workers/service-worker-networkprocess-crash-expected.txt:
* http/wpt/service-workers/service-worker-networkprocess-crash.html:

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

10 months agoTurn on background color estimation for all link indicators
timothy_horton@apple.com [Tue, 4 Jun 2019 23:44:48 +0000 (23:44 +0000)]
Turn on background color estimation for all link indicators
https://bugs.webkit.org/show_bug.cgi?id=198547
<rdar://problem/51140196>

Reviewed by Dean Jackson.

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

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

10 months agoCrash when calling XMLHttpRequest.setRequestHeader() in a worker
cdumez@apple.com [Tue, 4 Jun 2019 23:31:34 +0000 (23:31 +0000)]
Crash when calling XMLHttpRequest.setRequestHeader() in a worker
https://bugs.webkit.org/show_bug.cgi?id=198534
<rdar://problem/51393912>

Reviewed by Alex Christensen.

Source/WebCore:

Make sure the script execution context is a Document because calling document()
to get the settings.

Test: fast/workers/worker-xhr-setRequestHeader.html

* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::setRequestHeader):

LayoutTests:

Add layout test coverage.

* fast/workers/resources/worker-xhr-setRequestHeader.js: Added.
* fast/workers/worker-xhr-setRequestHeader-expected.txt: Added.
* fast/workers/worker-xhr-setRequestHeader.html: Added.

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

10 months agoRemove some unused selection code
timothy_horton@apple.com [Tue, 4 Jun 2019 23:27:30 +0000 (23:27 +0000)]
Remove some unused selection code
https://bugs.webkit.org/show_bug.cgi?id=198451

Reviewed by Wenson Hsieh.

* Platform/spi/ios/UIKitSPI.h:
* Shared/ios/GestureTypes.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(toGestureType):
(toUIWKGestureType):
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView actionSheetAssistant:shareElementWithURL:rect:]):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::selectWithGesture):
(WebKit::WebPage::selectTextWithGranularityAtPoint):
(WebKit::canShrinkToTextSelection): Deleted.
(WebKit::hasCustomLineHeight): Deleted.
(WebKit::WebPage::rangeForWebSelectionAtPosition): Deleted.

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

10 months agoREGRESSION (r244557): Leak of WKNSString in WTR::runOpenPanel() while running WebKit...
ddkilzer@apple.com [Tue, 4 Jun 2019 22:56:37 +0000 (22:56 +0000)]
REGRESSION (r244557): Leak of WKNSString in WTR::runOpenPanel() while running WebKit layout tests
<https://webkit.org/b/198538>
<rdar://problem/51407719>

Reviewed by Darin Adler.

* WebKitTestRunner/TestController.cpp:
(WTR::runOpenPanel): Use adoptWK() to fix the leak.

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

10 months agoUnreviewed, update exception scope for putByIndexBeyondVectorLength
ysuzuki@apple.com [Tue, 4 Jun 2019 22:08:43 +0000 (22:08 +0000)]
Unreviewed, update exception scope for putByIndexBeyondVectorLength
https://bugs.webkit.org/show_bug.cgi?id=198477

* runtime/JSObject.cpp:
(JSC::JSObject::putByIndexBeyondVectorLength):

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

10 months agoSticky positioning is jumpy in many overflow cases
antti@apple.com [Tue, 4 Jun 2019 21:53:57 +0000 (21:53 +0000)]
Sticky positioning is jumpy in many overflow cases
https://bugs.webkit.org/show_bug.cgi?id=198532
<rdar://problem/51400532>

Reviewed by Simon Fraser.

Source/WebCore:

Tests: scrollingcoordinator/ios/sticky-overflow-no-stacking-context-no-stick-1.html
       scrollingcoordinator/ios/sticky-overflow-no-stacking-context-no-stick-2.html
       scrollingcoordinator/ios/sticky-overflow-no-stacking-context-stick-1.html
       scrollingcoordinator/ios/sticky-overflow-no-stacking-context-stick-2.html
       scrollingcoordinator/ios/sticky-overflow-stacking-context-no-stick.html
       scrollingcoordinator/ios/sticky-overflow-stacking-context-stick.html

* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::notifyRelatedNodesAfterScrollPositionChange):
(WebCore::ScrollingTree::notifyRelatedNodesRecursive):

Simplify for relatedNodeScrollPositionDidChange removal.

* page/scrolling/ScrollingTree.h:
* page/scrolling/ScrollingTreeNode.cpp:
(WebCore::ScrollingTreeNode::relatedNodeScrollPositionDidChange): Deleted.
* page/scrolling/ScrollingTreeNode.h:
* page/scrolling/cocoa/ScrollingTreeFixedNode.mm:
(WebCore::ScrollingTreeFixedNode::applyLayerPositions):
* page/scrolling/cocoa/ScrollingTreePositionedNode.h:
* page/scrolling/cocoa/ScrollingTreePositionedNode.mm:
(WebCore::ScrollingTreePositionedNode::scrollOffsetSinceLastCommit const):

Factor into a function.

(WebCore::ScrollingTreePositionedNode::applyLayerPositions):
(WebCore::ScrollingTreePositionedNode::relatedNodeScrollPositionDidChange): Deleted.

We can't bail out based on changed node as that makes us compute different positions based on what the change root is.
Since all relatedNodeScrollPositionDidChange functions now always simply call applyLayerPositions we can remove the whole thing.

* page/scrolling/cocoa/ScrollingTreeStickyNode.mm:
(WebCore::ScrollingTreeStickyNode::applyLayerPositions):

Implement taking into account that the containing scroller may not be our ancestor.

LayoutTests:

* scrollingcoordinator/ios/sticky-overflow-no-stacking-context-no-stick-1-expected.html: Added.
* scrollingcoordinator/ios/sticky-overflow-no-stacking-context-no-stick-1.html: Added.
* scrollingcoordinator/ios/sticky-overflow-no-stacking-context-no-stick-2-expected.html: Added.
* scrollingcoordinator/ios/sticky-overflow-no-stacking-context-no-stick-2.html: Added.
* scrollingcoordinator/ios/sticky-overflow-no-stacking-context-stick-1-expected.html: Added.
* scrollingcoordinator/ios/sticky-overflow-no-stacking-context-stick-1.html: Added.
* scrollingcoordinator/ios/sticky-overflow-no-stacking-context-stick-2-expected.html: Added.
* scrollingcoordinator/ios/sticky-overflow-no-stacking-context-stick-2.html: Added.
* scrollingcoordinator/ios/sticky-overflow-stacking-context-no-stick-expected.html: Added.
* scrollingcoordinator/ios/sticky-overflow-stacking-context-no-stick.html: Added.
* scrollingcoordinator/ios/sticky-overflow-stacking-context-stick-expected.html: Added.
* scrollingcoordinator/ios/sticky-overflow-stacking-context-stick.html: Added.

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

10 months ago[ews-app] Add authentication while fetching bugs
aakash_jain@apple.com [Tue, 4 Jun 2019 21:40:00 +0000 (21:40 +0000)]
[ews-app] Add authentication while fetching bugs
https://bugs.webkit.org/show_bug.cgi?id=198415
<rdar://problem/51298710>

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-app/ews/common/bugzilla.py:
(Bugzilla._fetch_attachment_json): Use api_key if configured in environment variable.
(BugzillaBeautifulSoup.authenticate): Method to authenticate, logic copied from webkitpy/common/net/bugzilla/bugzilla.py
(BugzillaBeautifulSoup._load_query):

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

10 months ago[ews-build] Do not display unnecessary steps in the Buildbot build page UI
aakash_jain@apple.com [Tue, 4 Jun 2019 21:27:07 +0000 (21:27 +0000)]
[ews-build] Do not display unnecessary steps in the Buildbot build page UI
https://bugs.webkit.org/show_bug.cgi?id=198218
<rdar://problem/51104544>

Reviewed by Jonathan Bedard.

* BuildSlaveSupport/ews-build/steps.py:

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

10 months agoWKWebsiteDataStore API fails to fetch web storage data for non-persistent data store
sihui_liu@apple.com [Tue, 4 Jun 2019 20:54:31 +0000 (20:54 +0000)]
WKWebsiteDataStore API fails to fetch web storage data for non-persistent data store
https://bugs.webkit.org/show_bug.cgi?id=198317
Source/WebKit:

<rdar://problem/51244662>

Reviewed by Alex Christensen.

Use LocalStorageNameSpace instead of SessionStorageNameSpace for localStorage in ephemeral session or
websiteDataStore.

Reland r245943 as test has been fixed in r246012.

* NetworkProcess/WebStorage/StorageManager.cpp:
(WebKit::StorageManager::StorageArea::isEphemeral const):
(WebKit::StorageManager::StorageArea::removeListener):
(WebKit::StorageManager::StorageArea::setItems):
(WebKit::StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded const):
(WebKit::StorageManager::LocalStorageNamespace::~LocalStorageNamespace):
(WebKit::StorageManager::LocalStorageNamespace::getOrCreateStorageArea):
(WebKit::StorageManager::LocalStorageNamespace::clearAllStorageAreas):
(WebKit::StorageManager::LocalStorageNamespace::ephemeralOrigins const):
(WebKit::StorageManager::LocalStorageNamespace::cloneTo):
(WebKit::StorageManager::StorageManager):
(WebKit::StorageManager::cloneSessionStorageNamespace):
(WebKit::StorageManager::getLocalStorageOrigins):
(WebKit::StorageManager::getLocalStorageOriginDetails):
(WebKit::StorageManager::deleteLocalStorageEntriesForOrigin):
(WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
(WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
(WebKit::StorageManager::createLocalStorageMap):
(WebKit::StorageManager::createTransientLocalStorageMap):
(WebKit::StorageManager::createSessionStorageMap):
(WebKit::StorageManager::destroyStorageMap):
(WebKit::StorageManager::getValues):
(WebKit::StorageManager::setItem):
(WebKit::StorageManager::removeItem):
(WebKit::StorageManager::clear):
(WebKit::StorageManager::suspend):
(WebKit::StorageManager::resume):
(WebKit::StorageManager::StorageArea::isSessionStorage const): Deleted.
* NetworkProcess/WebStorage/StorageManager.h:
(): Deleted.
* WebProcess/WebStorage/StorageAreaMap.cpp:
(WebKit::StorageAreaMap::dispatchStorageEvent):
(WebKit::StorageAreaMap::dispatchSessionStorageEvent):
(WebKit::StorageAreaMap::connect):
* WebProcess/WebStorage/StorageNamespaceImpl.cpp:
(WebKit::StorageNamespaceImpl::createEphemeralLocalStorageNamespace):
(WebKit::StorageNamespaceImpl::createLocalStorageNamespace):
* WebProcess/WebStorage/StorageNamespaceImpl.h:
* WebProcess/WebStorage/WebStorageNamespaceProvider.cpp:
(WebKit::WebStorageNamespaceProvider::createLocalStorageNamespace):

Tools:

Reviewed by Alex Christensen.

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

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

10 months agoUploading third-party applications from /Applications needs additional syscall access
achristensen@apple.com [Tue, 4 Jun 2019 19:37:14 +0000 (19:37 +0000)]
Uploading third-party applications from /Applications needs additional syscall access
https://bugs.webkit.org/show_bug.cgi?id=198537
<rdar://problem/51164741>

Reviewed by Brent Fulgham.

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

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

10 months ago[WinCairo] Implement cpu and memory measuring functions.
commit-queue@webkit.org [Tue, 4 Jun 2019 19:15:21 +0000 (19:15 +0000)]
[WinCairo] Implement cpu and memory measuring functions.
https://bugs.webkit.org/show_bug.cgi?id=198466

Patch by Takashi Komori <Takashi.Komori@sony.com> on 2019-06-04
Reviewed by Don Olmstead.

.:

* Source/cmake/OptionsWin.cmake:

Source/WebCore:

Tests: inspector/memory/tracking.html
       inspector/cpu-profiler/tracking.html

* PlatformWinCairo.cmake:
* page/ResourceUsageThread.h:
* page/win/ResourceUsageOverlayWin.cpp: Copied from Tools/WebKitTestRunner/InjectedBundle/win/TestRunnerWin.cpp.
(WebCore::ResourceUsageOverlay::platformInitialize):
(WebCore::ResourceUsageOverlay::platformDestroy):
* page/win/ResourceUsageThreadWin.cpp: Added.
(WebCore::ResourceUsageThread::platformSaveStateBeforeStarting):
(WebCore::fileTimeToUint64):
(WebCore::getCurrentCpuTime):
(WebCore::cpuUsage):
(WebCore::memoryUsage):
(WebCore::ResourceUsageThread::platformCollectCPUData):
(WebCore::ResourceUsageThread::platformCollectMemoryData):

Tools:

* WebKitTestRunner/InjectedBundle/win/TestRunnerWin.cpp:
(WTR::TestRunner::inspectorTestStubURL):

LayoutTests:

* platform/wincairo/TestExpectations:

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

10 months agoArgument elimination should check transitive dependents for interference
tzagallo@apple.com [Tue, 4 Jun 2019 19:06:32 +0000 (19:06 +0000)]
Argument elimination should check transitive dependents for interference
https://bugs.webkit.org/show_bug.cgi?id=198520
<rdar://problem/50863343>

Reviewed by Filip Pizlo.

JSTests:

* stress/argument-elimination-inline-rest-past-kill.js: Added.
(f2):
(f3):

Source/JavaScriptCore:

Consider the following program:

    a: CreateRest
    -->
        b: CreateRest
    <--
    c: Spread(@a)
    d: Spread(@b)
    e: NewArrayWithSpread(@a, @b)
    f: KillStack(locX)
    g: LoadVarargs(@e)

Suppose @b reads locX, then we cannot transform @e to PhantomNewArraySpread, since that would
move the stack access from @b into @g, and that stack location is no longer valid at that point.

We fix that by computing a set of all inline call frames that any argument elimination candidate
depends on and checking each of them for interference in `eliminateCandidatesThatInterfere`.

* dfg/DFGArgumentsEliminationPhase.cpp:

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

10 months ago[Pointer Events] Only allow pointer capture if the pointer is in the active buttons...
commit-queue@webkit.org [Tue, 4 Jun 2019 19:00:12 +0000 (19:00 +0000)]
[Pointer Events] Only allow pointer capture if the pointer is in the active buttons state
https://bugs.webkit.org/show_bug.cgi?id=198479

Patch by Antoine Quint <graouts@apple.com> on 2019-06-04
Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark WPT progression.

* web-platform-tests/pointerevents/pointerevent_setpointercapture_inactive_button_mouse-expected.txt:

Source/WebCore:

The Pointer Events specification says that pointer capture can only be engaged provided the pointer is
in the active buttons state, which means that it has dispatched a "pointerdown" event more recently than
it has a "pointerup" event.

This is tested by web-platform-tests/pointerevents/pointerevent_setpointercapture_inactive_button_mouse.html.

That test showed a few issues that this patch addresses. First, we would update the pointerIsPressed state to
"true" only after a "pointerdown" event had been dispatched. This is incorrect since setPointerCapture() can,
and is likely to, be called during handling of a "pointerdown" event. So we now call pointerEventWillBeDispatched()
prior to dispatching a PointerEvent with a mouse type, which we only did previously for a PointerEvent with a
touch or pen type. If the event is "pointerdown", we set "pointerIsPressed" to true on the CapturingData object
matching the given pointer, and to false if the event is "pointerup".

Finally, we must also ensure that "pointerIsPressed" is set to true when creating CapturingData for a PointerEvent
with a touch or pen type since these types of pointer events implictly set capture.

* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::setPointerCapture):
(WebCore::PointerCaptureController::dispatchEvent):
(WebCore::PointerCaptureController::pointerEventWillBeDispatched):
(WebCore::PointerCaptureController::pointerEventWasDispatched):

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

10 months ago[JSC] InferredValue should not be a JSCell
ysuzuki@apple.com [Tue, 4 Jun 2019 18:27:59 +0000 (18:27 +0000)]
[JSC] InferredValue should not be a JSCell
https://bugs.webkit.org/show_bug.cgi?id=198407

Reviewed by Filip Pizlo.

Allocating InferredValue as a JSCell is too costly in terms of memory. Gmail has 90000 FunctionExecutables. And each gets
InferredValue, which takes 32 bytes. So it takes 2.7 MB memory footprint.

In this patch, we introduce a new container InferredValue<>. Which is similar to WriteBarrier<> container, but it replaces
the existing InferredValue cells with one pointer size field. The implementation of InferredValue<> is similar to
InlineWatchpointSet. But we encode JSCell* too to the pointer data of InlineWatchpointSet. So sizeof(InferredValue<>) is one
pointer size while it keeps Watchpoint feature and JSCell holder feature.

InferredValue<> needs validation in GC finalize phase. So this patch also makes SymbolTable Iso-allocated.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* bytecode/ObjectAllocationProfileInlines.h:
(JSC::ObjectAllocationProfileBase<Derived>::initializeProfile):
* bytecode/Watchpoint.h:
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::get):
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGClobbersExitState.cpp:
(JSC::DFG::clobbersExitState):
* dfg/DFGDesiredWatchpoints.cpp:
(JSC::DFG::SymbolTableAdaptor::add):
(JSC::DFG::FunctionExecutableAdaptor::add):
(JSC::DFG::DesiredWatchpoints::addLazily):
(JSC::DFG::DesiredWatchpoints::reallyAdd):
(JSC::DFG::DesiredWatchpoints::areStillValid const):
(JSC::DFG::DesiredWatchpoints::dumpInContext const):
(JSC::DFG::InferredValueAdaptor::add): Deleted.
* dfg/DFGDesiredWatchpoints.h:
(JSC::DFG::SymbolTableAdaptor::hasBeenInvalidated):
(JSC::DFG::SymbolTableAdaptor::dumpInContext):
(JSC::DFG::FunctionExecutableAdaptor::hasBeenInvalidated):
(JSC::DFG::FunctionExecutableAdaptor::dumpInContext):
(JSC::DFG::DesiredWatchpoints::isWatched):
(JSC::DFG::InferredValueAdaptor::hasBeenInvalidated): Deleted.
(JSC::DFG::InferredValueAdaptor::dumpInContext): Deleted.
* dfg/DFGObjectAllocationSinkingPhase.cpp:
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileNewFunction):
(JSC::DFG::SpeculativeJIT::compileCreateActivation):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):
* heap/Heap.cpp:
(JSC::Heap::finalizeUnconditionalFinalizers):
* runtime/FunctionExecutable.cpp:
(JSC::FunctionExecutable::FunctionExecutable):
(JSC::FunctionExecutable::finishCreation):
(JSC::FunctionExecutable::visitChildren):
* runtime/FunctionExecutable.h:
* runtime/FunctionExecutableInlines.h: Copied from Source/JavaScriptCore/runtime/InferredValueInlines.h.
(JSC::FunctionExecutable::finalizeUnconditionally):
* runtime/InferredValue.cpp: Removed.
* runtime/InferredValue.h:
(JSC::InferredValue::inferredValue):
(JSC::InferredValue::InferredValue):
(JSC::InferredValue::~InferredValue):
(JSC::InferredValue::stateOnJSThread const):
(JSC::InferredValue::state const):
(JSC::InferredValue::hasBeenInvalidated const):
(JSC::InferredValue::isStillValid const):
(JSC::InferredValue::invalidate):
(JSC::InferredValue::isBeingWatched const):
(JSC::InferredValue::notifyWrite):
(JSC::InferredValue::isThin):
(JSC::InferredValue::isFat):
(JSC::InferredValue::decodeState):
(JSC::InferredValue::encodeState):
(JSC::InferredValue::isThin const):
(JSC::InferredValue::isFat const):
(JSC::InferredValue::fat):
(JSC::InferredValue::fat const):
(JSC::InferredValue::inflate):
(JSC::InferredValue<JSCellType>::InferredValueWatchpointSet::notifyWriteSlow):
(JSC::InferredValue<JSCellType>::notifyWriteSlow):
(JSC::InferredValue<JSCellType>::add):
(JSC::InferredValue<JSCellType>::inflateSlow):
(JSC::InferredValue<JSCellType>::freeFat):
* runtime/InferredValueInlines.h:
(JSC::InferredValue<JSCellType>::finalizeUnconditionally):
(JSC::InferredValue::finalizeUnconditionally): Deleted.
* runtime/JSFunctionInlines.h:
(JSC::JSFunction::createWithInvalidatedReallocationWatchpoint):
* runtime/JSSymbolTableObject.h:
(JSC::JSSymbolTableObject::setSymbolTable):
* runtime/SymbolTable.cpp:
(JSC::SymbolTable::finishCreation):
(JSC::SymbolTable::visitChildren):
* runtime/SymbolTable.h:
* runtime/SymbolTableInlines.h: Copied from Source/JavaScriptCore/runtime/InferredValueInlines.h.
(JSC::SymbolTable::finalizeUnconditionally):
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

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

10 months agoFix 32-bit/64-bit mismatch in PointerCaptureController::elementWasRemoved
krollin@apple.com [Tue, 4 Jun 2019 17:59:51 +0000 (17:59 +0000)]
Fix 32-bit/64-bit mismatch in PointerCaptureController::elementWasRemoved
https://bugs.webkit.org/show_bug.cgi?id=198501
<rdar://problem/51370464>

Reviewed by Chris Dumez.

keyAndValue.key is assigned to pointerId. KeyAndValue.key is a
int64_t, whereas pointerId is a PointerID, aka int32_t. This mismatch
is normally just a warning, but breaks builds where warnings are
treated as errors.

This issue is not encountered in most builds because the warning is
disabled in the majority of build configurations. But there are some
where the warning is not disabled, and so those builds break.

Address this conversion error/warning by explicitly casting
keyAndValue.key to a PointerID (and adding a debug check to make sure
the cast is OK).

No new tests -- no new functionality.

* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::elementWasRemoved):

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

10 months agoArgument elimination should check for negative indices in GetByVal
tzagallo@apple.com [Tue, 4 Jun 2019 17:56:59 +0000 (17:56 +0000)]
Argument elimination should check for negative indices in GetByVal
https://bugs.webkit.org/show_bug.cgi?id=198302
<rdar://problem/51188095>

Reviewed by Filip Pizlo.

JSTests:

* stress/eliminate-arguments-negative-rest-access.js: Added.
(inlinee):
(opt):

Source/JavaScriptCore:

In DFG::ArgumentEliminationPhase, the index is treated as unsigned, but there's no check
for overflow in the addition. In compileGetMyArgumentByVal, there's a check for overflow,
but the index is treated as signed, resulting in an index lower than numberOfArgumentsToSkip.

* dfg/DFGArgumentsEliminationPhase.cpp:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileGetMyArgumentByVal):

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

10 months ago[Pointer Events] Expose navigator.maxTouchPoints
graouts@webkit.org [Tue, 4 Jun 2019 17:45:43 +0000 (17:45 +0000)]
[Pointer Events] Expose navigator.maxTouchPoints
https://bugs.webkit.org/show_bug.cgi?id=198468
<rdar://problem/51273029>

Reviewed by Chris Dumez.

Source/WebCore:

Expose the navigator.maxTouchPoints property when Pointer Events are enabled both at compile-time and run-time.
We return a canned value for this on iOS touch-enabled devices that matches the number of simultaneous touches
supported by the system, which is 5. In fact, iPad support more simultaneous touches, but it doesn't seem worthy
to expose this level of granularity due to fingerprinting practices. In practice, what really matters is returning
0, 1 or more than 1 for this value to identify multi-touch support.

Test: js/dom/navigator-maxtouchpoints.html

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* dom/NavigatorMaxTouchPoints.idl: Added.
* page/Navigator.idl:
* page/Navigator.h:
(WebCore::Navigator::maxTouchPoints const):

LayoutTests:

* js/dom/navigator-maxtouchpoints-expected.txt: Added.
* js/dom/navigator-maxtouchpoints.html: Added.
* platform/mac-highsierra-wk1/fast/dom/navigator-detached-no-crash-expected.txt:
* platform/mac-highsierra/fast/dom/navigator-detached-no-crash-expected.txt:
* platform/mac-wk1/fast/dom/navigator-detached-no-crash-expected.txt:
* platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt:
* platform/win/js/dom/navigator-maxtouchpoints-expected.txt: Added.

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

10 months agoLazily construct the NetworkHTTPSUpgradeChecker
cdumez@apple.com [Tue, 4 Jun 2019 17:09:04 +0000 (17:09 +0000)]
Lazily construct the NetworkHTTPSUpgradeChecker
https://bugs.webkit.org/show_bug.cgi?id=198500

Reviewed by Alex Christensen.

Lazily construct the NetworkHTTPSUpgradeChecker since the feature is off by default and this
avoids unnecessarily opening its database in the common case.

* NetworkProcess/NetworkProcess.h:
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::networkHTTPSUpgradeChecker):

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

10 months agoREGRESSION (r245913) [ Debug ] ASSERTION FAILED: m_swConnectionsByIdentifier.contains...
youenn@apple.com [Tue, 4 Jun 2019 16:11:38 +0000 (16:11 +0000)]
REGRESSION (r245913) [ Debug ] ASSERTION FAILED: m_swConnectionsByIdentifier.contains(connection.serverConnectionIdentifier()) Layout Test http/wpt/service-workers/update-service-worker.https.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=198434
<rdar://problem/51313917>

Reviewed by Alex Christensen.

Iterate through the connectionID-based connection map instead of the sessionID-based map to notify them their connection is lost.

* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::didClose):

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

10 months ago[LFC][IFC] Decouple float placement and line shrinking
zalan@apple.com [Tue, 4 Jun 2019 15:52:25 +0000 (15:52 +0000)]
[LFC][IFC] Decouple float placement and line shrinking
https://bugs.webkit.org/show_bug.cgi?id=198528
<rdar://problem/51397638>

Reviewed by Antti Koivisto.

In LineLayout::placeInlineItems() float handling should be only about shrinking the current line, the actual
float placement should happen later when we construct the the display boxes/runs. It enables the preferred width
computation to call placeInlineItems() to gather line widths without accidentally mutating the layout context.

* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
(WebCore::Layout::InlineFormattingContext::LineLayout::layout const):
(WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const):
(WebCore::Layout::InlineFormattingContext::LineLayout::handleFloat const): Deleted.
* layout/inlineformatting/InlineItem.h:

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

10 months ago[LFC][IFC] Add hard line break handling to LineBreaker
zalan@apple.com [Tue, 4 Jun 2019 15:49:56 +0000 (15:49 +0000)]
[LFC][IFC] Add hard line break handling to LineBreaker
https://bugs.webkit.org/show_bug.cgi?id=198503
<rdar://problem/51373482>

Reviewed by Antti Koivisto.

LineBreaker should simply return BreakingContext::Keep with the breaking opportunity of yes.

* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
* layout/inlineformatting/InlineLineBreaker.cpp:
(WebCore::Layout::LineBreaker::breakingContext):
(WebCore::Layout::LineBreaker::wordBreakingBehavior const):
(WebCore::Layout::LineBreaker::isAtBreakingOpportunity):
* layout/inlineformatting/InlineLineBreaker.h:

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

10 months ago[LFC][IFC] Remove InlineItem::width
zalan@apple.com [Tue, 4 Jun 2019 15:48:04 +0000 (15:48 +0000)]
[LFC][IFC] Remove InlineItem::width
https://bugs.webkit.org/show_bug.cgi?id=198502
<rdar://problem/51371744>

Reviewed by Antti Koivisto.

InlineItems are supposd to work across subsequent layouts (and in preferred width computation as well) so they should
not hold on to layout information (run width). This would not work with split runs either.

* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::UncommittedContent::runs):
(WebCore::Layout::UncommittedContent::isEmpty const):
(WebCore::Layout::UncommittedContent::size const):
(WebCore::Layout::UncommittedContent::add):
(WebCore::Layout::UncommittedContent::reset):
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
(WebCore::Layout::InlineFormattingContext::LineLayout::computedIntrinsicWidth const):
(WebCore::Layout::InlineFormattingContext::LineLayout::createDisplayRuns const):
(): Deleted.
(WebCore::Layout::InlineFormattingContext::LineLayout::commitInlineItemToLine const): Deleted.
* layout/inlineformatting/InlineItem.h:
(WebCore::Layout::InlineItem::style const):
(): Deleted.
(WebCore::Layout::InlineItem::setWidth): Deleted.
(WebCore::Layout::InlineItem::width const): Deleted.

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

10 months ago[iOS] UIProcess' background task expiration handler may get called after the app...
cdumez@apple.com [Tue, 4 Jun 2019 15:46:45 +0000 (15:46 +0000)]
[iOS] UIProcess' background task expiration handler may get called after the app is foreground again
https://bugs.webkit.org/show_bug.cgi?id=198380
<rdar://problem/49762471>

Reviewed by Geoff Garen.

UIProcess' background task expiration handler may get called after the app is foreground again. When
this happens, we already have a foreground assertion on behalf of the WebContent process, and the view
is visible. We would send the WillSuspendImminently IPC to the WebContent process, which would freeze
its layers, even though it is visible on screen.

To address the issue, we now check if the app is visible in the expiration handler. If it is visible,
we do not notify clients of imminent suspension. Instead, we end the background task right away and
call _updateBackgroundTask asynchronously to start a new background task if necessary.

* UIProcess/ios/ProcessAssertionIOS.mm:
(-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]):

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

10 months ago[LFC][IFC] Move run width measuring out of LineBreaker
zalan@apple.com [Tue, 4 Jun 2019 15:26:04 +0000 (15:26 +0000)]
[LFC][IFC] Move run width measuring out of LineBreaker
https://bugs.webkit.org/show_bug.cgi?id=198491
<rdar://problem/51363554>

Reviewed by Antti Koivisto.

LineBreaker should not need to deal with measuring runs.
This is also in preparation for removing InlineItem::width().

* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::inlineItemWidth):
(WebCore::Layout::InlineFormattingContext::LineLayout::placeInlineItems const):
(WebCore::Layout::InlineFormattingContext::LineLayout::computedIntrinsicWidth const):
* layout/inlineformatting/InlineLineBreaker.cpp:
(WebCore::Layout::LineBreaker::breakingContext):
(WebCore::Layout::LineBreaker::LineBreaker): Deleted.
(WebCore::Layout::LineBreaker::runWidth const): Deleted.
(WebCore::Layout::LineBreaker::textWidth const): Deleted.
* layout/inlineformatting/InlineLineBreaker.h:

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

10 months ago[LFC][IFC] Remove redundant InlineItem::width() calls.
zalan@apple.com [Tue, 4 Jun 2019 14:54:52 +0000 (14:54 +0000)]
[LFC][IFC] Remove redundant InlineItem::width() calls.
https://bugs.webkit.org/show_bug.cgi?id=198489
<rdar://problem/51360390>

Reviewed by Antti Koivisto.

This is in preparation for removing InlineItem::width().

* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::LineLayout::handleFloat const):
(WebCore::Layout::InlineFormattingContext::LineLayout::commitInlineItemToLine const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::appendNonBreakableSpace):
(WebCore::Layout::Line::appendInlineContainerStart):
(WebCore::Layout::Line::appendInlineContainerEnd):
* layout/inlineformatting/InlineLine.h:

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

10 months agoThe "mouseenter" and "pointerenter" events are fired from the bottom up
commit-queue@webkit.org [Tue, 4 Jun 2019 14:34:11 +0000 (14:34 +0000)]
The "mouseenter" and "pointerenter" events are fired from the bottom up
https://bugs.webkit.org/show_bug.cgi?id=198036
<rdar://problem/50940350>

Patch by Antoine Quint <graouts@apple.com> on 2019-06-04
Reviewed by Darin Adler.

Source/WebCore:

Ensure "mouseenter" and "pointerenter" events are dispatched from the bottom up to match the UI Events spec
at https://w3c.github.io/uievents/#events-mouseevent-event-order. We also fix the issue where "pointerevent"
and "pointerleave" events were dispatched as bubbling events on iOS which is not correct and was caught by the
new iOS test.

Tests: pointerevents/ios/enter-leave-order.html
       pointerevents/mouse/enter-leave-order.html

* dom/ios/PointerEventIOS.cpp:
(WebCore::typeCanBubble):
(WebCore::PointerEvent::PointerEvent):
* page/EventHandler.cpp:
(WebCore::EventHandler::updateMouseEventTargetNode):
* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::dispatchEventForTouchAtIndex):

LayoutTests:

* fast/events/mouseenter-mouseleave-capture-expected.txt:
* fast/events/mouseenter-mouseleave-expected.txt:
* fast/events/mouseenterleave-on-subframe-expected.txt:
* fast/events/shadow-event-path-expected.txt:
* fast/shadow-dom/mouseenter-mouseleave-across-shadow-boundary-expected.txt:
* fast/shadow-dom/mouseenter-mouseleave-inside-shadow-tree-expected.txt:
* fast/shadow-dom/mouseenter-mouseleave-on-slot-parent-expected.txt:
* platform/mac-wk1/TestExpectations:
* platform/mac-wk2/fast/events/shadow-event-path-expected.txt:
* platform/mac/fast/events/shadow-event-path-2-expected.txt:
* pointerevents/ios/enter-leave-order-expected.txt: Added.
* pointerevents/ios/enter-leave-order.html: Added.
* pointerevents/mouse/enter-leave-order-expected.txt: Added.
* pointerevents/mouse/enter-leave-order.html: Added.

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

10 months agoJSScript should not keep bytecode cache in memory
tzagallo@apple.com [Tue, 4 Jun 2019 11:14:10 +0000 (11:14 +0000)]
JSScript should not keep bytecode cache in memory
https://bugs.webkit.org/show_bug.cgi?id=198482

Reviewed by Saam Barati.

When JSScript writes to the cache, we keep the in-memory serialized bytecode alive.
Instead, we should only ever hold the memory mapped bytecode cache to avoid using
too much memory.

* API/JSScript.mm:
(-[JSScript writeCache:]):
* API/tests/testapi.mm:
(testBytecodeCacheWithSyntaxError):
* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* jsc.cpp:
* parser/SourceProvider.h:
* runtime/BytecodeCacheError.cpp: Added.
(JSC::BytecodeCacheError::StandardError::isValid const):
(JSC::BytecodeCacheError::StandardError::message const):
(JSC::BytecodeCacheError::WriteError::isValid const):
(JSC::BytecodeCacheError::WriteError::message const):
(JSC::BytecodeCacheError::operator=):
(JSC::BytecodeCacheError::isValid const):
(JSC::BytecodeCacheError::message const):
* runtime/BytecodeCacheError.h: Added.
(JSC::BytecodeCacheError::StandardError::StandardError):
(JSC::BytecodeCacheError::WriteError::WriteError):
* runtime/CachedBytecode.h:
(JSC::CachedBytecode::create):
* runtime/CachedTypes.cpp:
(JSC::Encoder::Encoder):
(JSC::Encoder::release):
(JSC::Encoder::releaseMapped):
(JSC::encodeCodeBlock):
(JSC::encodeFunctionCodeBlock):
* runtime/CachedTypes.h:
* runtime/CodeCache.cpp:
(JSC::serializeBytecode):
* runtime/CodeCache.h:
* runtime/Completion.cpp:
(JSC::generateProgramBytecode):
(JSC::generateModuleBytecode):
* runtime/Completion.h:

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

10 months ago[misc] Remove JSCOnly ARMv7 Traditional bot
zandobersek@gmail.com [Tue, 4 Jun 2019 10:37:58 +0000 (10:37 +0000)]
[misc] Remove JSCOnly ARMv7 Traditional bot
https://bugs.webkit.org/show_bug.cgi?id=198524

Reviewed by Carlos Garcia Campos.

This is not a supported configuration anymore, so the buildbot slave can
be removed from configuration.

* BuildSlaveSupport/build.webkit.org-config/config.json:
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:
(WebKitBuildbot):
* BuildSlaveSupport/build.webkit.org-config/steps_unittest.py:

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

10 months ago[GTK] Crash when re-entering AC mode after r245957
carlosgc@webkit.org [Tue, 4 Jun 2019 10:04:15 +0000 (10:04 +0000)]
[GTK] Crash when re-entering AC mode after r245957
https://bugs.webkit.org/show_bug.cgi?id=198522

Reviewed by Žan Doberšek.

When AcceleratedBackingStoreWayland::displayBuffer() is called and we have already left AC mode, we early
dispatch the image and release it. The problem is that images are reused, so the given image can be the
committed one. In that case we end up freeing it again in the next AcceleratedBackingStoreWayland::paint()
call.

* UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
(WebKit::AcceleratedBackingStoreWayland::displayBuffer): Do not release the given image if it's the committed one.

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

10 months agoJS wrapper of target in ResizeObserverEntry/ResizeObserver shouldn't get collected...
commit-queue@webkit.org [Tue, 4 Jun 2019 07:38:17 +0000 (07:38 +0000)]
JS wrapper of target in ResizeObserverEntry/ResizeObserver shouldn't get collected ahead
https://bugs.webkit.org/show_bug.cgi?id=197457

Patch by Cathie Chen <cathiechen@igalia.com> on 2019-06-04
Reviewed by Ryosuke Niwa.

Source/WebCore:

Add JSCustomMarkFunction to make sure JS wrappers wouldn't be collected when JSResizeObserverEntry live.

For ResizeObserver, if targets are removed, it will get fired for the last time. We also need to keep these JS
wrappers live. So add these targets to a GCReachableRef list once they're observed.

Add element-leak.html to test the targets with `entry.target.myEntry = entry` could be released properly.

Tests: resize-observer/element-leak.html
       resize-observer/resize-observer-entry-keeps-js-wrapper-of-target-alive.html
       resize-observer/resize-observer-keeps-js-wrapper-of-target-alive.html

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSResizeObserverEntryCustom.cpp: Added.
(WebCore::JSResizeObserverEntry::visitAdditionalChildren):
* page/ResizeObserver.cpp:
(WebCore::ResizeObserver::observe):
(WebCore::ResizeObserver::removeAllTargets):
(WebCore::ResizeObserver::removeObservation):
(WebCore::ResizeObserver::stop):
* page/ResizeObserver.h:
* page/ResizeObserverEntry.idl:

LayoutTests:

* platform/win/TestExpectations:
* resize-observer/element-leak-expected.txt: Added.
* resize-observer/element-leak.html: Added.
* resize-observer/resize-observer-entry-keeps-js-wrapper-of-target-alive-expected.txt: Added.
* resize-observer/resize-observer-entry-keeps-js-wrapper-of-target-alive.html: Added.
* resize-observer/resize-observer-keeps-js-wrapper-of-target-alive-expected.txt: Added.
* resize-observer/resize-observer-keeps-js-wrapper-of-target-alive.html: Added.
* resize-observer/resources/element-leak-frame.html: Added.

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

10 months ago[Apple Pay] Disable script injection when canMakePayment APIs are called and return...
aestes@apple.com [Tue, 4 Jun 2019 06:36:05 +0000 (06:36 +0000)]
[Apple Pay] Disable script injection when canMakePayment APIs are called and return true
https://bugs.webkit.org/show_bug.cgi?id=198448
<rdar://problem/51323694>

Reviewed by Alex Christensen.

Source/WebCore:

Previously, only an active Apple Pay session would disable script injection in restricted
WKWebViews. However, this can result in websites rendering non-functional Apple Pay buttons
due to the race between the hosting app calling -evaluateJavaScript:completionHandler: and
the website calling canMakePayment APIs to determine whether to draw a button.

This patch makes it so that, if a website calls ApplePaySession's canMakePayments or
canMakePaymentsWithActiveCard, or PaymentRequest's canMakePayment, in a web view that has no
injected scripts, and those calls return true, future script injections from the hosting app
will be blocked.

Also, this patch removes the restrictions on the openPaymentSetup, supportsVersion, and
validatedPaymentNetwork APIs, since those APIs do not reveal transaction information and are
not used to determine whether to draw buttons.

Added new API tests.

* Modules/applepay/PaymentCoordinator.cpp:
(WebCore::PaymentCoordinator::supportsVersion const):
(WebCore::PaymentCoordinator::canMakePayments):
(WebCore::PaymentCoordinator::canMakePaymentsWithActiveCard):
(WebCore::PaymentCoordinator::openPaymentSetup):
(WebCore::PaymentCoordinator::beginPaymentSession):
(WebCore::PaymentCoordinator::validatedPaymentNetwork const):
(WebCore::PaymentCoordinator::setApplePayIsActiveIfAllowed const):
(WebCore::PaymentCoordinator::shouldAllowUserAgentScripts const):
(WebCore::PaymentCoordinator::shouldAllowApplePay const): Deleted.
* Modules/applepay/PaymentCoordinator.h:
* dom/Document.cpp:
(WebCore::Document::isApplePayActive const):
(WebCore::Document::setApplePayIsActive):
(WebCore::Document::hasStartedApplePaySession const): Deleted.
(WebCore::Document::setHasStartedApplePaySession): Deleted.
* dom/Document.h:
* testing/Internals.cpp:
(WebCore::Internals::setApplePayIsActive):
(WebCore::Internals::setHasStartedApplePaySession): Deleted.
* testing/Internals.h:
* testing/Internals.idl:

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/ApplePay.mm:
(-[TestApplePayAvailableScriptMessageHandler userContentController:didReceiveScriptMessage:]):
(-[TestApplePayActiveSessionScriptMessageHandler userContentController:didReceiveScriptMessage:]):
(TestWebKitAPI::TEST):
(TestWebKitAPI::runActiveSessionTest):
(-[TestApplePayScriptMessageHandler initWithAPIsAvailableExpectation:canMakePaymentsExpectation:]): Deleted.
(-[TestApplePayScriptMessageHandler userContentController:didReceiveScriptMessage:]): Deleted.
* TestWebKitAPI/Tests/WebKitCocoa/apple-pay-active-session.html:
* TestWebKitAPI/Tests/WebKitCocoa/apple-pay-availability-existing-object.html: Added.
* TestWebKitAPI/Tests/WebKitCocoa/apple-pay-availability-in-iframe.html:
* TestWebKitAPI/Tests/WebKitCocoa/apple-pay-availability.html:
* TestWebKitAPI/Tests/WebKitCocoa/apple-pay-can-make-payment.html: Added.
* TestWebKitAPI/Tests/WebKitCocoa/apple-pay-can-make-payments-with-active-card.html: Added.
* TestWebKitAPI/Tests/WebKitCocoa/apple-pay-can-make-payments.html: Added.
* TestWebKitAPI/Tests/WebKitCocoa/apple-pay.js: Added.
(applePayRequestBase):
(applePayPaymentRequest):
(applePayMethod):
* TestWebKitAPI/cocoa/TestProtocol.mm:
(-[TestProtocol startLoading]):

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

10 months ago[iOS] Do not prevent app suspension for more than 20 seconds after getting backgrounded
cdumez@apple.com [Tue, 4 Jun 2019 01:28:36 +0000 (01:28 +0000)]
[iOS] Do not prevent app suspension for more than 20 seconds after getting backgrounded
https://bugs.webkit.org/show_bug.cgi?id=198488
<rdar://problem/50837208>

Reviewed by Geoff Garen.

Do not prevent app suspension for more than 20 seconds after getting backgrounded on iOS. We
do this by implementing our own expiration handler which notifies our child processes of
their imminent suspension before ending the background task that was preventing suspension.

* UIProcess/ios/ProcessAssertionIOS.mm:
(isBackgroundState):
(-[WKProcessAssertionBackgroundTaskManager init]):
(-[WKProcessAssertionBackgroundTaskManager _scheduleTimeoutTask]):
(-[WKProcessAssertionBackgroundTaskManager _cancelTimeoutTask]):
(-[WKProcessAssertionBackgroundTaskManager _backgroundTaskExpired]):
(-[WKProcessAssertionBackgroundTaskManager _updateBackgroundTask]):
(-[WKProcessAssertionBackgroundTaskManager _releaseBackgroundTask]):

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

10 months ago[WHLSL] Parsing and lexing the standard library is slow
rmorisset@apple.com [Tue, 4 Jun 2019 00:25:40 +0000 (00:25 +0000)]
[WHLSL] Parsing and lexing the standard library is slow
https://bugs.webkit.org/show_bug.cgi?id=192890
<rdar://problem/50746335>

Reviewed by Myles Maxfield.

The main idea is to avoid backtracking by instead peeking at the next token (and occasionally at the one after that).
This implies a few things:
- We can replace the stack of tokens by a trivial ring buffer of size 2 (holding the next token and the one after, or WTF::nullopt if we are at the end of the file).
- We now have "completeFooExpression" functions, to avoid having to reparse the prefix of some expression, if we find half-way through what it is.

I also fixed the following parser bug:
- https://bugs.webkit.org/show_bug.cgi?id=198305 [WHLSL] Multiple variables with initializers in a declaration statement crashes the compiler
    which was due to a mistake I made in the grammar

Finally I added two new macros: CONSUME_TYPE and PARSE to eliminate about 500 lines of error propagation boilerplate.

There are still lots of ways of improving the parser and lexer, such as:
- finishing the conversion of tokens in the lexer, not bothering with allocating string views
- make two special tokens Invalid and EOF, to remove the overhead of Optional
- make peekTypes and consumeTypes use templates to avoid constructing a Vector and calling find on it.
- Turn the entire lexer into a proper automata, not going through the same characters again and again (this is certainly the largest win by far)
- Remove the last few pieces of backtracking from the parser.

The current patch is already enough to make parsing the full standard library (something like 85k lines) approximately 260ms.
This is still longer than I would like, but nowhere near the bottleneck any longer because of some other parts of the compiler.

* Modules/webgpu/WHLSL/WHLSLLexer.h:
(WebCore::WHLSL::Lexer::Lexer):
(WebCore::WHLSL::Lexer::consumeToken):
(WebCore::WHLSL::Lexer::peek):
(WebCore::WHLSL::Lexer::peekFurther):
(WebCore::WHLSL::Lexer::state const):
(WebCore::WHLSL::Lexer::setState):
(WebCore::WHLSL::Lexer::unconsumeToken): Deleted.
* Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parse):
(WebCore::WHLSL::Parser::peek):
(WebCore::WHLSL::Parser::peekTypes):
(WebCore::WHLSL::Parser::tryType):
(WebCore::WHLSL::Parser::tryTypes):
(WebCore::WHLSL::Parser::consumeTypes):
(WebCore::WHLSL::Parser::parseConstantExpression):
(WebCore::WHLSL::Parser::parseTypeArgument):
(WebCore::WHLSL::Parser::parseTypeArguments):
(WebCore::WHLSL::Parser::parseTypeSuffixAbbreviated):
(WebCore::WHLSL::Parser::parseTypeSuffixNonAbbreviated):
(WebCore::WHLSL::Parser::parseType):
(WebCore::WHLSL::Parser::parseTypeDefinition):
(WebCore::WHLSL::Parser::parseResourceSemantic):
(WebCore::WHLSL::Parser::parseSpecializationConstantSemantic):
(WebCore::WHLSL::Parser::parseStageInOutSemantic):
(WebCore::WHLSL::Parser::parseSemantic):
(WebCore::WHLSL::Parser::parseQualifiers):
(WebCore::WHLSL::Parser::parseStructureElement):
(WebCore::WHLSL::Parser::parseStructureDefinition):
(WebCore::WHLSL::Parser::parseEnumerationDefinition):
(WebCore::WHLSL::Parser::parseEnumerationMember):
(WebCore::WHLSL::Parser::parseNativeTypeDeclaration):
(WebCore::WHLSL::Parser::parseNumThreadsFunctionAttribute):
(WebCore::WHLSL::Parser::parseAttributeBlock):
(WebCore::WHLSL::Parser::parseParameter):
(WebCore::WHLSL::Parser::parseParameters):
(WebCore::WHLSL::Parser::parseFunctionDefinition):
(WebCore::WHLSL::Parser::parseComputeFunctionDeclaration):
(WebCore::WHLSL::Parser::parseVertexFragmentFunctionDeclaration):
(WebCore::WHLSL::Parser::parseRegularFunctionDeclaration):
(WebCore::WHLSL::Parser::parseOperatorFunctionDeclaration):
(WebCore::WHLSL::Parser::parseFunctionDeclaration):
(WebCore::WHLSL::Parser::parseNativeFunctionDeclaration):
(WebCore::WHLSL::Parser::parseBlock):
(WebCore::WHLSL::Parser::parseBlockBody):
(WebCore::WHLSL::Parser::parseIfStatement):
(WebCore::WHLSL::Parser::parseSwitchStatement):
(WebCore::WHLSL::Parser::parseSwitchCase):
(WebCore::WHLSL::Parser::parseForLoop):
(WebCore::WHLSL::Parser::parseWhileLoop):
(WebCore::WHLSL::Parser::parseDoWhileLoop):
(WebCore::WHLSL::Parser::parseVariableDeclaration):
(WebCore::WHLSL::Parser::parseVariableDeclarations):
(WebCore::WHLSL::Parser::parseStatement):
(WebCore::WHLSL::Parser::parseEffectfulExpression):
(WebCore::WHLSL::Parser::parseEffectfulAssignment):
(WebCore::WHLSL::Parser::parseExpression):
(WebCore::WHLSL::Parser::parseTernaryConditional):
(WebCore::WHLSL::Parser::completeTernaryConditional):
(WebCore::WHLSL::Parser::parseAssignment):
(WebCore::WHLSL::Parser::completeAssignment):
(WebCore::WHLSL::Parser::parsePossibleTernaryConditional):
(WebCore::WHLSL::Parser::parsePossibleLogicalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleLogicalBinaryOperation):
(WebCore::WHLSL::Parser::parsePossibleRelationalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleRelationalBinaryOperation):
(WebCore::WHLSL::Parser::parsePossibleShift):
(WebCore::WHLSL::Parser::completePossibleShift):
(WebCore::WHLSL::Parser::parsePossibleAdd):
(WebCore::WHLSL::Parser::completePossibleAdd):
(WebCore::WHLSL::Parser::parsePossibleMultiply):
(WebCore::WHLSL::Parser::completePossibleMultiply):
(WebCore::WHLSL::Parser::parsePossiblePrefix):
(WebCore::WHLSL::Parser::parsePossibleSuffix):
(WebCore::WHLSL::Parser::parseCallExpression):
(WebCore::WHLSL::Parser::parseTerm):
(WebCore::WHLSL::Parser::parseAddressSpaceType): Deleted.
(WebCore::WHLSL::Parser::parseNonAddressSpaceType): Deleted.
(WebCore::WHLSL::Parser::parseEntryPointFunctionDeclaration): Deleted.
(WebCore::WHLSL::Parser::parseEffectfulPrefix): Deleted.
(WebCore::WHLSL::Parser::parseEffectfulSuffix): Deleted.
* Modules/webgpu/WHLSL/WHLSLParser.h:
(WebCore::WHLSL::Parser::Error::dump const):

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

10 months ago[ Mac WK2 ] TestWebKitAPI.WKWebView.LocalStorageProcessCrashes is a flaky timeout...
sihui_liu@apple.com [Mon, 3 Jun 2019 21:10:36 +0000 (21:10 +0000)]
[ Mac WK2 ] TestWebKitAPI.WKWebView.LocalStorageProcessCrashes is a flaky timeout when run locally.
https://bugs.webkit.org/show_bug.cgi?id=198423
<rdar://problem/51305247>

Reviewed by Youenn Fablet.

IDBDatabase receives error event on network process crash, so we don't need to check it periodically.

* TestWebKitAPI/Tests/WebKitCocoa/local-storage-process-crashes.html:

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

10 months agoAllow resizing of camera video feeds to very small resolutions
youenn@apple.com [Mon, 3 Jun 2019 21:07:45 +0000 (21:07 +0000)]
Allow resizing of camera video feeds to very small resolutions
https://bugs.webkit.org/show_bug.cgi?id=198421

Reviewed by Alex Christensen.

Source/WebCore:

Before the patch, the minimum capture resolution was set to 120.
Since this is a bit arbitrary and there are some use cases for lower resolution,
We now allow down to 1x1 resolution.

Test: fast/mediastream/getUserMedia-video-rescaling.html

* platform/mediastream/RealtimeVideoSource.cpp:
(WebCore::RealtimeVideoSource::updateCapabilities):
Allow 1x1 when computing min/max resolutions.
(WebCore::RealtimeVideoSource::bestSupportedSizeAndFrameRate):
In case width and height are provided, we pick the closest preset that matches and resize accordingly.
If width or height is provided, we pick the closest preset tat matches and applies its aspect ratio.

LayoutTests:

Update tests to expect 1x1 minimum capture resolution.

* fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt:
* fast/mediastream/apply-constraints-video-expected.txt:
* fast/mediastream/apply-constraints-video.html:
* fast/mediastream/get-user-media-constraints-expected.txt:
* fast/mediastream/getUserMedia-video-rescaling-expected.txt: Added.
* fast/mediastream/getUserMedia-video-rescaling.html: Added.

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

10 months agoImplement an internal switch to turn idempotent text autosizing and viewport rules off
wenson_hsieh@apple.com [Mon, 3 Jun 2019 21:07:06 +0000 (21:07 +0000)]
Implement an internal switch to turn idempotent text autosizing and viewport rules off
https://bugs.webkit.org/show_bug.cgi?id=198460
<rdar://problem/51324526>

Reviewed by Tim Horton.

Source/WebCore:

Add a new WebCore setting for viewport shrink-to-fit-content heuristics; additionally, tweak the existing
idempotent text autosizing setting to default to false (this is overridden by preferences at the WebKit layer).

* page/Settings.yaml:

Source/WebKit:

* Shared/WebPreferences.yaml:

Add new preferences to control viewport shrink-to-fit-content and idempotent text autosizing.

* Shared/WebPreferencesDefaultValues.cpp:

Add the non-iOS implementation of defaultTextAutosizingUsesIdempotentMode, and also wrap these functions in the
WebKit namespace.

(WebKit::defaultTextAutosizingUsesIdempotentMode):
(defaultPassiveTouchListenersAsDefaultOnDocument): Deleted.
(defaultCustomPasteboardDataEnabled): Deleted.
* Shared/WebPreferencesDefaultValues.h:

Move some existing default preference value helper functions into the WebKit namespace.

* Shared/ios/WebPreferencesDefaultValuesIOS.mm: Copied from Source/WebKit/Shared/WebPreferencesDefaultValues.cpp.

Add an iOS-specific file for WebPreferencesDefaultValues, so that we can check for the user interface idiom.

(WebKit::defaultTextAutosizingUsesIdempotentMode):
* SourcesCocoa.txt:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::immediatelyShrinkToFitContent):

Add an early return for the case where shrink-to-fit-content is explicitly disabled via the new preference.

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

10 months agoWeb Inspector: remove RemoteObject.prototype.getPropertyDescriptorsAsObject
drousso@apple.com [Mon, 3 Jun 2019 20:58:44 +0000 (20:58 +0000)]
Web Inspector: remove RemoteObject.prototype.getPropertyDescriptorsAsObject
https://bugs.webkit.org/show_bug.cgi?id=198395

Reviewed by Matt Baker.

Source/WebInspectorUI:

When calling `RemoteObject.prototype.getPropertyDescriptorsAsObject`, if one of the returned
property descriptors is named `__proto__`, it will replace the `__proto__` of the plain
object created for that function with the `WI.PropertyDescriptor` itself, altering the
prototype chain.

* UserInterface/Protocol/RemoteObject.js:
(WI.RemoteObject.prototype.getPropertyDescriptorsAsObject): Deleted.
* UserInterface/Models/AuditTestCase.js:
(WI.AuditTestCase.prototype.async run.async parseResponse.async resultArrayForEach):
* UserInterface/Views/ErrorObjectView.js:
(WI.ErrorObjectView.prototype.update):

LayoutTests:

* inspector/runtime/awaitPromise.html:

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

10 months agoImplement imagesrcset and imagesizes attributes on link rel=preload
commit-queue@webkit.org [Mon, 3 Jun 2019 20:49:53 +0000 (20:49 +0000)]
Implement imagesrcset and imagesizes attributes on link rel=preload
https://bugs.webkit.org/show_bug.cgi?id=192950

Patch by Rob Buis <rbuis@igalia.com> on 2019-06-03
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Import relevant tests for this feature.

* web-platform-tests/preload/dynamic-adding-preload-imagesrcset-expected.txt: Added.
* web-platform-tests/preload/dynamic-adding-preload-imagesrcset.html: Added.
* web-platform-tests/preload/link-header-preload-expected.txt: Added.
* web-platform-tests/preload/link-header-preload-imagesrcset-expected.txt: Added.
* web-platform-tests/preload/link-header-preload-imagesrcset.html: Added.
* web-platform-tests/preload/link-header-preload-imagesrcset.html.headers: Added.
* web-platform-tests/preload/link-header-preload-nonce-expected.txt: Added.
* web-platform-tests/preload/link-header-preload-nonce.html: Added.
* web-platform-tests/preload/link-header-preload-nonce.html.headers: Added.
* web-platform-tests/preload/link-header-preload.html: Added.
* web-platform-tests/preload/link-header-preload.html.headers: Added.
* web-platform-tests/preload/onload-event-expected.txt: Added.
* web-platform-tests/preload/onload-event.html: Added.
* web-platform-tests/preload/preload-csp.sub-expected.txt:
* web-platform-tests/preload/preload-csp.sub.html:
* web-platform-tests/preload/preload-default-csp.sub-expected.txt:
* web-platform-tests/preload/preload-default-csp.sub.html:
* web-platform-tests/preload/preload-with-type-expected.txt: Added.
* web-platform-tests/preload/preload-with-type.html: Added.
* web-platform-tests/preload/resources/A4.ogv: Added.
* web-platform-tests/preload/resources/A4.ogv.sub.headers: Added.
* web-platform-tests/preload/resources/cross-origin-module.py: Added.
(main):
* web-platform-tests/preload/resources/dummy-preloads-subresource.css: Added.
* web-platform-tests/preload/resources/dummy-preloads-subresource.css.sub.headers: Added.
* web-platform-tests/preload/resources/empty.html: Added.
* web-platform-tests/preload/resources/empty.html.sub.headers: Added.
* web-platform-tests/preload/resources/foo.vtt.sub.headers: Added.
* web-platform-tests/preload/resources/module1.js: Added.
* web-platform-tests/preload/resources/module2.js: Added.
* web-platform-tests/preload/resources/preload_helper.js:
(verifyNumberOfResourceTimingEntries):
(numberOfResourceTimingEntries):

Source/WebCore:

Implement imagesrcset and imagesizes attributes for both Link header
and link element.

Tests: imported/w3c/web-platform-tests/preload/dynamic-adding-preload-imagesrcset.html
       imported/w3c/web-platform-tests/preload/link-header-preload-imagesrcset.html
       imported/w3c/web-platform-tests/preload/link-header-preload-nonce.html
       imported/w3c/web-platform-tests/preload/link-header-preload.html
       imported/w3c/web-platform-tests/preload/onload-event.html
       imported/w3c/web-platform-tests/preload/preload-with-type.html

* html/HTMLAttributeNames.in:
* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::process):
* html/HTMLLinkElement.idl:
* loader/LinkHeader.cpp:
(WebCore::paramterNameFromString):
(WebCore::LinkHeader::setValue):
(WebCore::LinkHeader::LinkHeader):
* loader/LinkHeader.h:
(WebCore::LinkHeader::imageSrcSet const):
(WebCore::LinkHeader::imageSizes const):
(WebCore::LinkHeader::isViewportDependent const):
* loader/LinkLoader.cpp:
(WebCore::LinkLoader::loadLinksFromHeader):
(WebCore::LinkLoader::preloadIfNeeded):
(WebCore::LinkLoader::loadLink):
* loader/LinkLoader.h:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::linkPreloadResponsiveImagesEnabled const):
(WebCore::RuntimeEnabledFeatures::setLinkPreloadResponsiveImagesEnabled):

Source/WebKit:

Add a runtime flag for link preload responsive images.

* Shared/WebPreferences.yaml:

Source/WebKitLegacy/mac:

Add a runtime flag for link preload responsive images.

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences linkPreloadResponsiveImagesEnabled]):
(-[WebPreferences setLinkPreloadResponsiveImagesEnabled:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Tools:

Add a runtime flag for link preload responsive images.

* DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures):

LayoutTests:

Write special expectation for link-header-preload-imagesrcset.html because test runner
uses different dimensions on iOS.

* platform/ios-simulator-12-wk2/imported/w3c/web-platform-tests/preload/dynamic-adding-preload-imagesrcset-expected.txt: Added.
* platform/ios-simulator-12-wk2/imported/w3c/web-platform-tests/preload/link-header-preload-imagesrcset-expected.txt: Added.

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

10 months ago[CMake] Use WEBKIT_EXECUTABLE in ImageDiff
don.olmstead@sony.com [Mon, 3 Jun 2019 20:12:18 +0000 (20:12 +0000)]
[CMake] Use WEBKIT_EXECUTABLE in ImageDiff
https://bugs.webkit.org/show_bug.cgi?id=198490

Reviewed by Konstantin Tokarev.

Use WEBKIT_EXECUTABLE in ImageDiff. Change CMake variables to use the proper
convention. Add a shared CoreGraphics.cmake instead of just including PlatformMac
for AppleWin builds.

* ImageDiff/CMakeLists.txt:
* ImageDiff/Cairo.cmake:
* ImageDiff/CoreGraphics.cmake: Added.
* ImageDiff/PlatformGTK.cmake:
* ImageDiff/PlatformMac.cmake:
* ImageDiff/PlatformWin.cmake:

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

10 months agoMemory-cached main resources continue to load after the client decides a content...
aestes@apple.com [Mon, 3 Jun 2019 19:39:03 +0000 (19:39 +0000)]
Memory-cached main resources continue to load after the client decides a content policy of PolicyAction::Download
https://bugs.webkit.org/show_bug.cgi?id=198469
<rdar://problem/50512713>

Reviewed by Youenn Fablet.

Source/WebCore:

When a document is loaded from the memory cache it does not have a main resource loader, but
DocumentLoader::continueAfterContentPolicy relies on being able to call
ResourceLoader::didFail on the main resource loader to cancel the provisional navigation
when the client decides a content policy of PolicyAction::Download.

This means that memory-cached main resources continue to load even after WebKit has started
to download the main resource. The expected behavior is for the provisional navigation to
fail once the download starts, like what happens when there is a main resource loader.

This patch teaches DocumentLoader::continueAfterContentPolicy to call
stopLoadingForPolicyChange() in the case of a null main resource loader. This will dispatch
didFailProvisionalNavigation and remove the DocumentLoader as a client of its
CachedRawResource to prevent it from delivering any cached data.

Added a new API test.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::continueAfterContentPolicy):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
(-[TestDownloadNavigationResponseFromMemoryCacheDelegate webView:didStartProvisionalNavigation:]):
(-[TestDownloadNavigationResponseFromMemoryCacheDelegate webView:didFailProvisionalNavigation:withError:]):
(-[TestDownloadNavigationResponseFromMemoryCacheDelegate webView:didFinishNavigation:]):
(-[TestDownloadNavigationResponseFromMemoryCacheDelegate _downloadDidStart:]):
(-[TestDownloadNavigationResponseFromMemoryCacheDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(TEST):
* TestWebKitAPI/cocoa/TestProtocol.h:
* TestWebKitAPI/cocoa/TestProtocol.mm:
(+[TestProtocol additionalResponseHeaders]):
(+[TestProtocol setAdditionalResponseHeaders:]):
(-[TestProtocol startLoading]):

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

10 months agoTweak the text and underline color for data detected text.
timothy@apple.com [Mon, 3 Jun 2019 19:14:42 +0000 (19:14 +0000)]
Tweak the text and underline color for data detected text.
https://bugs.webkit.org/show_bug.cgi?id=198487
rdar://problem/50667125

Reviewed by Devin Rousso.

Source/WebCore:

Tests: Color.RGBToHSL API tests

* editing/cocoa/DataDetection.mm:
(WebCore::DataDetection::detectContentInRange): Use currentcolor so semantic text colors work.
Force the lightness of the underline color to the middle, and multiply the alpha by 38%,
so the color will appear on light and dark backgrounds, since only one color can be specified.
* platform/graphics/Color.cpp:
(WebCore::Color::getHSL const): Return hue in [0...6) range to easily round-trip with makeRGBAFromHSLA().

Tools:

* TestWebKitAPI/Tests/WebCore/Color.cpp:
(TestWebKitAPI::TEST): Added Color.RGBToHSL tests.

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

10 months ago[ESNext][BigInt] Implement support for "**"
ticaiolima@gmail.com [Mon, 3 Jun 2019 18:42:34 +0000 (18:42 +0000)]
[ESNext][BigInt] Implement support for "**"
https://bugs.webkit.org/show_bug.cgi?id=190799

Reviewed by Saam Barati.

JSTests:

* stress/big-int-exp-basic.js: Added.
* stress/big-int-exp-jit-osr.js: Added.
* stress/big-int-exp-jit-untyped.js: Added.
* stress/big-int-exp-jit.js: Added.
* stress/big-int-exp-negative-exponent.js: Added.
* stress/big-int-exp-to-primitive.js: Added.
* stress/big-int-exp-type-error.js: Added.
* stress/big-int-exp-wrapped-value.js: Added.
* stress/value-pow-ai-rule.js: Added.

Source/JavaScriptCore:

We are introducing support for BigInt into "**" operator. This Patch
also includes changes into DFG, introducing a new node "ValuePow" that
is responsible to handle UntypedUse and BigIntUse.

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

ValuePow(Untyped, Untyped) still can propagate constant if AI proves
it. We are doing so if AI proves rhs and lhs as numbers.

* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):

When compiling op_pow, we first verify if rhs and lhs can be any Int
or number. If this happen, we emit ArithPow, otherwise we fallback to
ValuePow and rely on fixup to convert it to ArithPow if possible.

* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):

We only clobberize world if ValuePow is UntypedUse. Otherwise, we can
properly support CSE.

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

JSBigInt::exponentiate allocates JSBigInts to perform calculation and
it can trigger GC. ValuePow(UntypedUse) can trigger GC because it can
execute user code.

* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupArithPow):
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileValuePow):
* dfg/DFGSpeculativeJIT.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGValidate.cpp:
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileValuePow):
* runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):

We are adding proper support to BigInt on op_pow. The specification
defines that we can only apply pow when both operands have the same
type after calling ToNumeric().

* runtime/JSBigInt.cpp:
(JSC::JSBigInt::exponentiate):
* runtime/JSBigInt.h:

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

10 months ago[JSC] JSObject::attemptToInterceptPutByIndexOnHole should use getPrototype instead...
ysuzuki@apple.com [Mon, 3 Jun 2019 18:27:46 +0000 (18:27 +0000)]
[JSC] JSObject::attemptToInterceptPutByIndexOnHole should use getPrototype instead of getPrototypeDirect
https://bugs.webkit.org/show_bug.cgi?id=198477
<rdar://problem/51299504>

Reviewed by Saam Barati.

Source/JavaScriptCore:

JSObject::attemptToInterceptPutByIndexOnHole uses getPrototypeDirect, but it should use getPrototype to
handle getPrototype methods in derived JSObject classes correctly.

* runtime/JSArrayInlines.h:
(JSC::JSArray::pushInline):
* runtime/JSObject.cpp:
(JSC::JSObject::putByIndex):
(JSC::JSObject::attemptToInterceptPutByIndexOnHoleForPrototype):
(JSC::JSObject::attemptToInterceptPutByIndexOnHole):
(JSC::JSObject::putByIndexBeyondVectorLength):

LayoutTests:

Ensure that JSWindow::getPrototype is used.

* http/tests/security/cross-frame-access-object-getPrototypeOf-in-put-expected.txt: Added.
* http/tests/security/cross-frame-access-object-getPrototypeOf-in-put.html: Added.
* http/tests/security/resources/cross-frame-iframe-for-object-getPrototypeOf-in-put-test.html: Added.

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

10 months ago[CMake] Add WebKit::JavaScriptCore target
don.olmstead@sony.com [Mon, 3 Jun 2019 17:04:35 +0000 (17:04 +0000)]
[CMake] Add WebKit::JavaScriptCore target
https://bugs.webkit.org/show_bug.cgi?id=198403

Reviewed by Konstantin Tokarev.

Source/JavaScriptCore:

Create the WebKit::JavaScriptCore target and use that to propagate headers. Use
WEBKIT_COPY_FILES instead of WEBKIT_MAKE_FORWARDING_HEADERS.

* CMakeLists.txt:
* shell/CMakeLists.txt:

Source/WebCore:

Use the WebKit::JavaScriptCore target.

* CMakeLists.txt:

Source/WebCore/PAL:

Use the WebKit::JavaScriptCore target.

* pal/CMakeLists.txt:

Source/WebKitLegacy:

Use the WebKit::JavaScriptCore target.

* CMakeLists.txt:

Tools:

Use the WebKit::JavaScriptCore target.

* DumpRenderTree/CMakeLists.txt:
* MiniBrowser/win/CMakeLists.txt:
* TestWebKitAPI/CMakeLists.txt:
* TestWebKitAPI/PlatformGTK.cmake:
* TestWebKitAPI/PlatformWPE.cmake:
* TestWebKitAPI/glib/CMakeLists.txt:
* WebKitTestRunner/CMakeLists.txt:

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

10 months agoUnreviewed, rolling out r246022.
commit-queue@webkit.org [Mon, 3 Jun 2019 16:48:01 +0000 (16:48 +0000)]
Unreviewed, rolling out r246022.
https://bugs.webkit.org/show_bug.cgi?id=198486

Causing Internal build failures and JSC test failures
(Requested by ShawnRoberts on #webkit).

Reverted changeset:

"Reenable Gigacage on ARM64."
https://bugs.webkit.org/show_bug.cgi?id=198453
https://trac.webkit.org/changeset/246022

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

10 months agoFlaky Test: inspector/canvas/recording.html
drousso@apple.com [Mon, 3 Jun 2019 16:37:27 +0000 (16:37 +0000)]
Flaky Test: inspector/canvas/recording.html
https://bugs.webkit.org/show_bug.cgi?id=198470

Reviewed by Timothy Hatcher.

* inspector/canvas/recording.html:
The ordering of <canvas> in `WI.canvasManager.canvases` isn't always the same, so we should
perform the action on every <canvas> since we know we'll be recording at least one of them.

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

10 months ago[Nicosia] Disable async scrolling until implemented
zandobersek@gmail.com [Mon, 3 Jun 2019 15:34:15 +0000 (15:34 +0000)]
[Nicosia] Disable async scrolling until implemented
https://bugs.webkit.org/show_bug.cgi?id=198476
<rdar://problem/51351478>

Unreviewed follow-up to r246033.

* page/scrolling/ScrollingCoordinator.cpp:
Expand the PLATFORM(IOS) guard to IOS_FAMILY.

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

10 months agoREGRESSION(r245567): [GTK][WPE] [2.25.1] WebKitWebDriver gets installed as WebDriver
berto@igalia.com [Mon, 3 Jun 2019 14:28:19 +0000 (14:28 +0000)]
REGRESSION(r245567): [GTK][WPE] [2.25.1] WebKitWebDriver gets installed as WebDriver
https://bugs.webkit.org/show_bug.cgi?id=198480

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2019-06-03
Reviewed by Michael Catanzaro.

We are now using the WEBKIT_EXECUTABLE macro that uses target_OUTPUT_NAME variable, but we define
taget_Process_OUTPUT_NAME.

* PlatformGTK.cmake:
* PlatformWPE.cmake:

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

10 months agoFinish cleanup of String::number for floating point
darin@apple.com [Mon, 3 Jun 2019 11:34:20 +0000 (11:34 +0000)]
Finish cleanup of String::number for floating point
https://bugs.webkit.org/show_bug.cgi?id=198471

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

* dfg/DFGStrengthReductionPhase.cpp:
(JSC::DFG::StrengthReductionPhase::handleNode): Use String::number instead of
String::numberToStringECMAScript, since that's now the default.
* parser/ParserArena.h:
(JSC::IdentifierArena::makeNumericIdentifier): Ditto.
* runtime/JSONObject.cpp:
(JSC::Stringifier::appendStringifiedValue): Use appendNumber instead of
builder.appendECMAScriptNumber, since that's now the default.
* runtime/NumberPrototype.cpp:
(JSC::toStringWithRadix): Use String::number instead of
String::numberToStringECMAScript, since that's now the default.
(JSC::numberProtoFuncToExponential): Ditto.
(JSC::numberProtoFuncToFixed): Ditto.
(JSC::numberProtoFuncToPrecision): Ditto.
(JSC::numberToStringInternal): Ditto.
* runtime/NumericStrings.h:
(JSC::NumericStrings::add): Ditto.
* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::prepare): Ditto.

Source/WebCore:

* css/CSSCursorImageValue.cpp:
(WebCore::CSSCursorImageValue::customCSSText const): Use makeString instead
of StringBuilder since it is more terse and possibly more efficient as well.
* css/DOMMatrixReadOnly.cpp:
(WebCore::DOMMatrixReadOnly::toString const): Ditto.
* css/WebKitCSSMatrix.cpp:
(WebCore::WebKitCSSMatrix::toString const): Ditto.

* html/parser/HTMLParserIdioms.cpp:
(WebCore::serializeForNumberType): Use String::number instead of
String::numberToStringECMAScript since that is now the default.
* html/shadow/MediaControlElementTypes.cpp:
(WebCore::MediaControlVolumeSliderElement::setVolume): Ditto.
* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTimelineElement::setPosition): Ditto.
* platform/Decimal.cpp:
(WebCore::Decimal::fromDouble): Ditto.

* rendering/RenderListMarker.cpp:
(WebCore::toRoman): Return a String instead of taking a StringBuilder argument.
Use LetterCase enum instead of bool for the uppercase vs. lowercase argument, to
be less mysterious at call sites. Use unsigned for string lengths since that's
what WTF::String uses.
(WebCore::toAlphabeticOrNumeric): Ditto. Also updated since SequenceType is now
an enum class.
(WebCore::toSymbolic): Use String::createUninitialized instead of StringBuilder.
Return a String instead of taking a StringBuilder argument. Straighten out the
algorithm so it's easier to understand.
(WebCore::toAlphabetic): Updated since SequenceType is now an enum class.
(WebCore::toNumeric): Ditto.
(WebCore::toHebrew): Return a String instead of taking a StringBuilder argument.
Use unsigned for string lengths since that's what WTF::String uses.
(WebCore::toArmenianUnder10000): Use unsigned and the LetterCase enum class.
(WebCore::toArmenian): Return a String instead of taking a StringBuilder argument.
Also use unsigned for string lengths since that's what WTF::String uses.
(WebCore::toGeorgian): Ditto.
(WebCore::toCJKIdeographic): Ditto.
(WebCore::listMarkerSuffix): Tweaked a comment.
(WebCore::listMarkerText): Use String return values instead of StringBuilder.
(WebCore::RenderListMarker::paint): Use String::createUninitialized instead of
StringBuilder since it's a bit more efficient. Use makeString instead of turning
single characters into strings since that's more efficient.

* svg/SVGPathUtilities.cpp:
(WebCore::buildStringFromPath): Use appendNumber instead of appendShortestFormNumber
since that is now the default.

Source/WebKit:

* NetworkProcess/Classifier/WebResourceLoadStatisticsTelemetry.cpp:
(WebKit::submitTopList): Use makeString instead of StringBuilder since it
is more terse and possibly more efficient as well.
* UIProcess/API/APIUserScript.cpp:
(API::UserScript::generateUniqueURL): Ditto.
* UIProcess/API/APIUserStyleSheet.cpp:
(API::UserStyleSheet::generateUniqueURL): Ditto.

Source/WTF:

* wtf/JSONValues.cpp:
(WTF::JSONImpl::Value::writeJSON const): Use appendNumber instead of
appendECMAScriptNumber, since that's now the default.

* wtf/text/StringBuilder.cpp:
(WTF::StringBuilder::appendNumber): Renamed from appendShortestFormNumber.
* wtf/text/StringBuilder.h: Removed appendShortestFormNumber and
appendECMAScriptNumber, replacing both with overload of appendNumber.

* wtf/text/WTFString.cpp:
(WTF::String::number): Renamed from numberToStringShortest.
* wtf/text/WTFString.h: Removed numberToStringShortest and
numberToStringECMAScript, replacing both with overload of number.

Tools:

* TestWebKitAPI/Tests/WTF/WTFString.cpp:
(TestWebKitAPI::testStringNumber): Go back to calling String::number instead of
String::numberToStringECMAScript.

* WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
(WTR::dumpFrameScrollPosition): Use appendNumber instead of appendECMAScriptNumber
since that is now the default.

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

10 months ago[Nicosia] Disable async scrolling until implemented
zandobersek@gmail.com [Mon, 3 Jun 2019 09:45:51 +0000 (09:45 +0000)]
[Nicosia] Disable async scrolling until implemented
https://bugs.webkit.org/show_bug.cgi?id=198476

Reviewed by Antti Koivisto.

.:

Disable async scrolling on Nicosia-using ports until the underlying
implementation is complete, allowing easier refactorings of the general
async scrolling system.

* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsPlayStation.cmake:
* Source/cmake/OptionsWPE.cmake:

Source/WebCore:

Build ScrollingCoordinator::create() method on iOS or whenever
ASYNC_SCROLLING is not enabled.

Additionally, the USE(COORDINATED_GRAPHICS) build guards are removed
throughout the async scrolling classes as they aren't required now
and shouldn't be in the future.

* page/scrolling/ScrollingCoordinator.cpp:
* page/scrolling/ScrollingStateFixedNode.cpp:
* page/scrolling/ScrollingStateFixedNode.h:
* page/scrolling/ScrollingStateFrameHostingNode.cpp:
* page/scrolling/ScrollingStateFrameHostingNode.h:
* page/scrolling/ScrollingStateFrameScrollingNode.cpp:
* page/scrolling/ScrollingStateFrameScrollingNode.h:
* page/scrolling/ScrollingStateNode.cpp:
* page/scrolling/ScrollingStateNode.h:
* page/scrolling/ScrollingStateOverflowScrollingNode.cpp:
* page/scrolling/ScrollingStateOverflowScrollingNode.h:
* page/scrolling/ScrollingStatePositionedNode.cpp:
* page/scrolling/ScrollingStatePositionedNode.h:
* page/scrolling/ScrollingStateScrollingNode.cpp:
* page/scrolling/ScrollingStateScrollingNode.h:
* page/scrolling/ScrollingStateStickyNode.cpp:
* page/scrolling/ScrollingStateStickyNode.h:
* page/scrolling/ScrollingStateTree.cpp:
* page/scrolling/ScrollingStateTree.h:

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

10 months agoREGRESSION(r240862) [WinCairo][WK2] position:fixed elements don't show
Hironori.Fujii@sony.com [Mon, 3 Jun 2019 09:43:41 +0000 (09:43 +0000)]
REGRESSION(r240862) [WinCairo][WK2] position:fixed elements don't show
https://bugs.webkit.org/show_bug.cgi?id=198478

Reviewed by Carlos Garcia Campos.

All position:fixed elements didn't show in WinCairo WebKit2 since
r240862 which turns acceleratedCompositingEnabled on for WebKit2.
WinCairo WebKit2 doesn't have accelerated compositing support yet.
Let's do the same with GTK port.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences): Conditioned out the code
enabling acceleratedCompositingEnabled for PLATFORM(WIN).

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

10 months ago[Pointer Events] Check that capturing data managed by the PointerCaptureController...
graouts@webkit.org [Mon, 3 Jun 2019 09:29:39 +0000 (09:29 +0000)]
[Pointer Events] Check that capturing data managed by the PointerCaptureController gets cleared upon navigation
https://bugs.webkit.org/show_bug.cgi?id=198191

Unreviewed post-commit review feedback suggested by Darin Adler.

* page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::reset):

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

10 months agoREGRESSION(r244182): [CoordinatedGraphics] Related view doesn't receive graphic updates
carlosgc@webkit.org [Mon, 3 Jun 2019 08:07:06 +0000 (08:07 +0000)]
REGRESSION(r244182): [CoordinatedGraphics] Related view doesn't receive graphic updates
https://bugs.webkit.org/show_bug.cgi?id=198418

Reviewed by Žan Doberšek.

This is because we need a DisplayRefreshMonitor per drawing area, but the one from the first ThreradedCompositor
is always reused because they use the same display ID.

* WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
(WebKit::DrawingAreaCoordinatedGraphics::enterAcceleratedCompositingMode): Use a unique display ID derived from
WebPage's ID.
(WebKit::DrawingAreaCoordinatedGraphics::exitAcceleratedCompositingMode): Use the primary display ID.
* WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:
(WebKit::LayerTreeHost::LayerTreeHost): Get the current web page display ID instead of inventing one.
(WebKit::LayerTreeHost::setIsDiscardable): Do not change display ID.

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

10 months ago[WinCairo][MiniBrowser] WKViewSetIsInWindow should be called
Hironori.Fujii@sony.com [Mon, 3 Jun 2019 05:28:58 +0000 (05:28 +0000)]
[WinCairo][MiniBrowser] WKViewSetIsInWindow should be called
https://bugs.webkit.org/show_bug.cgi?id=198474

Reviewed by Darin Adler.

WinCairo WK2 MiniBrowser can't play back videos because
Page::canStartMedia() always returns false. WKViewSetIsInWindow
should be called.

The original MiniBrowser did it in Bug 55364.

* MiniBrowser/win/WebKitBrowserWindow.cpp:
(WebKitBrowserWindow::WebKitBrowserWindow): Call WKViewSetIsInWindow.

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

10 months agoFlaky Test: inspector/canvas/recording.html
drousso@apple.com [Mon, 3 Jun 2019 02:12:59 +0000 (02:12 +0000)]
Flaky Test: inspector/canvas/recording.html
https://bugs.webkit.org/show_bug.cgi?id=198470

Reviewed by Matt Baker.

* inspector/canvas/recording.html:
Don't rely on `frameCount` to automatically stop the recording, as that's dependent on when
the <canvas> paints and is less controllable/deterministic.

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