WebKit-https.git
5 months agoAccess-Control-Expose-Headers parsed incorrectly
commit-queue@webkit.org [Tue, 17 Sep 2019 07:56:08 +0000 (07:56 +0000)]
Access-Control-Expose-Headers parsed incorrectly
https://bugs.webkit.org/show_bug.cgi?id=172357

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

LayoutTests/imported/w3c:

Import cors/access-control-expose-headers-parsing.window.js and adjust it
so it fetches a remote url, since subdomains do not work for localhost.

* web-platform-tests/cors/access-control-expose-headers-parsing.window-expected.txt: Added.
* web-platform-tests/cors/access-control-expose-headers-parsing.window.html: Added.
* web-platform-tests/cors/access-control-expose-headers-parsing.window.js:
(runTests):
(exposeTest): Deleted.
* web-platform-tests/cors/allow-headers-expected.txt: Removed.
* web-platform-tests/cors/allow-headers.htm: Removed.
* web-platform-tests/cors/resources/access-control-expose-headers-parsing-2.asis: Removed.
* web-platform-tests/cors/resources/access-control-expose-headers-parsing.asis: Removed.
* web-platform-tests/cors/resources/access-control-expose-headers.json: Added.
* web-platform-tests/cors/resources/expose-headers.py: Added.
(main):

Source/WebCore:

When parsing the list, strip HTTP spaces and verify
that the list items are valid HTTP tokens.

Behavior matches Firefox and Chrome.

Test: imported/w3c/web-platform-tests/cors/access-control-expose-headers-parsing.window.html

* platform/network/HTTPParsers.h:
(WebCore::addToAccessControlAllowList):
(WebCore::parseAccessControlAllowList):

LayoutTests:

Add Mac/iOS expectations.

* platform/ios/imported/w3c/web-platform-tests/cors/access-control-expose-headers-parsing.window-expected.txt: Added.
* platform/mac/imported/w3c/web-platform-tests/cors/access-control-expose-headers-parsing.window-expected.txt: Added.

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

5 months agoContent-Type should be preserved on responses created from DOMCache
youenn@apple.com [Tue, 17 Sep 2019 07:39:52 +0000 (07:39 +0000)]
Content-Type should be preserved on responses created from DOMCache
https://bugs.webkit.org/show_bug.cgi?id=201815

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Fixes one subtest.
Remaining failing test is failing consistently in other browsers.

* web-platform-tests/service-workers/cache-storage/serviceworker/cache-match.https-expected.txt:
* web-platform-tests/service-workers/cache-storage/window/cache-match.https-expected.txt:
* web-platform-tests/service-workers/cache-storage/worker/cache-match.https-expected.txt:

Source/WebCore:

       Covered by updated test expectations

* Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::create):
Update content type when creating the response from DOMCache.

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

5 months ago[WinCairo][curl] Define NOCRYPT to suppress libressl "Warning, overriding WinCrypt...
Hironori.Fujii@sony.com [Tue, 17 Sep 2019 07:26:17 +0000 (07:26 +0000)]
[WinCairo][curl] Define NOCRYPT to suppress libressl "Warning, overriding WinCrypt defines"
https://bugs.webkit.org/show_bug.cgi?id=201858

Reviewed by Alex Christensen.

LibreSSL headers are reporing a compilation warning for overriding
WinCrypt defines. Define NOCRYPT to let windows.h not to include
WinCrypt for WinCairo port.

* Source/cmake/OptionsWinCairo.cmake: Added -DNOCRYPT.

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

5 months agoMove code for traversing reversed text boxes from TextIterator to TextBoxIterator
antti@apple.com [Tue, 17 Sep 2019 06:38:22 +0000 (06:38 +0000)]
Move code for traversing reversed text boxes from TextIterator to TextBoxIterator
https://bugs.webkit.org/show_bug.cgi?id=201819

Reviewed by Zalan Bujtas.

Handle traversal order in TextBoxIterator.

* editing/TextIterator.cpp:
(WebCore::TextIterator::handleTextNode):
(WebCore::TextIterator::handleTextBox):
(WebCore::TextIterator::handleTextNodeFirstLetter):
* editing/TextIterator.h:
* rendering/line/LineLayoutInterfaceTextBoxes.cpp:
(WebCore::LineLayoutInterface::TextBox::rect const):
(WebCore::LineLayoutInterface::TextBox::logicalRect const):
(WebCore::LineLayoutInterface::TextBox::hasHyphen const):
(WebCore::LineLayoutInterface::TextBox::isLeftToRightDirection const):
(WebCore::LineLayoutInterface::TextBox::dirOverride const):
(WebCore::LineLayoutInterface::TextBox::text const):
(WebCore::LineLayoutInterface::TextBox::localStartOffset const):
(WebCore::LineLayoutInterface::TextBox::localEndOffset const):
(WebCore::LineLayoutInterface::TextBox::length const):
(WebCore::LineLayoutInterface::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutInterface::TextBoxIterator::traverseNextInVisualOrder):
(WebCore::LineLayoutInterface::TextBoxIterator::traverseNextInTextOrder):
(WebCore::LineLayoutInterface::TextBoxIterator::operator== const):
(WebCore::LineLayoutInterface::TextBoxIterator::atEnd const):
(WebCore::LineLayoutInterface::Provider::firstTextBoxInVisualOrderFor):
(WebCore::LineLayoutInterface::Provider::firstTextBoxInTextOrderFor):
(WebCore::LineLayoutInterface::Provider::textBoxRangeFor):
* rendering/line/LineLayoutInterfaceTextBoxes.h:
(WebCore::LineLayoutInterface::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutInterface::TextBoxIterator::operator++):
(WebCore::LineLayoutInterface::Provider::firstTextBoxFor):

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

5 months agoUnreviewed, rolling out r249910.
ryanhaddad@apple.com [Tue, 17 Sep 2019 06:24:28 +0000 (06:24 +0000)]
Unreviewed, rolling out r249910.

Caused layout test failures and timeouts on Catalina

Reverted changeset:

"REGRESSION(249649): Unable to open local files in MiniBrowser
on macOS"
https://bugs.webkit.org/show_bug.cgi?id=201798
https://trac.webkit.org/changeset/249910

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

5 months agoRemove "gopher" from list of special schemes in URLParser
commit-queue@webkit.org [Tue, 17 Sep 2019 05:39:18 +0000 (05:39 +0000)]
Remove "gopher" from list of special schemes in URLParser
https://bugs.webkit.org/show_bug.cgi?id=201852

Patch by Alex Christensen <achristensen@webkit.org> on 2019-09-16
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

* web-platform-tests/url/a-element-expected.txt:
* web-platform-tests/url/a-element-origin-expected.txt:
* web-platform-tests/url/a-element-origin-xhtml-expected.txt:
* web-platform-tests/url/a-element-xhtml-expected.txt:
* web-platform-tests/url/url-constructor-expected.txt:
* web-platform-tests/url/url-origin-expected.txt:
* web-platform-tests/url/url-setters-expected.txt:

Source/WTF:

There is little meaningful content on gopher servers, and WebKit does not actually support gopher.
This makes WebKit match the behavior of Gecko and goes along with a change proposed at
https://github.com/whatwg/url/issues/342

* wtf/URLParser.cpp:
(WTF::URLParser::defaultPortForProtocol):
(WTF::scheme):
(WTF::URLParser::copyURLPartsUntil):
(WTF::URLParser::parse):

Tools:

* TestWebKitAPI/Tests/WTF/URLParser.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WebCore/URLParserTextEncoding.cpp:
(TestWebKitAPI::TEST_F):
* TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:

LayoutTests:

* fast/url/invalid-urls-utf8-expected.txt:
* fast/url/invalid-urls-utf8.html:
* fast/url/segments-expected.txt:
* fast/url/segments.html:
* fast/url/standard-url-expected.txt:
* fast/url/standard-url.html:
* fetch/fetch-urls.json:
* http/wpt/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-async-delegate-expected.txt:

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

5 months ago[WinCairo][curl] Don't compile unused CertificateCFWin.cpp
Hironori.Fujii@sony.com [Tue, 17 Sep 2019 05:28:46 +0000 (05:28 +0000)]
[WinCairo][curl] Don't compile unused CertificateCFWin.cpp
https://bugs.webkit.org/show_bug.cgi?id=201860

Reviewed by Alex Christensen.

Source/WebCore:

Curl port is using ResourceHandle::setClientCertificateInfo
instead of ResourceHandle::setClientCertificate.

* PlatformWin.cmake: Added CertificateCFWin.cpp to WebCore_SOURCES only if USE_CFURLCONNECTION.
* platform/network/ResourceHandle.h: Removed an unused method setClientCertificate.
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::setClientCertificate): Deleted.

Source/WebKitLegacy/win:

* WebMutableURLRequest.cpp: Include <WebCore/CertificateCFWin.h> only if USE(CFURLCONNECTION).
(WebMutableURLRequest::setClientCertificate): Don't use PCCERT_CONTEXT for curl port which is defined in WinCrypt.

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

5 months agoDrop sessionID / websiteDataStoreID from WebPageCreationParameters
cdumez@apple.com [Tue, 17 Sep 2019 03:48:49 +0000 (03:48 +0000)]
Drop sessionID / websiteDataStoreID from WebPageCreationParameters
https://bugs.webkit.org/show_bug.cgi?id=201847

Reviewed by Youenn Fablet.

Drop sessionID / websiteDataStoreID from WebPageCreationParameters now that we have
one session per WebProcess.

* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
(WebKit::WebPageCreationParameters::WebPageCreationParameters): Deleted.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createWindow):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_textAutoSizingAdjustmentTimer):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::createWebPage):

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

5 months ago[AppleWin] Assertion failure in defaultSupportedImageTypes in UTIRegistry.cpp
Hironori.Fujii@sony.com [Tue, 17 Sep 2019 03:05:13 +0000 (03:05 +0000)]
[AppleWin] Assertion failure in defaultSupportedImageTypes in UTIRegistry.cpp
https://bugs.webkit.org/show_bug.cgi?id=198286

Reviewed by Brent Fulgham.

Some image types aren't supported by CG for Windows.

No new tests, covered by existing tests.

* platform/graphics/cg/ImageSourceCGWin.cpp:
(WebCore::MIMETypeForImageType): Return the correct MIME types for
com.microsoft.cur and com.microsoft.ico.
* platform/graphics/cg/UTIRegistry.cpp:
(WebCore::defaultSupportedImageTypes): Excluded public.jpeg-2000 and public.mpo-image if PLATFORM(WIN).

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

5 months ago[Cairo] Image::drawTiled → Cairo::drawSurface → cairo_paint_with_alpha → segfault...
Hironori.Fujii@sony.com [Tue, 17 Sep 2019 02:56:54 +0000 (02:56 +0000)]
[Cairo] Image::drawTiled → Cairo::drawSurface → cairo_paint_with_alpha → segfault happens in pixman
https://bugs.webkit.org/show_bug.cgi?id=201755

Reviewed by Don Olmstead.

Segmentation faults happened in pixman while painting a image. In
Cairo::drawSurface, originalSrcRect can be slightly larger than
the surface size because of floating number calculations.
Cairo::drawSurface created a subsurface which is running over the
parent surface boundaries.

* platform/graphics/cairo/CairoOperations.cpp:
(WebCore::Cairo::drawSurface): Calculated a intersection with
expandedSrcRect and the parent surface size for subsurface size.

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

5 months agoProvide a prototype for AR QuickLook to trigger processing in the originating page
dino@apple.com [Tue, 17 Sep 2019 02:29:31 +0000 (02:29 +0000)]
Provide a prototype for AR QuickLook to trigger processing in the originating page
https://bugs.webkit.org/show_bug.cgi?id=201371

Hopefully fix the public iOS 13 build.

Source/WebCore/PAL:

* pal/spi/ios/SystemPreviewSPI.h:

Source/WebKit:

* UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:

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

5 months agoWasm StreamingParser should validate that number of functions matches number of decla...
tzagallo@apple.com [Tue, 17 Sep 2019 01:40:49 +0000 (01:40 +0000)]
Wasm StreamingParser should validate that number of functions matches number of declarations
https://bugs.webkit.org/show_bug.cgi?id=201850
<rdar://problem/55290186>

Reviewed by Yusuke Suzuki.

JSTests:

* wasm/regress/validate-number-of-functions-match-declarations.js: Added.
(catch):

Source/JavaScriptCore:

Currently, when parsing the code section, we check that the number of functions matches the number
of declarations in the function section. However, that check is never performed if the module does
not have a code section. To fix that, we perform the check again in StreamingParser::finalize.

* wasm/WasmStreamingParser.cpp:
(JSC::Wasm::StreamingParser::finalize):

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

5 months ago[WebAuthn] Name instance variables consistently in WKMockNFTag
ddkilzer@apple.com [Tue, 17 Sep 2019 01:25:59 +0000 (01:25 +0000)]
[WebAuthn] Name instance variables consistently in WKMockNFTag
<https://webkit.org/b/201845>

Reviewed by Jiewen Tan.

* UIProcess/WebAuthentication/Mock/MockNfcService.mm:
Make all @synthesize instance variables use a leading underscore
for their name.

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

5 months agoREGRESSION: iPad: Safari becomes unresponsive after context menu on 1-800-MY-APPLE...
dino@apple.com [Tue, 17 Sep 2019 00:37:57 +0000 (00:37 +0000)]
REGRESSION: iPad: Safari becomes unresponsive after context menu on 1-800-MY-APPLE phone number, tapping 'Add to Contacts'
https://bugs.webkit.org/show_bug.cgi?id=201816
<rdar://55105827>

Reviewed by Darin Adler.

Source/WebCore/PAL:

Expose kDataDetectorsSourceRectKey (and sort things while there).

* pal/spi/ios/DataDetectorsUISPI.h:

Source/WebKit:

When generating the DataDetectorsContext for a position, we should
also provide the source rectangle for the link in root view coordinates.
This allows DataDetectors to show any modal dialogs in the right
position.

* UIProcess/ios/WKContentViewInteraction.mm: Use either the bounds of the positionInformation
or the text bounding rectangle.
(-[WKContentView dataDetectionContextForPositionInformation:]):

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

5 months agoresults.webkit.org: Shard result archives
jbedard@apple.com [Tue, 17 Sep 2019 00:13:16 +0000 (00:13 +0000)]
results.webkit.org: Shard result archives
https://bugs.webkit.org/show_bug.cgi?id=201734

Reviewed by Dewei Zhu.

Cassandra advertises being able to store up to 2 GB in a single blob-storage row.
In practice, this usually doesn't work according to the Cassandra developers,
large blobs should be broken up into shards of, at most, 10 MB.

* resultsdbpy/resultsdbpy/model/archive_context.py:
(ArchiveContext):
(ArchiveContext.ArchiveMetaDataByCommit): Point to the archive shards by hash.
(ArchiveContext.ArchiveMetaDataByCommit.unpack):
(ArchiveContext.ArchiveChunks): Store archive shards, indexed by hash.
(ArchiveContext.__init__):
(ArchiveContext.register): When saving archives, save a reference hash and then
shard the actual archive data before saving.
(ArchiveContext.find_archive): Search for archive by meta-data, then reconstruct
the archive. Raise an exception if we determine that memory usage is a problem.
(ArchiveContext.ArchivesByCommit): Deleted.
(ArchiveContext.ArchivesByCommit.unpack): Deleted.
* resultsdbpy/resultsdbpy/model/archive_context_unittest.py:
(ArchiveContextTest.init_database): Allow configuration and archive to be specified.
(ArchiveContextTest):
(ArchiveContextTest.test_large_archive): Test archive sharding.

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

5 months agoUnreviewed, rebaseline test after testharness.js update in r249918.
cdumez@apple.com [Mon, 16 Sep 2019 23:59:46 +0000 (23:59 +0000)]
Unreviewed, rebaseline test after testharness.js update in r249918.

* webgpu/whlsl/test-harness-test-expected.txt:

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

5 months agoAX: USER: VO: Messages > Message > Shift-VO-M doesn't reveal correct actions
commit-queue@webkit.org [Mon, 16 Sep 2019 23:58:25 +0000 (23:58 +0000)]
AX: USER: VO: Messages > Message > Shift-VO-M doesn't reveal correct actions
https://bugs.webkit.org/show_bug.cgi?id=201840

Patch by Eric Liang <ericliang@apple.com> on 2019-09-16
Reviewed by Chris Fleizach.

menuForEvent: expects event-position in window's space, but we pass the position in Core's space. In this case, we need to convert core's space to window's space.
Tested that existing tests passed with WK1 and WK2

* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityShowContextMenu]):

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

5 months agoUnreviewed, fix several css-dark-mode tests to run properly after testharness.js...
cdumez@apple.com [Mon, 16 Sep 2019 23:53:33 +0000 (23:53 +0000)]
Unreviewed, fix several css-dark-mode tests to run properly after testharness.js update in r249918.

* css-dark-mode/color-scheme-css-expected.txt:
* css-dark-mode/color-scheme-css.html:
* css-dark-mode/color-scheme-meta-expected.txt:
* css-dark-mode/color-scheme-meta.html:
* css-dark-mode/color-scheme-scrollbar-expected.txt:
* css-dark-mode/color-scheme-scrollbar.html:
* css-dark-mode/older-syntax/supported-color-schemes-css-expected.txt:
* css-dark-mode/older-syntax/supported-color-schemes-css.html:
* css-dark-mode/older-syntax/supported-color-schemes-meta-expected.txt:
* css-dark-mode/older-syntax/supported-color-schemes-meta.html:

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

5 months agoUnreviewed, skip imported/w3c/web-platform-tests/html/browsers/offline/application...
cdumez@apple.com [Mon, 16 Sep 2019 23:43:33 +0000 (23:43 +0000)]
Unreviewed, skip imported/w3c/web-platform-tests/html/browsers/offline/application-cache-api/api_update.https.html.

This test is a flaky timeout since it was imported in r249886.

* TestExpectations:

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

5 months ago[WebAuthn] Support more than two FIDO protocol versions
jiewen_tan@apple.com [Mon, 16 Sep 2019 23:28:10 +0000 (23:28 +0000)]
[WebAuthn] Support more than two FIDO protocol versions
https://bugs.webkit.org/show_bug.cgi?id=198408
<rdar://problem/51292176>

Reviewed by Chris Dumez.

Source/WebCore:

Covered by new API tests.

* Modules/webauthn/fido/DeviceResponseConverter.cpp:
(fido::readCTAPGetInfoResponse):
Remove the check for the array size.

Tools:

Adds a new test case that includes a FIDO_2_1_PRE version string.

* TestWebKitAPI/Tests/WebCore/CtapResponseTest.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebCore/FidoTestData.h:

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

5 months ago[JSC] Perform check again when we found non-BMP characters
msaboff@apple.com [Mon, 16 Sep 2019 23:10:47 +0000 (23:10 +0000)]
[JSC] Perform check again when we found non-BMP characters
https://bugs.webkit.org/show_bug.cgi?id=201647

Reviewed by Yusuke Suzuki.

JSTests:

* stress/regexp-unicode-surrogate-pair-increment-should-involve-length-check.js: Added.
* stress/regexp-unicode-within-string.js: Updated test to eliminate the bogus print().
(testRegExpInbounds):

Source/JavaScriptCore:

We need to check for end of input for non-BMP characters when matching a character class that contains
both BMP and non-BMP characters.  In advanceIndexAfterCharacterClassTermMatch() we were checking for
end of input for both BMP and non-BMP characters.  For BMP characters, this check is redundant.
After moving the check to after the "is BMP check", we need to decrement index after reaching the failure
label to back out the index++ for the first surrogate of the non-BMP character.

Added the same kind of check in generateCharacterClassOnce().  In that case, we have pre-checked the
first character (surrogate) for a non-BMP codepoint, so we just need to check for end of input before
we increment for the second surrogate.

While writing tests, I found an off by one error in backtrackCharacterClassGreedy() and changed the
loop to check the count at loop top instead of loop bottom.

* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::advanceIndexAfterCharacterClassTermMatch):
(JSC::Yarr::YarrGenerator::generateCharacterClassOnce):
(JSC::Yarr::YarrGenerator::generateCharacterClassGreedy):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassGreedy):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassNonGreedy):

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

5 months ago[JSC] Add missing syntax errors for await in function parameter default expressions
ross.kirsling@sony.com [Mon, 16 Sep 2019 22:56:08 +0000 (22:56 +0000)]
[JSC] Add missing syntax errors for await in function parameter default expressions
https://bugs.webkit.org/show_bug.cgi?id=201615

Reviewed by Darin Adler.

JSTests:

* stress/async-await-reserved-word.js:
* stress/async-await-syntax.js:
Add test cases.

* test262/expectations.yaml:
Mark newly-passing test cases.

Source/JavaScriptCore:

This patch rectifies two oversights:
  1. We were prohibiting `async function f(x = (await) => {}) {}` but not `async function f(x = await => {}) {}`
     (and likewise for async arrow functions).
  2. We were not prohibiting `(x = await => {}) => {}` in an async context
     (regardless of parentheses, but note that this one *only* applies to arrow functions).

* parser/Parser.cpp:
(JSC::Parser<LexerType>::isArrowFunctionParameters): Fix case (1).
(JSC::Parser<LexerType>::parseFunctionInfo): Fix case (2).
(JSC::Parser<LexerType>::parseAwaitExpression): Convert unfailing check into an ASSERT.
(JSC::Parser<LexerType>::parsePrimaryExpression): Adjust error message for case (2).

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

5 months agoresults.webkit.org: Configurations should be branch specific
jbedard@apple.com [Mon, 16 Sep 2019 22:40:50 +0000 (22:40 +0000)]
results.webkit.org: Configurations should be branch specific
https://bugs.webkit.org/show_bug.cgi?id=201561

Reviewed by Dewei Zhu.

Partition configurations by branch in both Redis and Cassandra.

* resultsdbpy/resultsdbpy/controller/upload_controller.py:
(UploadController.suites): Allow the user to specify branches while listing suites.
* resultsdbpy/resultsdbpy/model/archive_context.py:
(ArchiveContext.register): Register each configuration with a branch.
* resultsdbpy/resultsdbpy/model/configuration_context.py:
(ConfigurationContext.ByPlatform): Index by branch.
(ConfigurationContext.ByPlatformAndVersion): Ditto.
(ConfigurationContext.ByArchitecture): Ditto.
(ConfigurationContext.ByModel): Ditto.
(ConfigurationContext.__init__): Populate Redis cache with branch.
(ConfigurationContext._convert_to_redis_key): Accept branch in Redis key.
(ConfigurationContext._register_in_redis): Register configuration with branch.
(ConfigurationContext.register_configuration): Ditto.
(ConfigurationContext.search_for_configuration): Search for configuration with branch.
(ConfigurationContext.search_for_recent_configuration): Ditto.
(ConfigurationContext.select_from_table_with_configurations): Ditto.
* resultsdbpy/resultsdbpy/model/configuration_context_unittest.py:
(ConfigurationContextTest.register_configurations): Register with branch.
(ConfigurationContextTest.test_repopulate_recent): Construct ConfigurationContext with
CommitContext object.
* resultsdbpy/resultsdbpy/model/upload_context.py:
(UploadContext.SuitesByConfiguration): Index by branch.
(UploadContext.upload_test_results): Register each configuration with a branch.
(UploadContext.find_suites): Pass branch to search for configurations.
* resultsdbpy/resultsdbpy/view/static/js/drawer.js: Check for new configurations when the branch is changed.
* resultsdbpy/resultsdbpy/view/templates/suite_results.html: Add branch to suites query.

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

5 months agoNetworkProcessConnection does not need HashMaps of sessionIDs for Service Workers...
cdumez@apple.com [Mon, 16 Sep 2019 21:52:05 +0000 (21:52 +0000)]
NetworkProcessConnection does not need HashMaps of sessionIDs for Service Workers and IDB
https://bugs.webkit.org/show_bug.cgi?id=201830

Reviewed by Geoffrey Garen.

NetworkProcessConnection does not need HashMaps of sessionIDs for Service Workers and IDB, since
we now have one sessionID per WebContent process.

* NetworkProcess/IndexedDB/WebIDBConnectionToClient.h:
* NetworkProcess/ServiceWorker/WebSWServerConnection.h:
* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
(WebKit::WebIDBConnectionToServer::create):
(WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):
* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
* WebProcess/Databases/WebDatabaseProvider.cpp:
(WebKit::WebDatabaseProvider::idbConnectionToServerForSession):
* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::didReceiveMessage):
(WebKit::NetworkProcessConnection::didClose):
(WebKit::NetworkProcessConnection::idbConnectionToServerForSession):
(WebKit::NetworkProcessConnection::serviceWorkerConnectionForSession):
* WebProcess/Network/NetworkProcessConnection.h:
(WebKit::NetworkProcessConnection::existingIDBConnectionToServer const):
(WebKit::NetworkProcessConnection::existingServiceWorkerConnectionForSession):
* WebProcess/Storage/WebServiceWorkerProvider.cpp:
(WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):
(WebKit::WebServiceWorkerProvider::existingServiceWorkerConnectionForSession):
(WebKit::WebServiceWorkerProvider::handleFetch):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::networkProcessConnectionClosed):

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

5 months ago[FTW] Correct lifespan of other SharedBitmaps
bfulgham@apple.com [Mon, 16 Sep 2019 21:39:45 +0000 (21:39 +0000)]
[FTW] Correct lifespan of other SharedBitmaps
https://bugs.webkit.org/show_bug.cgi?id=201800

Reviewed by Dean Jackson.

The pop-up menu code creates its own SharedBitmap in the WebContent process,
which needs to release its handle before destruction, otherwise the UIProcess
will be unable to access the GPU texture (since it will have been cleaned up).

Source/WebCore:

This patch also audits other uses of SharedBitmap to make sure a similar
problem doesn't exist elsewhere.

* platform/graphics/win/Direct2DUtilities.cpp:
(WebCore::Direct2D::toDXGIDevice): Switch to IDXGIDevice1 (since that is our
minimum target DX).
(WebCore::Direct2D::factoryForDXGIDevice): Ditto.
(WebCore::Direct2D::swapChainOfSizeForWindowAndDevice): Added.
* platform/graphics/win/Direct2DUtilities.h:
* platform/graphics/win/GraphicsContextDirect2D.cpp:
(WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate): Correct
a very silly use-after-move in the implementation.
* platform/graphics/win/PlatformContextDirect2D.h:
(WebCore::PlatformContextDirect2D::d3dDevice const): Added.
(WebCore::PlatformContextDirect2D::setD3DDevice):

Source/WebKit:

Since WebPopupMenuProxyWin has its own HWND and WinProc, it needs its own
swapChain to handle syncing of content to the screen.

This patch also audits other uses of SharedBitmap to make sure a similar
problem doesn't exist elsewhere.

* Shared/ShareableBitmap.h:
* Shared/win/ShareableBitmapDirect2D.cpp:
(WebKit::ShareableBitmap::paint):
(WebKit::ShareableBitmap::createDirect2DSurface):
* UIProcess/win/WebPopupMenuProxyWin.cpp:
(WebKit::WebPopupMenuProxyWin::showPopupMenu): Add Direct2D code paths.
(WebKit::WebPopupMenuProxyWin::paint): Update for Direct2D.
(WebKit::WebPopupMenuProxyWin::setupSwapChain): Added.
(WebKit::WebPopupMenuProxyWin::configureBackingStore): Added.
* UIProcess/win/WebPopupMenuProxyWin.h:
* UIProcess/win/WebView.cpp:
(WebKit::WebView::setupSwapChain): Move some implementation code to the
Direct2DUtilities file.
* UIProcess/win/WebView.h:
(WebKit::WebView::d3dDevice const):
(WebKit::WebView::d3dImmediateContext const):
(WebKit::WebView::d3dDevice): Deleted.
* WebProcess/WebCoreSupport/WebPopupMenu.cpp:
(WebKit::WebPopupMenu::show):
* WebProcess/WebPage/FindController.cpp:
(WebKit::FindController::getImageForFindMatch): Prevent WebContent process from
destroying SharedBitmap before the UIProcess can receive it.

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

5 months agoSimplify WebResourceLoadObserver now that we have one WebProcess per session
cdumez@apple.com [Mon, 16 Sep 2019 21:21:29 +0000 (21:21 +0000)]
Simplify WebResourceLoadObserver now that we have one WebProcess per session
https://bugs.webkit.org/show_bug.cgi?id=201821

Reviewed by Brent Fulgham.

Source/WebCore:

* Modules/websockets/WebSocket.cpp:
(WebCore::WebSocket::connect):
* loader/ResourceLoadObserver.h:
(WebCore::ResourceLoadObserver::logWebSocketLoading):
(WebCore::ResourceLoadObserver::statisticsForURL):
* testing/Internals.cpp:
(WebCore::Internals::resourceLoadStatisticsForURL):

Source/WebKit:

Simplify WebResourceLoadObserver now that we have one WebProcess per session.
No need to pass sessionIDs around or store statistics per sessionID.
Also, only initialize the WebResourceLoadObserver if both ITP is enabled and
we're not in a WebContent process used for an ephemeral session.

* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
* NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:
(WebKit::WebResourceLoadObserver::requestStorageAccessUnderOpener):
(WebKit::WebResourceLoadObserver::ensureResourceStatisticsForRegistrableDomain):
(WebKit::WebResourceLoadObserver::scheduleNotificationIfNeeded):
(WebKit::WebResourceLoadObserver::statisticsForURL):
(WebKit::WebResourceLoadObserver::takeStatistics):
(WebKit::WebResourceLoadObserver::clearState):
(WebKit::WebResourceLoadObserver::logFontLoad):
(WebKit::WebResourceLoadObserver::logCanvasRead):
(WebKit::WebResourceLoadObserver::logCanvasWriteOrMeasure):
(WebKit::WebResourceLoadObserver::logNavigatorAPIAccessed):
(WebKit::WebResourceLoadObserver::logScreenAPIAccessed):
(WebKit::WebResourceLoadObserver::logSubresourceLoading):
(WebKit::WebResourceLoadObserver::logWebSocketLoading):
(WebKit::WebResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
* WebProcess/WebCoreSupport/WebResourceLoadObserver.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::setWebsiteDataStoreParameters):

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

5 months agoUpdate testharness.js from upstream
cdumez@apple.com [Mon, 16 Sep 2019 21:04:08 +0000 (21:04 +0000)]
Update testharness.js from upstream
https://bugs.webkit.org/show_bug.cgi?id=201808

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update existing layout tests so that they are compatible with this new version
of testharness.js.

* IndexedDB-private-browsing/idbdatabase_createObjectStore9-invalidparameters.html:
* IndexedDB-private-browsing/idbobjectstore_deleted.html:
* web-platform-tests/custom-elements/resources/custom-elements-helpers.js:
(create_window_in_test):

LayoutTests:

Update testharness.js from upstream 6fd5e1e086ce590a4780a30d12968.
Update existing layout tests so that they are compatible with this new version
of testharness.js.

* TestExpectations:
* css-custom-properties-api/length-expected.txt:
* css-custom-properties-api/length.html:
* css-custom-properties-api/registerProperty.html:
* css-dark-mode/older-systems/color-scheme-css-expected.txt:
* css-dark-mode/older-systems/color-scheme-css.html:
* css-dark-mode/older-systems/color-scheme-meta-expected.txt:
* css-dark-mode/older-systems/color-scheme-meta.html:
* css3/flexbox/style-change-expected.txt:
* fast/css/DOMQuad-serialization.html:
* fast/css/Element-style.html:
* fast/css/parse-justify-self-expected.txt:
* fast/css/parse-justify-self.html:
* fast/events/clipboard-event-constructor-expected.txt:
* fast/events/clipboard-event-constructor.html:
* fast/media/mq-js-update-media-expected.txt:
* fast/media/mq-js-update-media.html:
* fast/mediacapturefromelement/CanvasCaptureMediaStream-offscreencanvas-expected.txt:
* fast/mediastream/captureStream/canvas2d-expected.txt:
* fast/mediastream/captureStream/canvas2d-heavy-drawing.html:
* fast/mediastream/captureStream/canvas2d.html:
* fast/shadow-dom/event-path-with-window-expected.txt:
* fast/shadow-dom/event-path-with-window.html:
* fast/shadow-dom/offsetParent-across-shadow-boundaries-expected.txt:
* fast/shadow-dom/offsetParent-across-shadow-boundaries.html:
* fast/shadow-dom/slotchange-for-slot-mutation-expected.txt:
* fast/shadow-dom/slotchange-for-slot-mutation.html:
* fast/shadow-dom/stylesheet-title-in-shadow-tree-expected.txt:
* fast/shadow-dom/stylesheet-title-in-shadow-tree.html:
* http/tests/fetch/redirectmode-and-preload-expected.txt:
* http/tests/fetch/redirectmode-and-preload.html:
* imported/blink/editing/selection/selectstart-event-crash-expected.txt:
* js/promises-tests/promises-in-workers-expected.txt:
* js/promises-tests/promises-in-workers.js:
* resources/check-layout-th.js:
(window.checkLayout):
* resources/testharness.js:
(WindowTestEnvironment):
(WindowTestEnvironment.prototype._dispatch):
(WindowTestEnvironment.prototype._forEach_windows):
(WindowTestEnvironment.prototype.next_default_test_name):
(WorkerTestEnvironment.prototype.next_default_test_name):
(ServiceWorkerTestEnvironment.on_all_loaded):
(ServiceWorkerTestEnvironment):
(ShellTestEnvironment):
(ShellTestEnvironment.prototype.next_default_test_name):
(ShellTestEnvironment.prototype.on_new_harness_properties):
(ShellTestEnvironment.prototype.on_tests_ready):
(ShellTestEnvironment.prototype.add_on_loaded_callback):
(ShellTestEnvironment.prototype.test_timeout):
(create_test_environment):
(is_shared_worker):
(is_service_worker):
(test):
(promise_test):
(this.wait_for):
(EventWatcher):
(done):
* streams/readable-byte-stream-controller-expected.txt:
* streams/readable-byte-stream-controller-worker-expected.txt: Added.
* streams/readable-byte-stream-controller-worker.html: Copied from LayoutTests/streams/readable-byte-stream-controller.html.
* streams/readable-byte-stream-controller.html:
* streams/readable-stream-byob-reader-expected.txt:
* streams/readable-stream-byob-reader-worker-expected.txt: Added.
* streams/readable-stream-byob-reader-worker.html: Copied from LayoutTests/streams/readable-stream-byob-reader.html.
* streams/readable-stream-byob-reader.html:
* streams/readable-stream-byob-request-expected.txt:
* streams/readable-stream-byob-request-worker-expected.txt: Copied from LayoutTests/streams/readable-stream-byob-request-expected.txt.
* streams/readable-stream-byob-request-worker.html: Copied from LayoutTests/streams/readable-stream-byob-request.html.
* streams/readable-stream-byob-request.html:
* streams/reference-implementation/readable-stream-templated-expected.txt:
* streams/reference-implementation/readable-stream-templated.html:
* streams/reference-implementation/writable-stream-abort-expected.txt:
* streams/reference-implementation/writable-stream-expected.txt:
* webrtc/datachannel/basic-expected.txt:
* webrtc/datachannel/basic.html:
* webrtc/datachannel/mdns-ice-candidates-expected.txt:
* webrtc/datachannel/mdns-ice-candidates.html:
* webrtc/pc-detached-document-expected.txt:
* webrtc/pc-detached-document.html:
* webrtc/video-mute-expected.txt:
* webrtc/video-mute-vp8-expected.txt:
* webrtc/video-mute-vp8.html:
* webrtc/video-mute.html:

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

5 months agoFix build failure in MockNfcService.mm
ryanhaddad@apple.com [Mon, 16 Sep 2019 20:52:40 +0000 (20:52 +0000)]
Fix build failure in MockNfcService.mm
<https://webkit.org/b/201839>

Patch by David Kilzer <ddkilzer@apple.com> on 2019-09-16
Reviewed by Brady Eidson.

* UIProcess/WebAuthentication/Mock/MockNfcService.mm:
Specify instance variable names for @synthesized variables that
need to be manually released in -dealloc under MRR.

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

5 months agoSamplingProfiler should hold API lock before reporting results
tzagallo@apple.com [Mon, 16 Sep 2019 20:48:37 +0000 (20:48 +0000)]
SamplingProfiler should hold API lock before reporting results
https://bugs.webkit.org/show_bug.cgi?id=201829

Reviewed by Yusuke Suzuki.

Right now, the SamplingProfiler crashes in debug builds when trying
report results if it finds a JSFunction on the stack that doesn't have
RareData. It tries to allocate the function's rare data when we call
getOwnPropertySlot in order to get the function's name, but that fails
because we are not holding the VM's API lock. We fix it by just holding
the lock before reporting the results.

* runtime/SamplingProfiler.cpp:
(JSC::SamplingProfiler::reportDataToOptionFile):

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

5 months ago[JSC] REGRESSION (r248938): Leak of uint32_t arrays in testFastForwardCopy32()
ddkilzer@apple.com [Mon, 16 Sep 2019 20:29:43 +0000 (20:29 +0000)]
[JSC] REGRESSION (r248938): Leak of uint32_t arrays in testFastForwardCopy32()
<https://webkit.org/b/201804>

Reviewed by Saam Barati.

* b3/testb3_8.cpp:
(testFastForwardCopy32): Allocate arrays using
WTF::makeUniqueArray<uint32_t> to fix leaks caused by continue
statements.

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

5 months ago[ macOS ] Layout tests webgpu/*-triangle-strip.html are flaky failures.
russell_e@apple.com [Mon, 16 Sep 2019 20:24:39 +0000 (20:24 +0000)]
[ macOS ] Layout tests webgpu/*-triangle-strip.html are flaky failures.
https://bugs.webkit.org/show_bug.cgi?id=201827

Unreviewed Test Gardening.

* platform/mac/TestExpectations:

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

5 months agoUnreviewed, mark imported/w3c/web-platform-tests/html/webappapis/scripting/processing...
cdumez@apple.com [Mon, 16 Sep 2019 20:03:15 +0000 (20:03 +0000)]
Unreviewed, mark imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events-onerror.html as flaky on iOS.

This test was imported in r249886.

* platform/ios-wk2/TestExpectations:

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

5 months agoJSObject::putInlineSlow should not ignore "__proto__" for Proxy
sbarati@apple.com [Mon, 16 Sep 2019 19:32:39 +0000 (19:32 +0000)]
JSObject::putInlineSlow should not ignore "__proto__" for Proxy
https://bugs.webkit.org/show_bug.cgi?id=200386
<rdar://problem/53854946>

Reviewed by Yusuke Suzuki.

JSTests:

* stress/proxy-__proto__-in-prototype-chain.js: Added.
* stress/proxy-property-replace-structure-transition.js: Added.

Source/JavaScriptCore:

We used to ignore '__proto__' in putInlineSlow when the object in question
was Proxy. There is no reason for this, and it goes against the spec. So
I've removed that condition. This also has the effect that it fixes an
assertion firing inside our inline caching code which dictates that for a
property replace that the base value's structure must be equal to the
structure when we grabbed the structure prior to the put operation.
The old code caused a weird edge case where we broke this invariant.

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

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

5 months agoREGRESSION(249649): Unable to open local files in MiniBrowser on macOS
pvollan@apple.com [Mon, 16 Sep 2019 19:15:51 +0000 (19:15 +0000)]
REGRESSION(249649): Unable to open local files in MiniBrowser on macOS
https://bugs.webkit.org/show_bug.cgi?id=201798

Reviewed by Brent Fulgham.

The commit <https://trac.webkit.org/changeset/249649> introduced a MiniBrowser regression on macOS where
MiniBrowser is not able to open local files. The change set r249649 fixed a problem where the WebContent
process PID was not ready to be used when creating a sandbox extension. This happened in the cases where
the WebContent process had not finished launching when the load started. The WebContent process is also
creating sandbox extensions for the Networking process for the files being loaded, and also needs to be
passing the PID of the Networking process when creating these. This patch is addressing this by getting
the PID of the Networking process when the WebContent process is initially getting the connection to the
Networking process. The PID is then stored in the NetworkProcessConnection class, from where it is passed
to the NetworkLoadParameters, and used when creating the sandbox extension for the Networking process.

* NetworkProcess/NetworkLoadParameters.h:
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::encode const):
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::~NetworkProcessProxy):
(WebKit::NetworkProcessProxy::openNetworkProcessConnection):
(WebKit::NetworkProcessProxy::networkProcessCrashed):
(WebKit::NetworkProcessProxy::didFinishLaunching):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::loadRequestWithNavigationShared):
* UIProcess/WebProcessProxy.messages.in:
* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::NetworkProcessConnection):
* WebProcess/Network/NetworkProcessConnection.h:
(WebKit::NetworkProcessConnection::create):
(WebKit::NetworkProcessConnection::networkProcessPID const):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoadFromNetworkProcess):
* WebProcess/WebProcess.cpp:
(WebKit::getNetworkProcessConnection):
(WebKit::WebProcess::ensureNetworkProcessConnection):

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

5 months ago[GTK] Remove GraphicsContext3D dependency from the outside of WebGL
commit-queue@webkit.org [Mon, 16 Sep 2019 18:59:18 +0000 (18:59 +0000)]
[GTK] Remove GraphicsContext3D dependency from the outside of WebGL
https://bugs.webkit.org/show_bug.cgi?id=201748

Patch by ChangSeok Oh <changseok@webkit.org> on 2019-09-16
Reviewed by Alex Christensen.

This is a preliminary change to bring ANGLE support for WebGL to GTK port.
GraphicsContext3DANGLE has its own egl context but we want to make ANGLE egl context
for WebGL and other GL contexts (i.e., glx, gles/egl) for TextureMapper live together.
Mixed uses of GraphicsContext3D outside of WebGL code could cause unintended behaviors.
We want to make sure that only WebGL code uses it.

No new tests since no functionality changed.

* platform/graphics/GLContext.cpp:
* platform/graphics/GLContext.h:
* platform/graphics/glx/GLContextGLX.cpp:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::GstVideoFrameHolder::platformLayerBuffer):
(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):
* platform/graphics/gstreamer/VideoTextureCopierGStreamer.cpp:

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

5 months ago[LFC] Make the nested Geometry/MarginCollapse/Quirks c'tors private.
zalan@apple.com [Mon, 16 Sep 2019 18:44:36 +0000 (18:44 +0000)]
[LFC] Make the nested Geometry/MarginCollapse/Quirks c'tors private.
https://bugs.webkit.org/show_bug.cgi?id=201825
<rdar://problem/55403474>

Reviewed by Antti Koivisto.

The Geometry/MarginCollapse/Quirks objects should be constructed through the corresponding accessor functions.
This is also a preparation for being able to pass the layout box in to these stack objects and call geometry(layoutBox)->outOfFlowVerticalGeometry() vs. geometry()->outOfFlowVerticalGeometry(layoutBox).

* layout/FormattingContext.h:
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
* layout/blockformatting/BlockFormattingContextQuirks.cpp:
(WebCore::Layout::BlockFormattingContext::Quirks::stretchedInFlowHeight):
* layout/inlineformatting/InlineFormattingContext.h:
* layout/tableformatting/TableFormattingContext.h:

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

5 months ago[WebAuthn] REGRESSION (r249059): Leak of WKMockNFTag objects and WKMockNFTag instance...
ddkilzer@apple.com [Mon, 16 Sep 2019 18:29:49 +0000 (18:29 +0000)]
[WebAuthn] REGRESSION (r249059): Leak of WKMockNFTag objects and WKMockNFTag instance variables
<https://webkit.org/b/201813>

Reviewed by Darin Adler.

* UIProcess/WebAuthentication/Mock/MockNfcService.mm:
(-[WKMockNFTag dealloc]): Add method and release instance
variables to fix leaks.
(WebKit::MockNfcService::detectTags const): Use adoptNS() to fix
leaks of WKMockNFTag objects.

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

5 months agocheck-webkit-style: Fix warning message for std::make_unique<typename[]>
ddkilzer@apple.com [Mon, 16 Sep 2019 17:44:48 +0000 (17:44 +0000)]
check-webkit-style: Fix warning message for std::make_unique<typename[]>
<https://webkit.org/b/201818>

Reviewed by Darin Adler.

* Scripts/webkitpy/style/checkers/cpp.py:
(check_wtf_make_unique): Emit different error message when using
std::make_unique<>() to create an array.  Personalize the error
message by including the original type name, which also
demonstrates that WTF::makeUniqueArray<>() does not need square
brackets for its typename.
* Scripts/webkitpy/style/checkers/cpp_unittest.py:
(WebKitStyleTest.test_wtf_make_unique): Add test.
(WebKitStyleTest.test_wtf_make_unique_array): Ditto.

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

5 months agoUpdate feature status for Battery Status API, WebGL 2, and Dialog Element
jond@apple.com [Mon, 16 Sep 2019 17:30:19 +0000 (17:30 +0000)]
Update feature status for Battery Status API, WebGL 2, and Dialog Element
https://bugs.webkit.org/show_bug.cgi?id=201469

Reviewed by Joseph Pecoraro.

* features.json:

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

5 months agoRename [WebAccessibilityObjectWrapper _accessibilityInsertText] to accessibilityInser...
commit-queue@webkit.org [Mon, 16 Sep 2019 17:15:31 +0000 (17:15 +0000)]
Rename [WebAccessibilityObjectWrapper _accessibilityInsertText] to accessibilityInsertText to match accessibility client.
https://bugs.webkit.org/show_bug.cgi?id=201820

Patch by Andres Gonzalez <andresg_22@apple.com> on 2019-09-16
Reviewed by Chris Fleizach.

Source/WebCore:

No new tests necessary since this is a method rename.

* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper accessibilityInsertText:]):
(-[WebAccessibilityObjectWrapper _accessibilityInsertText:]): Deleted.
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityInsertText:]):
(-[WebAccessibilityObjectWrapper _accessibilityInsertText:]): Deleted.

Tools:

* DumpRenderTree/ios/AccessibilityUIElementIOS.mm:
(AccessibilityUIElement::insertText):
* DumpRenderTree/mac/AccessibilityUIElementMac.mm:
(AccessibilityUIElement::insertText):
* WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
(WTR::AccessibilityUIElement::insertText):
* WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
(WTR::AccessibilityUIElement::insertText):

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

5 months ago[LFC] Always provide a containing block width value to compute* functions.
zalan@apple.com [Mon, 16 Sep 2019 16:56:35 +0000 (16:56 +0000)]
[LFC] Always provide a containing block width value to compute* functions.
https://bugs.webkit.org/show_bug.cgi?id=201809
<rdar://problem/55383153>

Reviewed by Antti Koivisto.

The caller can always make a more informative decision about the default value when the containing block width is not available.
(Currently the only case is when computing the preferred width.)

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeBorderAndPadding):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedHorizontalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::floatingNonReplacedWidthAndMargin):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedWidthAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inFlowPositionedPositionOffset const):
(WebCore::Layout::FormattingContext::Geometry::computedPadding const):
(WebCore::Layout::FormattingContext::Geometry::computedHorizontalMargin const):
(WebCore::Layout::FormattingContext::Geometry::computedVerticalMargin const):
* layout/LayoutUnits.h:
(WebCore::Layout::UsedHorizontalValues::UsedHorizontalValues):
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):
(WebCore::Layout::InlineFormattingContext::computeWidthAndHeightForReplacedInlineBox):
* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockWidthAndMargin):

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

5 months agoREGRESSION (r243113): Leak of multiple instance variable blocks when deallocating...
ddkilzer@apple.com [Mon, 16 Sep 2019 16:41:46 +0000 (16:41 +0000)]
REGRESSION (r243113): Leak of multiple instance variable blocks when deallocating _WKAttributedStringNavigationDelegate
<https://webkit.org/b/201812>

Reviewed by Timothy Hatcher.

* UIProcess/API/Cocoa/NSAttributedString.mm:
(-[_WKAttributedStringNavigationDelegate dealloc]): Add method
to release instance variable blocks to fix potential leaks.

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

5 months agoFix leaks in DumpRenderTree and WebKitTestRunner
ddkilzer@apple.com [Mon, 16 Sep 2019 16:26:53 +0000 (16:26 +0000)]
Fix leaks in DumpRenderTree and WebKitTestRunner
<https://webkit.org/b/201814>

Reviewed by Darin Adler.

* DumpRenderTree/TestNetscapePlugIn/PluginObject.h:
(createCoreAnimationLayer): Fix signature to return CFTypeRef.
Add CF_RETURNS_RETAINED to document behavior.
* DumpRenderTree/TestNetscapePlugIn/PluginObjectMac.mm:
(createCoreAnimationLayer): Fix signature to return CFTypeRef.

* DumpRenderTree/mac/PixelDumpSupportMac.mm:
(takeWindowSnapshot): Add CF_RETURNS_RETAINED to document
behavior.
(createBitmapContextFromWebView): Fix leak of CGImageRef when
generating a replacement image.

* WebKitTestRunner/cocoa/TestRunnerWKWebView.mm: Add @dynamic
declaration for _stableStateOverride so compiler wouldn't try to
create another instance variable for it.

* WebKitTestRunner/mac/EventSenderProxy.mm:
(-[EventSenderSyntheticEvent initPressureEventAtLocation:globalLocation:stage:pressure:stageTransition:phase:time:eventNumber:window:]):
Release `cgEvent` to fix leak.

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

5 months ago[LFC][BFC] BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin should...
zalan@apple.com [Mon, 16 Sep 2019 16:11:57 +0000 (16:11 +0000)]
[LFC][BFC] BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin should not read containing block's width
https://bugs.webkit.org/show_bug.cgi?id=201807
<rdar://problem/55381342>

Reviewed by Antti Koivisto.

This is in preparation for using constraint values instead of querying the display tree for containing block geometry information.
See webkit.org/b/201795

* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedWidthAndMargin const):
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):

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

5 months agoUnreviewed, skip a couple of new WPT tests that are timing out on the bots.
cdumez@apple.com [Mon, 16 Sep 2019 16:04:47 +0000 (16:04 +0000)]
Unreviewed, skip a couple of new WPT tests that are timing out on the bots.

These tests were imported in r249886.

* TestExpectations:

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

5 months agoUnreviewed, land expectations for imported/w3c/web-platform-tests/html/browsers/offli...
cdumez@apple.com [Mon, 16 Sep 2019 15:58:13 +0000 (15:58 +0000)]
Unreviewed, land expectations for imported/w3c/web-platform-tests/html/browsers/offline/application-cache-api/api_swapcache_error.https.html.

This test was imported in r249886.

LayoutTests/imported/w3c:

* web-platform-tests/html/browsers/offline/application-cache-api/api_swapcache_error.https-expected.txt:

LayoutTests:

* TestExpectations:

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

5 months agoUnreviewed, mark imported/w3c/web-platform-tests/html/rendering/replaced-elements...
cdumez@apple.com [Mon, 16 Sep 2019 15:53:29 +0000 (15:53 +0000)]
Unreviewed, mark imported/w3c/web-platform-tests/html/rendering/replaced-elements/embedded-content/video-controls-vertical-writing-mode.html as failing

This test was imported from upstream in r249886.

* TestExpectations:

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

5 months agoUnreviewed, address flakiness of imported/w3c/web-platform-tests/html/browsers/offlin...
cdumez@apple.com [Mon, 16 Sep 2019 15:48:33 +0000 (15:48 +0000)]
Unreviewed, address flakiness of imported/w3c/web-platform-tests/html/browsers/offline/application-cache-api/api_update.https.html

Flaky since r249886.

LayoutTests/imported/w3c:

* web-platform-tests/html/browsers/offline/application-cache-api/api_update.https-expected.txt:

LayoutTests:

* TestExpectations:

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

5 months agoLayoutTests/imported/w3c:
antti@apple.com [Mon, 16 Sep 2019 14:31:37 +0000 (14:31 +0000)]
LayoutTests/imported/w3c:
    Eliminate separate simple line layout path from TextIterator
    https://bugs.webkit.org/show_bug.cgi?id=201760

    Reviewed by Zalan Bujtas.

    * web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-015-expected.txt:
    * web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-016-expected.txt:
    * web-platform-tests/innerText/getter-expected.txt:

    Two '\t' subtests flip to FAIL because this was only supported on TextIterator simple line layout path.
    This can now be fixed correctly for both paths.

Source/WebCore:
Eliminate separate simple line layout path from TextIterator
https://bugs.webkit.org/show_bug.cgi?id=201760

Reviewed by Zalan Bujtas.

Use the new line layout iterator to implement linebox traversal in TextIterator.

* WebCore.xcodeproj/project.pbxproj:
* editing/TextIterator.cpp:
(WebCore::TextIterator::advance):
(WebCore::TextIterator::handleTextNode):
(WebCore::TextIterator::handleTextBox):

InlineTextBox* -> LineLayoutInterface::TextBoxIterator
Delete the seperate simple line layout path.

(WebCore::TextIterator::handleTextNodeFirstLetter):
(WebCore::TextIterator::emitCharacter):
(WebCore::TextIterator::emitText):
* editing/TextIterator.h:
* rendering/RenderTreeAsText.cpp:
(WebCore::RenderTreeAsText::writeRenderObject):
(WebCore::write):
* rendering/SimpleLineLayoutResolver.cpp:
(WebCore::SimpleLineLayout::RunResolver::Iterator::Iterator):
(WebCore::SimpleLineLayout::RunResolver::Iterator::advanceLines):
* rendering/SimpleLineLayoutResolver.h:
(WebCore::SimpleLineLayout::RunResolver::Iterator::resolver const):
(WebCore::SimpleLineLayout::RunResolver::Iterator::inQuirksMode const):
(WebCore::SimpleLineLayout::RunResolver::Iterator::operator== const):
(WebCore::SimpleLineLayout::RunResolver::Iterator::simpleRun const):

Make RunResolver::Iterator copyable (so TextBoxIterator becomes copyable too).

* rendering/SimpleLineLayoutTextFragmentIterator.cpp:
(WebCore::SimpleLineLayout::TextFragmentIterator::findNextTextFragment):
* rendering/line/LineLayoutInterfaceTextBoxes.cpp:
(WebCore::LineLayoutInterface::TextBox::rect const):
(WebCore::LineLayoutInterface::TextBox::logicalRect const):
(WebCore::LineLayoutInterface::TextBox::hasHyphen const):
(WebCore::LineLayoutInterface::TextBox::isLeftToRightDirection const):
(WebCore::LineLayoutInterface::TextBox::dirOverride const):
(WebCore::LineLayoutInterface::TextBox::text const):
(WebCore::LineLayoutInterface::TextBox::localStartOffset const):
(WebCore::LineLayoutInterface::TextBox::localEndOffset const):
(WebCore::LineLayoutInterface::TextBox::length const):

Add offset and length functions.

(WebCore::LineLayoutInterface::TextBox::iterator const):
(WebCore::LineLayoutInterface::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutInterface::TextBoxIterator::traverseNext):
(WebCore::LineLayoutInterface::TextBoxIterator::operator== const):
(WebCore::LineLayoutInterface::TextBoxIterator::atEnd const):
(WebCore::LineLayoutInterface::Provider::firstTextBoxFor):
(WebCore::LineLayoutInterface::Provider::textBoxRangeFor):
(WebCore::LineLayoutInterface::Provider::iteratorForInlineTextBox):

Add Provider class for making iterators. It constructs and keeps SimpleLineLayout::Resolvers alive during traversal as needed.

* rendering/line/LineLayoutInterfaceTextBoxes.h:
(WebCore::LineLayoutInterface::TextBoxIterator::TextBoxIterator):
(WebCore::LineLayoutInterface::TextBoxIterator::operator bool const):
(WebCore::LineLayoutInterface::TextBoxIterator::operator== const):
(WebCore::LineLayoutInterface::TextBoxIterator::operator!= const):
(WebCore::LineLayoutInterface::TextBoxIterator::operator* const):
(WebCore::LineLayoutInterface::TextBoxIterator::operator-> const):

Make TextBoxIterator privately inherit TextBox. This way we don't need to construct temporaries and can easily implement operator->.

(WebCore::LineLayoutInterface::TextBoxRange::TextBoxRange):
(WebCore::LineLayoutInterface::TextBoxRange::begin const):
(WebCore::LineLayoutInterface::TextBoxRange::end const):

Use separate end() type of C++17 ranges.

LayoutTests:
Eliminate separate simple line layout path from TextIterator
https://bugs.webkit.org/show_bug.cgi?id=201760

Reviewed by Zalan Bujtas.

This patch makes simple and complex line layout path results from TextIterator match, causing some whitespace changes.

* animations/lineheight-animation-expected.txt:
* animations/simultaneous-start-transform-expected.txt:
* animations/width-using-ems-expected.txt:
* compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller-expected.txt:
* css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt:
* fast/events/window-events-bubble-expected.txt:
* fast/events/window-events-bubble2-expected.txt:
* fast/tokenizer/script_extra_close-expected.txt:
* legacy-animation-engine/animations/lineheight-animation-expected.txt:
* legacy-animation-engine/animations/simultaneous-start-transform-expected.txt:
* scrollingcoordinator/scrolling-tree/nested-absolute-in-overflow-expected.txt:

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

5 months agoUnreviewed build fix.
aperez@igalia.com [Mon, 16 Sep 2019 11:37:10 +0000 (11:37 +0000)]
Unreviewed build fix.

* NetworkProcess/NetworkConnectionToWebProcess.h: Add missing forward
declaration of the NetworkSession class.

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

5 months agoExpose misspelling ranges for editable content to accessibility clients.
commit-queue@webkit.org [Mon, 16 Sep 2019 09:04:42 +0000 (09:04 +0000)]
Expose misspelling ranges for editable content to accessibility clients.
https://bugs.webkit.org/show_bug.cgi?id=201752
<rdar://problem/49556828>

Patch by Andres Gonzalez <andresg_22@apple.com> on 2019-09-16
Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/misspelling-range.html

Added [WebAccessibilityObjectWrapper misspellingTextMarkerRange] and
underlying AccessibilityObject implementation to expose misspellings to
accessibility clients that provide an alternative user interface to
spell checking.
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::getMisspellingRange const):
* accessibility/AccessibilityObject.h:
* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper misspellingTextMarkerRange:direction:]):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(accessibilityMisspellingSearchCriteriaForParameterizedAttribute):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):

Tools:

Test code needed for LayoutTests/accessibility/misspelling-range.html.
* WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
* WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
* WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
(WTR::AccessibilityUIElement::misspellingTextMarkerRange):
(WTR::AccessibilityUIElement::indexForTextMarker):
* WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
(WTR::misspellingSearchParameterizedAttributeForCriteria):
(WTR::AccessibilityUIElement::misspellingTextMarkerRange):

LayoutTests:

* accessibility/misspelling-range-expected.txt: Added.
* accessibility/misspelling-range.html: Added.
* platform/ios-simulator/TestExpectations:

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

5 months agoRemove commit.h copying build steps
commit-queue@webkit.org [Mon, 16 Sep 2019 08:46:46 +0000 (08:46 +0000)]
Remove commit.h copying build steps
https://bugs.webkit.org/show_bug.cgi?id=201785

Patch by James Darpinian <jdarpinian@chromium.org> on 2019-09-16
Reviewed by Alex Christensen.

* ANGLE.xcodeproj/project.pbxproj: Remove leftover build step
* CMakeLists.txt: Remove commit.h copying
* src/common/version.h: Restore to upstream version
* src/id/commit.h: Added.
* update-angle.sh: Copy commit.h to id/commit.h at import time

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

5 months agoStore sessionID on the NetworkConnectionToWebProcess now that there is one session...
cdumez@apple.com [Mon, 16 Sep 2019 08:01:38 +0000 (08:01 +0000)]
Store sessionID on the NetworkConnectionToWebProcess now that there is one session per WebProcess
https://bugs.webkit.org/show_bug.cgi?id=201789

Reviewed by Alex Christensen.

Store sessionID on the NetworkConnectionToWebProcess now that there is one session per WebProcess.
As a result, we no longer need to pass the sessionID in each IPC from the WebProcess to the
NetworkProcess.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::create):
(WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess):
(WebKit::NetworkConnectionToWebProcess::~NetworkConnectionToWebProcess):
(WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
(WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage):
(WebKit::NetworkConnectionToWebProcess::didClose):
(WebKit::NetworkConnectionToWebProcess::createSocketStream):
(WebKit::NetworkConnectionToWebProcess::createSocketChannel):
(WebKit::NetworkConnectionToWebProcess::networkSession):
(WebKit::NetworkConnectionToWebProcess::resolveBlobReferences):
(WebKit::NetworkConnectionToWebProcess::storageSession):
(WebKit::NetworkConnectionToWebProcess::startDownload):
(WebKit::NetworkConnectionToWebProcess::convertMainResourceLoadToDownload):
(WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
(WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
(WebKit::NetworkConnectionToWebProcess::cookiesEnabled):
(WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue):
(WebKit::NetworkConnectionToWebProcess::getRawCookies):
(WebKit::NetworkConnectionToWebProcess::deleteCookie):
(WebKit::NetworkConnectionToWebProcess::registerFileBlobURL):
(WebKit::NetworkConnectionToWebProcess::registerBlobURL):
(WebKit::NetworkConnectionToWebProcess::registerBlobURLFromURL):
(WebKit::NetworkConnectionToWebProcess::registerBlobURLOptionallyFileBacked):
(WebKit::NetworkConnectionToWebProcess::registerBlobURLForSlice):
(WebKit::NetworkConnectionToWebProcess::unregisterBlobURL):
(WebKit::NetworkConnectionToWebProcess::blobSize):
(WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):
(WebKit::NetworkConnectionToWebProcess::removeStorageAccessForFrame):
(WebKit::NetworkConnectionToWebProcess::clearPageSpecificDataForResourceLoadStatistics):
(WebKit::NetworkConnectionToWebProcess::logUserInteraction):
(WebKit::NetworkConnectionToWebProcess::hasStorageAccess):
(WebKit::NetworkConnectionToWebProcess::requestStorageAccess):
(WebKit::NetworkConnectionToWebProcess::requestStorageAccessUnderOpener):
(WebKit::NetworkConnectionToWebProcess::startTrackingResourceLoad):
(WebKit::NetworkConnectionToWebProcess::establishIDBConnectionToServer):
(WebKit::NetworkConnectionToWebProcess::unregisterSWConnection):
(WebKit::NetworkConnectionToWebProcess::establishSWServerConnection):
(WebKit::NetworkConnectionToWebProcess::establishSWContextConnection):
* NetworkProcess/NetworkConnectionToWebProcess.h:
(WebKit::NetworkConnectionToWebProcess::sessionID const):
(WebKit::NetworkConnectionToWebProcess::startDownload):
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::start):
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::openNetworkProcessConnection):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::sessionID const):
* UIProcess/WebProcessProxy.h:
* WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
(WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):
* WebProcess/FileAPI/BlobRegistryProxy.cpp:
(WebKit::BlobRegistryProxy::registerFileBlobURL):
(WebKit::BlobRegistryProxy::registerBlobURL):
(WebKit::BlobRegistryProxy::registerBlobURLOptionallyFileBacked):
(WebKit::BlobRegistryProxy::unregisterBlobURL):
(WebKit::BlobRegistryProxy::registerBlobURLForSlice):
(WebKit::BlobRegistryProxy::blobSize):
* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles):
* WebProcess/Network/WebSocketChannel.cpp:
(WebKit::WebSocketChannel::connect):
* WebProcess/Network/WebSocketStream.cpp:
(WebKit::WebSocketStream::WebSocketStream):
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::WebSWClientConnection):
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::m_userAgent):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::detachedFromParent2):
(WebKit::WebFrameLoaderClient::dispatchWillChangeDocument):
* WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:
(WebKit::WebResourceLoadObserver::requestStorageAccessUnderOpener):
(WebKit::WebResourceLoadObserver::logUserInteractionWithReducedTimeResolution):
* WebProcess/WebPage/WebCookieJar.cpp:
(WebKit::WebCookieJar::cookies const):
(WebKit::WebCookieJar::setCookies):
(WebKit::WebCookieJar::cookiesEnabled const):
(WebKit::WebCookieJar::cookieRequestHeaderFieldValue const):
(WebKit::WebCookieJar::getRawCookies const):
(WebKit::WebCookieJar::deleteCookie):
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::startDownload):
(WebKit::WebFrame::convertMainResourceLoadToDownload):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::close):
(WebKit::WebPage::hasStorageAccess):
(WebKit::WebPage::requestStorageAccess):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::createWebPage):
(WebKit::WebProcess::removeWebPage):
* WebProcess/WebProcess.h:
(WebKit::WebProcess::sessionID const):

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

5 months agoREGRESSION(r249142): [GTK] Epiphany delayed page loads continue indefinitely
carlosgc@webkit.org [Mon, 16 Sep 2019 07:49:10 +0000 (07:49 +0000)]
REGRESSION(r249142): [GTK] Epiphany delayed page loads continue indefinitely
https://bugs.webkit.org/show_bug.cgi?id=201544

Reviewed by Michael Catanzaro.

Source/WebKit:

WebPageProxy::loadAlternateHTML() is an exception, because it's an API request but always sets the navigationID
to 0. We always want to reset the pending API request URL when alternate HTML load starts.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared): Check also that it's an API alternate HTML load
to reset the pending API request URL.

Tools:

Add new test cases.

* TestWebKitAPI/Tests/WebKitGLib/TestLoaderClient.cpp:
(testWebViewActiveURI):
(testWebViewIsLoading):
* TestWebKitAPI/glib/WebKitGLib/LoadTrackingTest.cpp:
(loadChangedCallback):
(LoadTrackingTest::loadAlternateHTML):
(LoadTrackingTest::reset):
* TestWebKitAPI/glib/WebKitGLib/LoadTrackingTest.h:

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

5 months agoREGRESSION (r248592): Leak of CFDictionaryRef in WebKit::NetworkRTCProvider::proxyInf...
ddkilzer@apple.com [Mon, 16 Sep 2019 05:51:49 +0000 (05:51 +0000)]
REGRESSION (r248592): Leak of CFDictionaryRef in WebKit::NetworkRTCProvider::proxyInfoFromSession()
<https://webkit.org/b/201811>

Reviewed by Youenn Fablet.

* NetworkProcess/webrtc/NetworkRTCProvider.mm:
(WebKit::NetworkRTCProvider::proxyInfoFromSession): Use
RetainPtr<> to fix the leak.

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

5 months ago[WebIDL] Derived dictionaries should inherit their inherited dictionaries' partials
aestes@apple.com [Mon, 16 Sep 2019 00:41:07 +0000 (00:41 +0000)]
[WebIDL] Derived dictionaries should inherit their inherited dictionaries' partials
https://bugs.webkit.org/show_bug.cgi?id=201802

Reviewed by Sam Weinig.

Prior to this change, a dictionary D that inherits from dictionary B would not inherit B's
partial dictionaries. Fixed this by moving supplemental dependencies processing from
generate-bindings.pl to CodeGenerator.pm and reusing it in GetDictionaryByType.

Added new bindings tests.

* bindings/scripts/CodeGenerator.pm:
(new):
(ProcessDocument):
(ProcessSupplementalDependencies):
(shouldPropertyBeExposed):
(GetDictionaryByType):
* bindings/scripts/generate-bindings.pl:
(generateBindings):
(shouldPropertyBeExposed): Deleted.
* bindings/scripts/test/JS/JSTestDerivedDictionary.cpp: Added.
(WebCore::convertDictionary<TestDerivedDictionary>):
(WebCore::convertDictionaryToJS):
* bindings/scripts/test/JS/JSTestDerivedDictionary.h: Added.
* bindings/scripts/test/JS/JSTestInheritedDictionary.cpp: Added.
(WebCore::convertDictionary<TestInheritedDictionary>):
(WebCore::convertDictionaryToJS):
* bindings/scripts/test/JS/JSTestInheritedDictionary.h: Added.
* bindings/scripts/test/TestDerivedDictionary.idl: Added.
* bindings/scripts/test/TestInheritedDictionary.idl: Added.
* bindings/scripts/test/TestSupplemental.idl:

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

5 months agoMissing call to [self init] in -[WebScrollbarPartAnimation initWithScrollbar:featureT...
ddkilzer@apple.com [Sun, 15 Sep 2019 21:43:27 +0000 (21:43 +0000)]
Missing call to [self init] in -[WebScrollbarPartAnimation initWithScrollbar:featureToAnimate:animateFrom:animateTo:duration:]
<https://webkit.org/b/201806>

Reviewed by Simon Fraser.

* platform/mac/ScrollAnimatorMac.mm:
(-[WebScrollbarPartAnimation initWithScrollbar:featureToAnimate:animateFrom:animateTo:duration:]):
Call [self init] and return early if the result is nil.

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

5 months agoRe-sync HTML web-platform-tests from upstream
cdumez@apple.com [Sun, 15 Sep 2019 19:25:50 +0000 (19:25 +0000)]
Re-sync HTML web-platform-tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=201753

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Re-sync HTML web-platform-tests from upstream 8893b1bcfc2ca0675f4e81.

* web-platform-tests/html/*: Updated.

LayoutTests:

* TestExpectations:
* platform/gtk/TestExpectations:
* platform/ios-wk1/TestExpectations:
* platform/ios/TestExpectations:
* platform/mac-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
* platform/mac/TestExpectations:
* platform/mac/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location_hash-expected.txt:
* platform/win/TestExpectations:
* tests-options.json:

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

5 months agoLeak of NSMapTable in -[JSVirtualMachine addManagedReference:withOwner:]
ddkilzer@apple.com [Sun, 15 Sep 2019 17:17:02 +0000 (17:17 +0000)]
Leak of NSMapTable in -[JSVirtualMachine addManagedReference:withOwner:]
<https://webkit.org/b/201803>

Reviewed by Dan Bernstein.

* API/JSVirtualMachine.mm:
(-[JSVirtualMachine addManagedReference:withOwner:]): Use
RetainPtr<> to fix the leak.

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

5 months agoblock-spammers should obtain credentials the same way as webkit-patch
ddkilzer@apple.com [Sun, 15 Sep 2019 14:14:59 +0000 (14:14 +0000)]
block-spammers should obtain credentials the same way as webkit-patch
<https://webkit.org/b/201733>

Reviewed by Lucas Forschler.

* Scripts/block-spammers: Import Credentials from webkitpy.
Remove unused imports.  Enable logging at info level to match
webkit-patch.
(get_bugzilla_token): Use Credentials module to get
bugs.webkit.org credentials.
* Scripts/webkitpy/common/net/credentials.py:
(Credentials._run_security_tool): Change logging level from
error to info since multiple attempts are made at reading the
keychain.  Fix typos in comment.
(Credentials._credentials_from_security_command): Extract common
logic from Credentials._credentials_from_keychain into new
method.
(Credentials._credentials_from_keychain): Make fallback logic
for checking for credentials in the keychain more consistent and
easier to read.  Add error logging if no credentials are found.

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

5 months ago[GTK][WPE] Do not run the Bubblewrap executable when configuring for cross-compilation
aperez@igalia.com [Sun, 15 Sep 2019 13:30:01 +0000 (13:30 +0000)]
[GTK][WPE] Do not run the Bubblewrap executable when configuring for cross-compilation
https://bugs.webkit.org/show_bug.cgi?id=201340

Reviewed by Konstantin Tokarev.

* Source/cmake/BubblewrapSandboxChecks.cmake: Do not run the
Bubblewrap executable when cross-compiling to guess its version.
Emit a warning instead and trust that valid run-time paths will
be set using the BWRAP_EXECUTABLE and DBUS_PROXY_EXECUTABLE
variables. While at it, fix the regular expression used to match
the version string in the Bubblewrap output when not cross-compiling.

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

5 months ago[GTK][WPE] Check for a Snap sandbox a bit harder
aperez@igalia.com [Sat, 14 Sep 2019 22:45:30 +0000 (22:45 +0000)]
[GTK][WPE] Check for a Snap sandbox a bit harder
https://bugs.webkit.org/show_bug.cgi?id=201793

Reviewed by Michael Catanzaro.

* UIProcess/Launcher/glib/ProcessLauncherGLib.cpp:
(WebKit::isInsideSnap): Check whether the SNAP_NAME and SNAP_REVISION
environment variables are defined as well.

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

5 months ago[WebGPU] Make WebGPURenderPipeline and WebGPUComputePipeline inherit from GPUObjectBase
justin_fan@apple.com [Sat, 14 Sep 2019 22:31:02 +0000 (22:31 +0000)]
[WebGPU] Make WebGPURenderPipeline and WebGPUComputePipeline inherit from GPUObjectBase
https://bugs.webkit.org/show_bug.cgi?id=201207

Reviewed by Dean Jackson.

Make remaining WebGPU "client" classes manage their error scopes, instead of the internal classes.
Matches Web/GPUBuffer, and allows "invalid" WebGPU objects to create errors.

Covered by existing tests.

* Modules/webgpu/WebGPUComputePipeline.cpp:
(WebCore::WebGPUComputePipeline::create):
(WebCore::WebGPUComputePipeline::WebGPUComputePipeline):
* Modules/webgpu/WebGPUComputePipeline.h:
* Modules/webgpu/WebGPUDevice.cpp:
(WebCore::WebGPUDevice::createRenderPipeline const):
(WebCore::WebGPUDevice::createComputePipeline const):
* Modules/webgpu/WebGPURenderPipeline.cpp:
(WebCore::WebGPURenderPipeline::create):
(WebCore::WebGPURenderPipeline::WebGPURenderPipeline):
* Modules/webgpu/WebGPURenderPipeline.h:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/gpu/GPUComputePipeline.h:
* platform/graphics/gpu/GPURenderPipeline.h:
* platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::GPUComputePipeline::tryCreate):
(WebCore::GPUComputePipeline::GPUComputePipeline):
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::GPURenderPipeline::tryCreate):
(WebCore::GPURenderPipeline::GPURenderPipeline):

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

5 months agoRetire x86 32bit JIT support
ysuzuki@apple.com [Sat, 14 Sep 2019 19:36:29 +0000 (19:36 +0000)]
Retire x86 32bit JIT support
https://bugs.webkit.org/show_bug.cgi?id=201790

Reviewed by Mark Lam.

Source/JavaScriptCore:

Now, Xcode no longer has ability to build 32bit binary, so we cannot even test it on macOS.
Fedora stops shipping x86 32bit kernel. Our x86/x86_64 JIT requires SSE2, and so such relatively modern CPUs
can use JIT by switching x86 to x86_64. And these CPUs are modern enough to run CLoop at high speed.
WebKit already disabled x86 JIT by default while the implementation exists. So literary, it is not tested.

While x86 32bit becomes less useful, x86 32bit JIT backend is very complicated and is being a major maintenance burden.
This is due to very few # of registers. Which scatters a lot of isX86 / CPU(X86) in Baseline, DFG, and Yarr.

This patch retires x86 JIT support from JavaScriptCore and CSS JIT. We still keep MacroAssembler and GPRInfo / FPRInfo,
MachineContext information since they are useful even though JIT is not supported.

* dfg/DFGArrayMode.cpp:
(JSC::DFG::ArrayMode::refine const):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::compileExceptionHandlers):
* dfg/DFGOSRExitCompilerCommon.cpp:
(JSC::DFG::osrWriteBarrier):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileArithDiv):
(JSC::DFG::SpeculativeJIT::compileArithMod):
(JSC::DFG::SpeculativeJIT::compileCreateRest):
(JSC::DFG::SpeculativeJIT::compileGetDirectPname):
* dfg/DFGSpeculativeJIT.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGThunks.cpp:
(JSC::DFG::osrExitGenerationThunkGenerator):
* ftl/FTLThunks.cpp:
(JSC::FTL::slowPathCallThunkGenerator):
* jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::callExceptionFuzz):
(JSC::AssemblyHelpers::debugCall):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitComputeButterflyIndexingMask):
* jit/CCallHelpers.h:
(JSC::CCallHelpers::setupArgumentsImpl):
(JSC::CCallHelpers::prepareForTailCallSlow):
* jit/CallFrameShuffler.cpp:
(JSC::CallFrameShuffler::prepareForTailCall):
* jit/JIT.cpp:
(JSC::JIT::privateCompileExceptionHandlers):
* jit/JITArithmetic32_64.cpp:
(JSC::JIT::emit_op_mod):
(JSC::JIT::emitSlow_op_mod):
* jit/SlowPathCall.h:
(JSC::JITSlowPathCall::call):
* jit/ThunkGenerators.cpp:
(JSC::nativeForGenerator):
(JSC::arityFixupGenerator):
* wasm/WasmAirIRGenerator.cpp:
(JSC::Wasm::AirIRGenerator::emitModOrDiv):
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::generateDotStarEnclosure):
(JSC::Yarr::YarrGenerator::generateEnter):
(JSC::Yarr::YarrGenerator::generateReturn):
(JSC::Yarr::YarrGenerator::compile):
* yarr/YarrJIT.h:

Source/WebCore:

* cssjit/FunctionCall.h:
(WebCore::FunctionCall::callAndBranchOnBooleanReturnValue):
(WebCore::FunctionCall::swapArguments):

Source/WTF:

* wtf/Platform.h:

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

5 months ago[LFC] FormattingContext::Geometry::inFlowPositionedPositionOffset should not read...
zalan@apple.com [Sat, 14 Sep 2019 18:52:02 +0000 (18:52 +0000)]
[LFC] FormattingContext::Geometry::inFlowPositionedPositionOffset should not read containing block's width
https://bugs.webkit.org/show_bug.cgi?id=201797
<rdar://problem/55366244>

Reviewed by Antti Koivisto.

This is in preparation for using constraint values instead of querying the display tree for containing block geometry information.
See webkit.org/b/201795

* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::inFlowPositionedPositionOffset const):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::placeInFlowPositionedChildren):
* layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
(WebCore::Layout::InlineFormattingContext::InlineLayout::createDisplayRuns const):

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

5 months ago[LFC] FormattingContext::Geometry::inlineReplacedHeightAndMargin should not read...
zalan@apple.com [Sat, 14 Sep 2019 18:05:58 +0000 (18:05 +0000)]
[LFC] FormattingContext::Geometry::inlineReplacedHeightAndMargin should not read containing block's width
https://bugs.webkit.org/show_bug.cgi?id=201796
<rdar://problem/55366109>

Reviewed by Antti Koivisto.

This is in preparation for using constraint values instead of querying the display tree for containing block geometry information.
See webkit.org/b/201795

* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases const):
(WebCore::Layout::FormattingContext::Geometry::floatingReplacedHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::floatingHeightAndMargin const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowHeightAndMargin):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::computeHeightAndMargin):
* layout/inlineformatting/InlineFormattingContext.h:
* layout/inlineformatting/InlineFormattingContextGeometry.cpp:
(WebCore::Layout::InlineFormattingContext::Geometry::inlineBlockHeightAndMargin const):

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

5 months ago[LFC] FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry should not read...
zalan@apple.com [Sat, 14 Sep 2019 17:23:28 +0000 (17:23 +0000)]
[LFC] FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry should not read containing block's width.
https://bugs.webkit.org/show_bug.cgi?id=201794
<rdar://problem/55365669>

Reviewed by Antti Koivisto.

This is in preparation for using constraint values instead of querying the display tree for containing block geometry information.
See webkit.org/b/201795

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry const):

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

5 months agonewController may be moved several times under SWClientConnection::notifyClientsOfCon...
cdumez@apple.com [Sat, 14 Sep 2019 16:00:56 +0000 (16:00 +0000)]
newController may be moved several times under SWClientConnection::notifyClientsOfControllerChange()
https://bugs.webkit.org/show_bug.cgi?id=201792
<rdar://problem/55351284>

Reviewed by Youenn Fablet.

Stop WTFMove()'ing inside the for loop.

* workers/service/SWClientConnection.cpp:
(WebCore::SWClientConnection::notifyClientsOfControllerChange):

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

5 months ago[LFC] FormattingContext::Geometry::computedHeightValue should not read containing...
zalan@apple.com [Sat, 14 Sep 2019 13:55:34 +0000 (13:55 +0000)]
[LFC] FormattingContext::Geometry::computedHeightValue should not read containing block's height.
https://bugs.webkit.org/show_bug.cgi?id=201791
<rdar://problem/55361695>

Reviewed by Antti Koivisto.

While sizing/positioning a particular box, we oftentimes need some containing block geometry information.
The idea here is that instead of calling formattingContext().geometry(containingBlock), these constraint values
would be pushed in to those compute* functions. It helps controlling the access to the display box tree and
prevents formatting context escaping.

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::computeOutOfFlowVerticalGeometry):
* layout/FormattingContext.h:
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::computedHeightValue const):
(WebCore::Layout::FormattingContext::Geometry::computedMaxHeight const):
(WebCore::Layout::FormattingContext::Geometry::computedMinHeight const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::inlineReplacedHeightAndMargin const):
* layout/LayoutUnits.h:
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::computeHeightAndMargin):

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

5 months agoAdd release logging in WebLoaderStrategy to check that a load is going through servic...
youenn@apple.com [Sat, 14 Sep 2019 10:11:23 +0000 (10:11 +0000)]
Add release logging in WebLoaderStrategy to check that a load is going through service worker
https://bugs.webkit.org/show_bug.cgi?id=201761

Reviewed by Chris Dumez.

This allows identifying whether a load remains pending on the service worker fetch path.

* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoad):

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

5 months agoASSERTION FAILED: !renderer() in WebCore::Text::~Text
antti@apple.com [Sat, 14 Sep 2019 08:52:50 +0000 (08:52 +0000)]
ASSERTION FAILED: !renderer() in  WebCore::Text::~Text
https://bugs.webkit.org/show_bug.cgi?id=172514
<rdar://problem/32470509>

Unreviewed, this assert should be fixed now.

* TestExpectations:

Unskipping imported/w3c/web-platform-tests/innerText/getter.html on debug

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

5 months agoWPT importer should check META global tag in .any.js files to generate the valid...
youenn@apple.com [Sat, 14 Sep 2019 06:23:43 +0000 (06:23 +0000)]
WPT importer should check META global tag in .any.js files to generate the valid .html stub files
https://bugs.webkit.org/show_bug.cgi?id=201718

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

* web-platform-tests/infrastructure/server/context.any.serviceworker-expected.txt: Added.
* web-platform-tests/infrastructure/server/context.any.serviceworker.html: Added.
* web-platform-tests/infrastructure/server/secure-context.https.any.serviceworker-expected.txt: Added.
* web-platform-tests/infrastructure/server/secure-context.https.any.serviceworker.html: Added.

Tools:

Read meta tag information to select the environments where the any.js template tests will be run.
Added support to run service worker tests from any.js template tests.

Covered by unit test.
Since we import only a single repository nowadays, use a test config file with just one repository
to simplify the new test.

* Scripts/webkitpy/w3c/test_importer.py:
(TestImporter.__init__):
(TestImporter.readEnvironmentsForTemplateTest):
(TestImporter.write_html_files_for_templated_js_tests):
* Scripts/webkitpy/w3c/test_importer_unittest.py:
(TestImporterTest.test_import_dir_with_no_tests_and_no_hg):
(TestImporterTest.test_import_dir_with_no_tests):
(TestImporterTest.test_import_dir_with_empty_init_py):
(TestImporterTest.test_harnesslinks_conversion):
(TestImporterTest.test_submodules_generation):
(test_checkout_directory):
(test_clean_directory_option):
(test_git_ignore_generation):
(test_initpy_generation):
(test_remove_obsolete_content):
(test_manual_slow_test):
(test_webkit_test_runner_options):
(test_webkit_test_runner_import_reftests_with_absolute_paths_download):
(test_webkit_test_runner_import_reftests_with_absolute_paths_from_source_dir):
(test_template_test):

LayoutTests:

* platform/mac-wk1/TestExpectations:
Skipping service worker tests.

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

5 months ago[MacOS/iOS] imported/w3c/web-platform-tests/service-workers/cache-storage/servicework...
youenn@apple.com [Sat, 14 Sep 2019 05:14:13 +0000 (05:14 +0000)]
[MacOS/iOS] imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-abort.https.html is sometimes crashing in Debug
https://bugs.webkit.org/show_bug.cgi?id=201686

Reviewed by Alexey Proskuryakov.

A load might be cancelled shortly after being started in network process.
In that case, NetworkDataTaskCocoa might be destroyed, thus removed from the ID to task map
but some handlers might still be called until the NSURLSessionTask is finished cancelling.
This happens for authentication challenges.
In case where the NSURLSessionTask is cancelling, return early instead of processing the challenge.

Covered by LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/window/cache-abort.https.html and LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-abort.https.html no longer crashing in debug.

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):

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

5 months agojsc -d stopped working.
mark.lam@apple.com [Sat, 14 Sep 2019 02:22:49 +0000 (02:22 +0000)]
jsc -d stopped working.
https://bugs.webkit.org/show_bug.cgi?id=201787

Reviewed by Joseph Pecoraro.

The reason is because, in this case, the jsc shell is trying to set an option
after the VM has been instantiated.  The fix is simply to move all options
initialization before the VM is instantiated.

* jsc.cpp:
(runWithOptions):
(jscmain):

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

5 months agoWeb Inspector: HTML Formatter - XML mode
joepeck@webkit.org [Sat, 14 Sep 2019 02:16:00 +0000 (02:16 +0000)]
Web Inspector: HTML Formatter - XML mode
https://bugs.webkit.org/show_bug.cgi?id=201758

Reviewed by Devin Rousso.

Source/WebInspectorUI:

* Tools/HTMLFormatter/index.html:
* Tools/SourceMaps/index.html:
Update Tools to more easily test XML.

* UserInterface/Proxies/FormatterWorkerProxy.js:
(WI.FormatterWorkerProxy.prototype.formatXML):
* UserInterface/Views/TextEditor.js:
(WI.TextEditor.prototype.hasFormatter):
(WI.TextEditor.prototype._startWorkerPrettyPrint):
Allow formatting XML content.

* UserInterface/Workers/Formatter/FormatterWorker.js:
(FormatterWorker.prototype.formatHTML):
(FormatterWorker.prototype.formatXML):
Expose "formatXML".

* UserInterface/Workers/Formatter/HTMLFormatter.js:
(HTMLFormatter.let.dom):
(HTMLFormatter):
(HTMLFormatter.prototype._shouldHaveNoChildren):
(HTMLFormatter.prototype._before):
(HTMLFormatter.prototype._after):
* UserInterface/Workers/Formatter/HTMLParser.js:
(HTMLParser.prototype.parseDocument):
* UserInterface/Workers/Formatter/HTMLTreeBuilderFormatter.js:
(HTMLTreeBuilderFormatter.prototype._isEmptyNode):
Give the HTMLFormatter and related classes an XML mode that
has less of the smarts of XML.

LayoutTests:

* inspector/formatting/formatting-xml-expected.txt: Added.
* inspector/formatting/formatting-xml.html: Added.
* inspector/formatting/resources/formatting-utilities.js:
(TestPage.registerInitializer.async.runFormattingTest):
* inspector/formatting/resources/xml-tests/atom-expected.xml: Added.
* inspector/formatting/resources/xml-tests/atom.xml: Added.
* inspector/formatting/resources/xml-tests/basic-expected.xml: Added.
* inspector/formatting/resources/xml-tests/basic.xml: Added.
* inspector/formatting/resources/xml-tests/rss-expected.xml: Added.
* inspector/formatting/resources/xml-tests/rss.xml: Added.
* inspector/formatting/resources/xml-tests/valid-html-invalid-xml-expected.xml: Added.
* inspector/formatting/resources/xml-tests/valid-html-invalid-xml.xml: Added.
* inspector/formatting/resources/xml-tests/xslt-expected.xml: Added.
* inspector/formatting/resources/xml-tests/xslt.xml: Added.

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

5 months agoWeb Inspector: HTML Formatting: Handle infinite loop for incomplete script data
joepeck@webkit.org [Sat, 14 Sep 2019 01:57:35 +0000 (01:57 +0000)]
Web Inspector: HTML Formatting: Handle infinite loop for incomplete script data
https://bugs.webkit.org/show_bug.cgi?id=201769

Reviewed by Devin Rousso.

Source/WebInspectorUI:

* UserInterface/Workers/Formatter/HTMLParser.js:
(HTMLParser):
Handle EOF in the script data's loop.
Better handle EOF at the end of text data.

LayoutTests:

* inspector/formatting/formatting-html-expected.txt:
* inspector/formatting/formatting-html.html:
* inspector/formatting/resources/html-tests/eof-7-expected.html: Added.
* inspector/formatting/resources/html-tests/eof-7.html: Added.
* inspector/formatting/resources/html-tests/eof-8-expected.html: Added.
* inspector/formatting/resources/html-tests/eof-8.html: Added.
* inspector/formatting/resources/html-tests/eof-9-expected.html: Added.
* inspector/formatting/resources/html-tests/eof-9.html: Added.

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

5 months agowatchOS requires PageSize alignment of 16K for JSC::Config.
mark.lam@apple.com [Sat, 14 Sep 2019 01:52:16 +0000 (01:52 +0000)]
watchOS requires PageSize alignment of 16K for JSC::Config.
https://bugs.webkit.org/show_bug.cgi?id=201786
<rdar://problem/55357890>

Reviewed by Yusuke Suzuki.

* runtime/JSCConfig.h:

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

5 months agoUnreviewed, follow-up fix after r249842
ysuzuki@apple.com [Sat, 14 Sep 2019 01:12:15 +0000 (01:12 +0000)]
Unreviewed, follow-up fix after r249842
https://bugs.webkit.org/show_bug.cgi?id=201750

Michael reviewed this offline. When performing nearCall, we need to invalidate cache registers.

* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::nearCall):
(JSC::MacroAssemblerARM64::threadSafePatchableNearCall):

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

5 months agoWeb Inspector: Improve auto completion typing performance by avoiding global forced...
joepeck@webkit.org [Sat, 14 Sep 2019 00:50:27 +0000 (00:50 +0000)]
Web Inspector: Improve auto completion typing performance by avoiding global forced layouts
https://bugs.webkit.org/show_bug.cgi?id=201735

Reviewed by Devin Rousso.

* UserInterface/Views/Main.css:
(#layout-measurement-container):
* UserInterface/Base/Main.js:
(WI.measureElement):
Provide a helper for measuring an element in a hidden container
that helps avoid more global layout.

* UserInterface/Views/CompletionSuggestionsView.js:
(WI.CompletionSuggestionsView.prototype.show):
Use measure element to avoid a global forced layout.

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

5 months agoProvide a prototype for AR QuickLook to trigger processing in the originating page
dino@apple.com [Sat, 14 Sep 2019 00:35:57 +0000 (00:35 +0000)]
Provide a prototype for AR QuickLook to trigger processing in the originating page
https://bugs.webkit.org/show_bug.cgi?id=201371
<rdar://54904781>

Disable the test for the moment.

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

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

5 months agoDate.prototype.toJSON does not execute steps 1-2
commit-queue@webkit.org [Sat, 14 Sep 2019 00:24:23 +0000 (00:24 +0000)]
Date.prototype.toJSON does not execute steps 1-2
https://bugs.webkit.org/show_bug.cgi?id=105282

Patch by Alexey Shvayka <shvaikalesh@gmail.com> on 2019-09-13
Reviewed by Ross Kirsling.

JSTests:

* test262/expectations.yaml: Mark 2 test cases as passing.

Source/JavaScriptCore:

According to https://tc39.es/ecma262/#sec-built-in-function-objects, built-in methods must be
strict mode functions. Before this change, `this` value in Date.prototype.toJSON was resolved
using sloppy mode semantics, resulting in `toISOString` being called on global object if `this`
value equals `null` or `undefined`.

* runtime/DatePrototype.cpp:
(JSC::dateProtoFuncToJSON): Resolve thisValue using strict semantics and simplify std::isfinite check.

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

5 months agoLayout Test webgl/2.0.0/conformance/glsl/misc/shaders-with-invariance.html is failing...
russell_e@apple.com [Sat, 14 Sep 2019 00:12:51 +0000 (00:12 +0000)]
Layout Test webgl/2.0.0/conformance/glsl/misc/shaders-with-invariance.html is failing on iOS.
https://bugs.webkit.org/show_bug.cgi?id=201784

Unreviewed Test Gardening.

* platform/ios/TestExpectations: Marked Test as Failing.

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

5 months agoiOS 13: Some SPI targets 13.1
jbedard@apple.com [Sat, 14 Sep 2019 00:00:44 +0000 (00:00 +0000)]
iOS 13: Some SPI targets 13.1
https://bugs.webkit.org/show_bug.cgi?id=201777

Reviewed by Alexey Proskuryakov.

* wtf/Platform.h:

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

5 months agoperformJITMemcpy() should do its !Gigacage assertion on exit.
mark.lam@apple.com [Fri, 13 Sep 2019 23:45:16 +0000 (23:45 +0000)]
performJITMemcpy() should do its !Gigacage assertion on exit.
https://bugs.webkit.org/show_bug.cgi?id=201780
<rdar://problem/55354867>

Reviewed by Robin Morisset.

Re-doing previous fix.

* jit/ExecutableAllocator.h:
(JSC::performJITMemcpy):
(JSC::GigacageAssertScope::GigacageAssertScope): Deleted.
(JSC::GigacageAssertScope::~GigacageAssertScope): Deleted.

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

5 months agoperformJITMemcpy() should do its !Gigacage assertion on exit.
mark.lam@apple.com [Fri, 13 Sep 2019 23:18:51 +0000 (23:18 +0000)]
performJITMemcpy() should do its !Gigacage assertion on exit.
https://bugs.webkit.org/show_bug.cgi?id=201780
<rdar://problem/55354867>

Reviewed by Robin Morisset.

* jit/ExecutableAllocator.h:
(JSC::GigacageAssertScope::GigacageAssertScope):
(JSC::GigacageAssertScope::~GigacageAssertScope):
(JSC::performJITMemcpy):

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

5 months agoWe should never fail to allocate VA for the Gigacage.
mark.lam@apple.com [Fri, 13 Sep 2019 22:06:51 +0000 (22:06 +0000)]
We should never fail to allocate VA for the Gigacage.
https://bugs.webkit.org/show_bug.cgi?id=201774
<rdar://problem/55352042>

Reviewed by Yusuke Suzuki.

Unfortunately, this is still not true for OS(LINUX).  So, I'll leave the
GIGACAGE_ALLOCATION_CAN_FAIL code in place but disable it for everything else.

* bmalloc/Gigacage.h:

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

5 months agoProvide a prototype for AR QuickLook to trigger processing in the originating page
dino@apple.com [Fri, 13 Sep 2019 21:43:18 +0000 (21:43 +0000)]
Provide a prototype for AR QuickLook to trigger processing in the originating page
https://bugs.webkit.org/show_bug.cgi?id=201371
<rdar://54904781>

Reviewed by Simon Fraser.

Source/WebCore:

* dom/Document.cpp:
(WebCore::Document::dispatchSystemPreviewActionEvent): Create and dispatch a MessageEvent.
* dom/Document.h:

* html/HTMLAnchorElement.cpp: Send along the page and frame identifiers for this
object to ensure that any reply goes to the correct place.
(WebCore::HTMLAnchorElement::handleClick):

* loader/FrameLoadRequest.h: Use the new SystemPreviewInfo type.
(WebCore::FrameLoadRequest::isSystemPreview const):
(WebCore::FrameLoadRequest::systemPreviewInfo const):
(WebCore::FrameLoadRequest::systemPreviewRect const): Deleted.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadURL):

* loader/FrameLoaderTypes.h: Provide encoders for the type.
(WebCore::SystemPreviewInfo::encode const):
(WebCore::SystemPreviewInfo::decode):

* platform/network/ResourceRequestBase.cpp: Use the new type.
(WebCore::ResourceRequestBase::isSystemPreview const):
(WebCore::ResourceRequestBase::systemPreviewInfo const):
(WebCore::ResourceRequestBase::setSystemPreviewInfo):
(WebCore::ResourceRequestBase::setSystemPreview): Deleted.
(WebCore::ResourceRequestBase::systemPreviewRect const): Deleted.
(WebCore::ResourceRequestBase::setSystemPreviewRect): Deleted.
* platform/network/ResourceRequestBase.h:

* testing/Internals.cpp: Expose the frame and page identifiers to testing.
(WebCore::Internals::frameIdentifier const):
(WebCore::Internals::pageIdentifier const):
* testing/Internals.h:
* testing/Internals.idl:

Source/WebKit:

Provide a way for a Web page to know if an action in the AR scene
was performed, if and only if the system AR library calls a delegate with
particular parameters. Post a message to the originating frame so
the page can detect the action.

* Scripts/webkit/messages.py: Include the right header for SystemPreviewInfo.

* Shared/WebCoreArgumentCoders.cpp: Use SystemPreviewInfo.
(IPC::ArgumentCoder<ResourceRequest>::encode):
(IPC::ArgumentCoder<ResourceRequest>::decode):

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _triggerSystemPreviewActionOnFrame:page:]): New helper/test function
to trigger the system preview action.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:

* UIProcess/Cocoa/DownloadClient.mm: Use new type.
(WebKit::DownloadClient::didStart):

* UIProcess/Cocoa/SystemPreviewControllerCocoa.mm: Implement the delegate so that
we can detect an action. When it happens, tell the WebPageProxy to send a message.

* UIProcess/Downloads/DownloadProxy.h: Use SystemPreviewInfo type.
(WebKit::DownloadProxy::systemPreviewDownloadInfo const):
(WebKit::DownloadProxy::systemPreviewDownloadRect const): Deleted.

* UIProcess/SystemPreviewController.h:
(WebKit::SystemPreviewController::previewInfo const):

* UIProcess/WebPageProxy.cpp: Send it over to the Web Process.
(WebKit::WebPageProxy::systemPreviewActionTriggered const):
* UIProcess/WebPageProxy.h:

* WebProcess/WebPage/WebPage.cpp: Check the destination still exists, and then talk
to the Document.
(WebKit::WebPage::systemPreviewActionTriggered):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

Tools:

* TestWebKitAPI/Tools/TestWebKitAPI/Tests/WebKitCocoa/SystemPreview.mm:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/system-preview-trigger.html: Added.

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

5 months agoCrash under WebCore::firstPositionInNode()
cdumez@apple.com [Fri, 13 Sep 2019 20:59:50 +0000 (20:59 +0000)]
Crash under WebCore::firstPositionInNode()
https://bugs.webkit.org/show_bug.cgi?id=201764
<rdar://problem/54823754>

Reviewed by Wenson Hsieh and Geoff Garen.

Make sure to keep a Ref<> to the textNode when we call insertNodeAtTabSpanPosition()
or insertNodeAt().

Test: editing/firstPositionInNode-crash.html

* editing/InsertTextCommand.cpp:
(WebCore::InsertTextCommand::positionInsideTextNode):

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

5 months agoPartition processes running service workers by session ID
youenn@apple.com [Fri, 13 Sep 2019 20:36:07 +0000 (20:36 +0000)]
Partition processes running service workers by session ID
https://bugs.webkit.org/show_bug.cgi?id=201643

Reviewed by Chris Dumez.

Source/WebCore:

Move the creation of service worker context connection management to SWServer.
This allows to partition service worker context connections by registrable domain and sessionID.
WebKit2 is still responsible to create the IPC creation through a Function given to SWServer at construction
time.
SWServer now keeps a map of registrable domain -> context connection to use for running workers.
It also keeps a map of being-created connections.
In case a context connection is removed from the SWServer, the SWServer will notify all related worker instances
that they are not running. The SWServer will also recreate a context connection if needed.

This allows removing the global server context connection map.
Make SWServerToContextConnection no longer refcounted to simplify the lifetime management.

Covered by API test.

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::SWServer):
(WebCore::SWServer::tryInstallContextData):
(WebCore::SWServer::contextConnectionCreated):
(WebCore::SWServer::unregisterServiceWorkerClient):
(WebCore::SWServer::needsContextConnectionForRegistrableDomain const):
(WebCore::SWServer::addContextConnection):
(WebCore::SWServer::removeContextConnection):
(WebCore::SWServer::createContextConnection):
* workers/service/server/SWServer.h:
(WebCore::SWServer::contextConnectionForRegistrableDomain):
* workers/service/server/SWServerToContextConnection.cpp:
(WebCore::SWServerToContextConnection::SWServerToContextConnection):
(WebCore::SWServerToContextConnection::~SWServerToContextConnection):
* workers/service/server/SWServerToContextConnection.h:
* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::contextConnection):

Source/WebKit:

Remove the management of server context connections from NetworkProcess.
The WebProcessPool service worker process map is now keyed by both registrable domain and sessionID.
Update WebProcessPool to only expose the number of service worker processes instead of the full map.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::didClose):
(WebKit::NetworkConnectionToWebProcess::establishSWContextConnection):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::swServerForSession):
* NetworkProcess/NetworkProcess.h:
(WebKit::NetworkProcess::swServerForSessionIfExists):
* NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):
(WebKit::WebSWServerConnection::postMessageToServiceWorker):
(WebKit::WebSWServerConnection::scheduleJobInServer):
(WebKit::WebSWServerConnection::updateThrottleState):
(WebKit::WebSWServerConnection::contextConnectionCreated):
* NetworkProcess/ServiceWorker/WebSWServerConnection.h:
* NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
(WebKit::WebSWServerToContextConnection::WebSWServerToContextConnection):
(WebKit::WebSWServerToContextConnection::~WebSWServerToContextConnection):
(WebKit::WebSWServerToContextConnection::connectionIsNoLongerNeeded):
* NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _webPageContentProcessCount]):
(-[WKProcessPool _serviceWorkerProcessCount]):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToNetworkProcess):
(WebKit::WebProcessPool::disconnectProcess):
* UIProcess/WebProcessPool.h:
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::WebSWContextManagerConnection):
(WebKit::m_userAgent):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::establishWorkerContextConnectionToNetworkProcess):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

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

5 months agoUnreviewed, fix ChangeLog entry for r249730
annulen@yandex.ru [Fri, 13 Sep 2019 19:48:01 +0000 (19:48 +0000)]
Unreviewed, fix ChangeLog entry for r249730

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

5 months agoRe-add myself to the list of committers
zimmermann@webkit.org [Fri, 13 Sep 2019 19:46:57 +0000 (19:46 +0000)]
Re-add myself to the list of committers

Unreviewed.

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

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

5 months agoLayout Test imported/w3c/web-platform-tests/service-workers/service-worker/getregistr...
cdumez@apple.com [Fri, 13 Sep 2019 19:17:21 +0000 (19:17 +0000)]
Layout Test imported/w3c/web-platform-tests/service-workers/service-worker/getregistrations.https.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=201661
<rdar://problem/55240851>

Reviewed by Alex Christensen.

The last test's cleanup step was very complex (involving waiting for a promise to get resolved) and WebKit's
completion handler in testharnessreport.js was often getting called before the promise resolution, leaving
the test frame in the output when we call notifyDone(). This seems like a potential bug in testharness.js.
To address the issue for now, do the unregistration in the test's body and only remove the test frame in
the cleanup step.

* web-platform-tests/service-workers/service-worker/getregistrations.https-expected.txt:
* web-platform-tests/service-workers/service-worker/getregistrations.https.html:

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

5 months ago[LFC] Do not create FormattingContext unless the root has child boxes.
zalan@apple.com [Fri, 13 Sep 2019 19:15:48 +0000 (19:15 +0000)]
[LFC] Do not create FormattingContext unless the root has child boxes.
https://bugs.webkit.org/show_bug.cgi?id=201766
<rdar://problem/55344449>

Reviewed by Antti Koivisto.

Just because a box establishes a formatting context, it does not necessarily mean we need to create a formatting context object for it.
The established formatting context is responsible for laying out the descendant content. The formatting context root itself is
laid out in the formatting context it lives in. So if there's no descendent content, we don't need to construct the context objects.

<body><div style="float: left;"></div></body> <- this div establishes a block formatting context (float) but it does not have any content so laying
it out simply means sizing and positioning it in the initial block formatting context.

* layout/FormattingContext.cpp:
(WebCore::Layout::FormattingContext::FormattingContext):
(WebCore::Layout::FormattingContext::layoutOutOfFlowContent):
(WebCore::Layout::FormattingContext::mapTopToFormattingContextRoot const):
(WebCore::Layout::FormattingContext::mapLeftToFormattingContextRoot const):
(WebCore::Layout::FormattingContext::mapRightToFormattingContextRoot const):
(WebCore::Layout::FormattingContext::validateGeometryConstraintsAfterLayout const):
* layout/FormattingContext.h:
(WebCore::Layout::FormattingContext::root const):
* layout/FormattingContextGeometry.cpp:
(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):
(WebCore::Layout::FormattingContext::Geometry::shrinkToFitWidth):
* layout/LayoutState.cpp:
(WebCore::Layout::LayoutState::layoutFormattingContextSubtree):
(WebCore::Layout::LayoutState::establishedFormattingState const):
(WebCore::Layout::LayoutState::createFormattingStateForFormattingRootIfNeeded):
(WebCore::Layout::LayoutState::createFormattingContext):
* layout/LayoutState.h:
(WebCore::Layout::LayoutState::hasFormattingState const):
* layout/blockformatting/BlockFormattingContext.cpp:
(WebCore::Layout::BlockFormattingContext::BlockFormattingContext):
(WebCore::Layout::BlockFormattingContext::layoutInFlowContent):
(WebCore::Layout::BlockFormattingContext::usedAvailableWidthForFloatAvoider const):
(WebCore::Layout::BlockFormattingContext::layoutFormattingContextRoot):
(WebCore::Layout::BlockFormattingContext::computedIntrinsicWidthConstraints):
* layout/blockformatting/BlockFormattingContext.h:
* layout/blockformatting/BlockFormattingContextGeometry.cpp:
(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):
(WebCore::Layout::BlockFormattingContext::Geometry::intrinsicWidthConstraints):
* layout/blockformatting/BlockMarginCollapse.cpp:
(WebCore::Layout::BlockFormattingContext::MarginCollapse::marginsCollapseThrough const):
* layout/floats/FloatingContext.h:
(WebCore::Layout::FloatingContext::root const):
* layout/floats/FloatingState.cpp:
(WebCore::Layout::FloatingState::FloatingState):
(WebCore::Layout::FloatingState::bottom const):
(WebCore::Layout::FloatingState::top const):
* layout/floats/FloatingState.h:
(WebCore::Layout::FloatingState::create):
(WebCore::Layout::FloatingState::root const):
(WebCore::Layout::FloatingState::leftBottom const):
(WebCore::Layout::FloatingState::rightBottom const):
(WebCore::Layout::FloatingState::bottom const):
(WebCore::Layout::FloatingState::FloatItem::isDescendantOfFormattingRoot const):
* layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::InlineFormattingContext):
(WebCore::Layout::InlineFormattingContext::layoutInFlowContent):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::computeIntrinsicWidthForFormattingRoot):
(WebCore::Layout::InlineFormattingContext::layoutFormattingContextRoot):
(WebCore::Layout::InlineFormattingContext::collectInlineContent const):
* layout/inlineformatting/InlineFormattingContext.h:
(WebCore::Layout::InlineFormattingContext::InlineLayout::formattingRoot const):
* layout/inlineformatting/InlineFormattingContextQuirks.cpp:
(WebCore::Layout::InlineFormattingContext::Quirks::lineDescentNeedsCollapsing const):
* layout/inlineformatting/InlineLine.cpp:
(WebCore::Layout::Line::close):
(WebCore::Layout::Line::adjustBaselineAndLineHeight):
* layout/tableformatting/TableFormattingContext.cpp:
(WebCore::Layout::TableFormattingContext::TableFormattingContext):
(WebCore::Layout::TableFormattingContext::layoutTableCellBox):
(WebCore::Layout::TableFormattingContext::setComputedGeometryForSections):
(WebCore::Layout::TableFormattingContext::ensureTableGrid):
(WebCore::Layout::TableFormattingContext::computePreferredWidthForColumns):
* layout/tableformatting/TableFormattingContext.h:

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

5 months agoWeb Inspector: Tighter autocomplete bubbles
joepeck@webkit.org [Fri, 13 Sep 2019 19:08:49 +0000 (19:08 +0000)]
Web Inspector: Tighter autocomplete bubbles
https://bugs.webkit.org/show_bug.cgi?id=201742

Reviewed by Timothy Hatcher.

* UserInterface/Views/CompletionSuggestionsView.js:
(WI.CompletionSuggestionsView.prototype.show):
Eliminate the trailing space. Use bounding client rect to get
fractional widths and raise the value so we are at an even number.

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

5 months agoREGRESSION: Web Inspector: Layout Timeline View does not show popover for initiator...
pecoraro@apple.com [Fri, 13 Sep 2019 19:02:59 +0000 (19:02 +0000)]
REGRESSION: Web Inspector: Layout Timeline View does not show popover for initiator data
https://bugs.webkit.org/show_bug.cgi?id=201732
<rdar://problem/55312339>

Reviewed by Devin Rousso.

* UserInterface/Views/LayoutTimelineDataGrid.js:
(WI.LayoutTimelineDataGrid.prototype.callFramePopoverAnchorElement):
(WI.LayoutTimelineDataGrid.prototype.shouldShowCallFramePopover):
The column name was incorrect.

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

5 months agoUncaught Exception: null is not an object (evaluating 'Object.keys(propertyNames...
joepeck@webkit.org [Fri, 13 Sep 2019 18:58:30 +0000 (18:58 +0000)]
Uncaught Exception: null is not an object (evaluating 'Object.keys(propertyNames)​')​ (at JavaScriptRuntimeCompletionProvider.js:​244:​57)​
https://bugs.webkit.org/show_bug.cgi?id=201729

Reviewed by Devin Rousso.

* UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
(WI.JavaScriptRuntimeCompletionProvider):
(WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded):
Don't clear the completion object group until all ongoing requests have completed.
Percision for the lifetime of the object group objects is not important, but we
surely don't want to delete an object too soon.

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

5 months agoIntersectionObserverEntry#intersectionRatio can be larger than 1
ajuma@chromium.org [Fri, 13 Sep 2019 18:46:56 +0000 (18:46 +0000)]
IntersectionObserverEntry#intersectionRatio can be larger than 1
https://bugs.webkit.org/show_bug.cgi?id=200776

Reviewed by Simon Fraser.

Source/WebCore:

When computing the intersection between a target and an intersection observer's
root, RenderBox::computeVisibleRectInContainer is used to map the target rect
up the containing block chain, clipping along the way. When a RenderBox has
a transform, this method expands the given rect to the enclosing rect in device
pixels. This is fine for the use case of computing an invalidation rect, but for
the intersection observer use case it means that it is possible for the computed
intersection rect to be slightly larger than the original target rect, resulting
in an intersection ratio greater than 1.

Fix this by performing a final intersection between the intersection rect as
computed above and the target rect.

Test: intersection-observer/intersection-clipped-to-target.html

* dom/Document.cpp:
(WebCore::computeIntersectionState):

LayoutTests:

* intersection-observer/intersection-clipped-to-target-expected.txt: Added.
* intersection-observer/intersection-clipped-to-target.html: Added.

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

5 months agoLayout Test http/tests/appcache/remove-cache.html is a flaky failure.
russell_e@apple.com [Fri, 13 Sep 2019 18:46:32 +0000 (18:46 +0000)]
Layout Test http/tests/appcache/remove-cache.html is a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=199124

Unreviewed Test Gardening..

* platform/mac/TestExpectations: Marked Test as Flaky.

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

5 months agoSMIL animations of SVG <view> element have no effect
commit-queue@webkit.org [Fri, 13 Sep 2019 18:21:14 +0000 (18:21 +0000)]
SMIL animations of SVG <view> element have no effect
https://bugs.webkit.org/show_bug.cgi?id=94469

Patch by Nikolas Zimmermann <zimmermann@kde.org> on 2019-09-13
Reviewed by Said Abou-Hallawa.

Source/WebCore:

SMIL animations of the attributes associated with SVGViewElement work fine, but without any
visual effect. When loading an SVG document with a given fragment identifier
(e.g. test.svg#customView) where 'customView' references to an embedded SVGViewElement, the
viewBox/preserveAspectRatio settings should be taken from the SVGViewElement. Currently
there is no link between the SVGViewElement and the SVGSVGElement. The settings from the
SVGViewElement are only pasrsed onco in SVGSVGElement::scrollToFragment(). Dynamic updates
of the 'viewBox' and 'preserveAspectRatio' attributes of the SVGViewElement thus have no
visual effect, since the SVGSVGElement does not re-evaluates its viewBox.

Store a RefPtr to the currently used SVGViewElement in SVGSVGElement, and a WeakPtr back
to the SVGSVGElement that currently references the SVGViewElement. This allows us to
propagate SVGViewElement attribute changes to SVGSVGElement and re-evaluate the viewBox
stored in SVGSVGElement and trigger visual updates.

Tests: svg/custom/animation-on-view-element.html
       svg/custom/multiple-view-elements.html

* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::scrollToFragment):
* svg/SVGSVGElement.h:
* svg/SVGViewElement.cpp:
(WebCore::SVGViewElement::svgAttributeChanged): Add missing implementation, tracked by
webkit.org/b/196554. Correctly handle SVGFitToViewBox property changes. Update the viewBox
stored in the SVGSVGElement, that references the SVGViewElement. Afterwards invalidate the
renderer associated with the SVGSVGElement, which properly triggers visual updates.
* svg/SVGViewElement.h:

LayoutTests:

Add new layout tests to verify that dynamic modifications of the <view> element cause
visual updates. Previously SVGSVGElement was never notified about changes of the
SVGViewElement and thus did not update the stored viewBox.

* svg/custom/animation-on-view-element-expected.html: Added.
* svg/custom/animation-on-view-element.html: Added. This is a new reftest
demonstrating that animations of SVG <view> elements now behave as expected.
* svg/custom/multiple-view-elements-expected.html: Added.
* svg/custom/multiple-view-elements.html: Added.
* svg/dom/SVGViewSpec-multiple-views-expected.txt:
* svg/dom/SVGViewSpec-multiple-views.html: Extend to cover dynamic modifications.

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

5 months ago[JSC] Micro-optimize YarrJIT's surrogate pair handling
ysuzuki@apple.com [Fri, 13 Sep 2019 18:01:14 +0000 (18:01 +0000)]
[JSC] Micro-optimize YarrJIT's surrogate pair handling
https://bugs.webkit.org/show_bug.cgi?id=201750

Reviewed by Michael Saboff.

Optimize sequence of machine code used to get code-point with unicode flag.

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

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