Timeline



Dec 16, 2017:

6:54 PM Changeset in webkit [226009] by commit-queue@webkit.org
  • 4 edits
    1 copy
    6 adds in trunk/Tools

Add a script to automate W3c web-platform-tests pull request creations from WebKit commits
https://bugs.webkit.org/show_bug.cgi?id=169462

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-16
Reviewed by Darin Adler.

Adding some git helper routines used by WPT exporter.
Copying WPT github utility files from Chromium.
Updating web.py/web_mock.py to cope with these new files.

Implementing test exporter in test_exporter.py.
This script takes a WebKit commit as input and will create a WPT commit in a local WPT clone.
It will then push the commit to a public GitHub repository identified by a username parameter.
This parameter is passed through the command line or searched through git config/environment variables.

The script can optionally create a pull request to the official WPT GitHub repository.
User must provide a GitHub token to allow the script to make the PR on behalf of the user.
In that case, a comment is added to the corresponding bugzilla if a bug ID is given or can be found from the change log,
to easily link the pull request with the bugzilla bug.

  • Scripts/export-w3c-test-changes: Added.
  • Scripts/webkitpy/common/checkout/scm/git.py:

(Git.reset_hard):
(Git):
(Git.am):
(Git.commit):
(Git.format_patch):
(Git.request_pull):
(Git.remote):
(Git.push):
(Git.checkout_new_branch):

  • Scripts/webkitpy/common/net/web.py:

(Web.request): Copied from Chromium.

  • Scripts/webkitpy/common/net/web_mock.py: Copied needed code from Chromium.
  • Scripts/webkitpy/w3c/test_exporter.py: Added.

(TestExporter):
(TestExporter.init):
(TestExporter._init_repository):
(TestExporter.download_and_commit_patch):
(TestExporter.clean):
(TestExporter.create_branch_with_patch):
(TestExporter.push_to_public_repository):
(TestExporter.make_pull_request):
(TestExporter.delete_local_branch):
(TestExporter.create_git_patch):
(TestExporter.create_upload_remote_if_needed):
(TestExporter.do_export):
(parse_args):
(configure_logging):
(configure_logging.LogHandler):
(configure_logging.LogHandler.format):
(main):

  • Scripts/webkitpy/w3c/test_exporter_unittest.py: Added.

(TestExporterTest):
(TestExporterTest.MockBugzilla):
(TestExporterTest.MockBugzilla.init):
(TestExporterTest.MockBugzilla.fetch_bug_dictionary):
(TestExporterTest.MockBugzilla.post_comment_to_bug):
(TestExporterTest.MockGit):
(TestExporterTest.MockGit.clone):
(TestExporterTest.MockGit.init):
(TestExporterTest.MockGit.fetch):
(TestExporterTest.MockGit.checkout):
(TestExporterTest.MockGit.reset_hard):
(TestExporterTest.MockGit.push):
(TestExporterTest.MockGit.format_patch):
(TestExporterTest.MockGit.delete_branch):
(TestExporterTest.MockGit.checkout_new_branch):
(TestExporterTest.MockGit.am):
(TestExporterTest.MockGit.commit):
(TestExporterTest.MockGit.remote):
(TestExporterTest.test_export):

  • Scripts/webkitpy/w3c/common.py: Copied from chromium.
  • Scripts/webkitpy/w3c/wpt_github.py: Copied from chromium.
  • Scripts/webkitpy/w3c/wpt_github_mock.py: Copied from chromium.
  • Scripts/webkitpy/w3c/wpt_github_unittest.py: Copied from chromium.
12:57 PM Changeset in webkit [226008] by mitz@apple.com
  • 22 edits
    1 add in trunk

WKWebView has no equivalent of -[WebView setAlwaysShowVerticalScroller:]
https://bugs.webkit.org/show_bug.cgi?id=180613
<rdar://problem/35946124>

Reviewed by Geoff Garen.

Source/WebCore:

Test: TestWebKitAPI/Tests/WebKitCocoa/WKWebViewAlwaysShowsScroller.mm

  • platform/ScrollView.h: Exported setScrollbarModes.

Source/WebKit:

Added _alwaysShowsHorizontalScroller and _alwaysShowsVerticalScroller properties to
WKWebView.

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const): Encode new alwaysShowsHorizontalScroller

and alwaysShowsVerticalScroller parameters.

(WebKit::WebPageCreationParameters::decode): Decode new parameters.

  • Shared/WebPageCreationParameters.h: Added new alwaysShowsHorizontalScroller and alwaysShowsVerticalScroller boolean parameters.
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _alwaysShowsHorizontalScroller]): New accessor that calls through to the

WebPageProxy.

(-[WKWebView _setAlwaysShowsHorizontalScroller:]): Ditto.
(-[WKWebView _alwaysShowsVerticalScroller]): Ditto.
(-[WKWebView _setAlwaysShowsVerticalScroller:]): Ditto.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h: Declare new properties.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setAlwaysShowsHorizontalScroller): Update member variable and send

a message to the page.

(WebKit::WebPageProxy::setAlwaysShowsVerticalScroller): Ditto.
(WebKit::WebPageProxy::creationParameters): Initialize new parameters from the new member

variables.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::alwaysShowsHorizontalScroller const): New getter.
(WebKit::WebPageProxy::alwaysShowsVerticalScroller const): Ditto.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage): Factor

alwaysShowsHorizontalScroller and alwaysShowsVerticalScroller into the initial scroller
modes and scroller locks when creating the FrameView.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage): Initialize new m_alwaysShowsHorizontalScroller and

m_alwaysShowsVerticalScroller member variables from the corresponding new creation
parameters.

(WebKit::WebPage::setAlwaysShowsHorizontalScroller): Update the member variable and set

new scrollbar mode on the frame view if needed.

(WebKit::WebPage::setAlwaysShowsVerticalScroller): Ditto.

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::alwaysShowsHorizontalScroller const): New getter.
(WebKit::WebPage::alwaysShowsVerticalScroller const): Ditto.

  • WebProcess/WebPage/WebPage.messages.in: Added new messages.

Source/WebKitLegacy/mac:

  • WebKit.mac.exp: Removed WebCoreScrollbarAlwaysOn, which is no longer being used by any clients.
  • WebView/WebDynamicScrollBarsView.h: Ditto.
  • WebView/WebDynamicScrollBarsView.mm: Ditto.

Tools:

  • MiniBrowser/mac/MainMenu.xib: Added Always Show {Horizontal,Vertical} Scroller menu items to the View menu.
  • MiniBrowser/mac/WK1BrowserWindowController.m:

(-[WK1BrowserWindowController validateMenuItem:]): Set the state of the new menu items based

on -alwaysShow{Horizontal,Vertical}Scroller.

(-[WK1BrowserWindowController toggleAlwaysShowsHorizontalScroller:]): Toggle the value.
(-[WK1BrowserWindowController toggleAlwaysShowsVerticalScroller:]): Ditto.

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController validateMenuItem:]): Set the state of the new menu items based

on the new property.

(-[WK2BrowserWindowController toggleAlwaysShowsHorizontalScroller:]): Toggle the property.
(-[WK2BrowserWindowController toggleAlwaysShowsVerticalScroller:]): Ditto.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/WKWebViewAlwaysShowsScroller.mm: Added.

(TEST):

11:07 AM Changeset in webkit [226007] by Antti Koivisto
  • 57 edits
    1 copy
    1 add in trunk/Source/WebCore

Introduce RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=180817

Reviewed by Zalan Bujtas.

RenderTreeBuilder is responsible of building the render tree, including construction of various anonymous
renderers. Renderer subtype specific render tree construction code will eventually move there.

This patch adds RenderTreeBuilder class and passes it as a parameter for all addChild implementations.
Future patches can then mechanically move the building code from renderers to RenderTreeBuilder.

It also moves one addChild implementation (RenderRuby::addChild -> RenderTreeBuilder::rubyRunInsertChild)
to RenderTreeBuilder as a test.

  • WebCore.xcodeproj/project.pbxproj:
  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::addChildToContinuation):
(WebCore::RenderBlock::addChild):
(WebCore::RenderBlock::addChildIgnoringContinuation):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::addChild):

  • rendering/RenderBlockFlow.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::moveChildTo):

  • rendering/RenderButton.cpp:

(WebCore::RenderButton::addChild):
(WebCore::RenderButton::setText):

  • rendering/RenderButton.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::addChild):

  • rendering/RenderElement.h:

(WebCore::RenderElement::addChildIgnoringContinuation):

  • rendering/RenderFullScreen.cpp:

(WebCore::RenderFullScreen::wrapNewRenderer):
(WebCore::RenderFullScreen::wrapExistingRenderer):
(WebCore::RenderFullScreen::unwrapRenderer):
(WebCore::RenderFullScreen::createPlaceholder):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::addChild):

  • rendering/RenderGrid.h:
  • rendering/RenderInline.cpp:

(WebCore::RenderInline::addChild):
(WebCore::RenderInline::addChildIgnoringContinuation):
(WebCore::RenderInline::splitInlines):
(WebCore::RenderInline::splitFlow):
(WebCore::RenderInline::addChildToContinuation):
(WebCore::RenderInline::childBecameNonInline):

  • rendering/RenderInline.h:
  • rendering/RenderMenuList.cpp:

(WebCore::RenderMenuList::createInnerBlock):
(RenderMenuList::addChild):
(RenderMenuList::setText):

  • rendering/RenderMenuList.h:
  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::processPossibleSpannerDescendant):

  • rendering/RenderQuote.cpp:

(WebCore::RenderQuote::updateTextRenderer):
(WebCore::RenderQuote::updateRenderer):

  • rendering/RenderQuote.h:
  • rendering/RenderRuby.cpp:

(WebCore::RenderRubyAsInline::addChild):
(WebCore::RenderRubyAsBlock::addChild):

  • rendering/RenderRuby.h:
  • rendering/RenderRubyBase.h:
  • rendering/RenderRubyRun.cpp:

(WebCore::RenderRubyRun::rubyBaseSafe):
(WebCore::RenderRubyRun::addChild): Deleted.

  • rendering/RenderRubyRun.h:
  • rendering/RenderTable.cpp:

(WebCore::RenderTable::addChild):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::addChild):

  • rendering/RenderTableRow.h:
  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::addChild):

  • rendering/RenderTableSection.h:
  • rendering/RenderTreeBuilder.cpp: Added.

(WebCore::RenderTreeBuilder::RenderTreeBuilder):
(WebCore::RenderTreeBuilder::~RenderTreeBuilder):
(WebCore::RenderTreeBuilder::insertChild):
(WebCore::RenderTreeBuilder::rubyRunInsertChild):

  • rendering/RenderTreeBuilder.h: Added.

(WebCore::RenderTreeBuilder::current):

  • rendering/TextAutoSizing.cpp:

(WebCore::TextAutoSizingValue::adjustTextNodeSizes):

  • rendering/mathml/RenderMathMLFenced.cpp:

(WebCore::RenderMathMLFenced::updateFromElement):
(WebCore::RenderMathMLFenced::makeFences):
(WebCore::RenderMathMLFenced::addChild):

  • rendering/mathml/RenderMathMLFenced.h:
  • rendering/svg/RenderSVGContainer.cpp:

(WebCore::RenderSVGContainer::addChild):

  • rendering/svg/RenderSVGContainer.h:
  • rendering/svg/RenderSVGInline.cpp:

(WebCore::RenderSVGInline::addChild):

  • rendering/svg/RenderSVGInline.h:
  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::addChild):

  • rendering/svg/RenderSVGRoot.h:
  • rendering/svg/RenderSVGText.cpp:

(WebCore::RenderSVGText::addChild):

  • rendering/svg/RenderSVGText.h:
  • style/RenderTreePosition.cpp:

(WebCore::RenderTreePosition::insert): Deleted.

  • style/RenderTreePosition.h:

(WebCore::RenderTreePosition::RenderTreePosition):
(WebCore::RenderTreePosition::nextSibling const):
(WebCore::RenderTreePosition::canInsert const): Deleted.

  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateAfterDescendants):
(WebCore::RenderTreeUpdater::createRenderer):
(WebCore::RenderTreeUpdater::createTextRenderer):
(WebCore::RenderTreeUpdater::updateTextRenderer):
(WebCore::createTextRenderer): Deleted.

  • style/RenderTreeUpdater.h:
  • style/RenderTreeUpdaterFirstLetter.cpp:

(WebCore::updateFirstLetterStyle):
(WebCore::createFirstLetterRenderer):

  • style/RenderTreeUpdaterGeneratedContent.cpp:

(WebCore::RenderTreeUpdater::GeneratedContent::updateQuotesUpTo):
(WebCore::createContentRenderers):
(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement):

  • style/RenderTreeUpdaterListItem.cpp:

(WebCore::RenderTreeUpdater::ListItem::updateMarker):

  • style/RenderTreeUpdaterListItem.h:
  • style/RenderTreeUpdaterMultiColumn.cpp:

(WebCore::RenderTreeUpdater::MultiColumn::createFragmentedFlow):
(WebCore::RenderTreeUpdater::MultiColumn::destroyFragmentedFlow):

11:05 AM Changeset in webkit [226006] by Ms2ger@igalia.com
  • 3 edits
    7 adds in trunk/LayoutTests

Enable wpt fetch tests on WPE.
https://bugs.webkit.org/show_bug.cgi?id=180905

Unreviewed test gardening.

New expectations are copied from GTK.

  • TestExpectations: mark test as flaky on all platforms.
  • platform/wpe/TestExpectations:
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-method-worker-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/fetch/http-cache/cc-request-expected.txt: Added.
10:59 AM Changeset in webkit [226005] by romain.bellessort@crf.canon.fr
  • 7 edits in trunk

[Readable Streams API] Fix filling of descriptor from queue
https://bugs.webkit.org/show_bug.cgi?id=172717

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Updated test expectations.

  • web-platform-tests/streams/readable-byte-streams/detached-buffers-expected.txt: Updated.
  • web-platform-tests/streams/readable-byte-streams/detached-buffers.dedicatedworker-expected.txt: Updated.
  • web-platform-tests/streams/readable-byte-streams/general-expected.txt: Updated.
  • web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt: Updated.

Source/WebCore:

Fixed the filling of descriptor from queue (step 10.d at [1]). When first implemented,
spec comprised a bug and code was not reachable. Spec has now been fixed and code can
now be reached.

[1] https://streams.spec.whatwg.org/#readable-byte-stream-controller-fill-pull-into-descriptor-from-queue

No new tests (covered by WPT tests, whose expectations have been updated).

  • Modules/streams/ReadableByteStreamInternals.js:

(readableByteStreamControllerFillDescriptorFromQueue): Updated.

10:57 AM Changeset in webkit [226004] by commit-queue@webkit.org
  • 3 edits
    8 deletes in trunk/LayoutTests

Skip SharedWorker and NavigationPreload service worker tests
https://bugs.webkit.org/show_bug.cgi?id=180902

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-16
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/navigation-preload/broken-chunked-encoding.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/navigation-preload/chunked-encoding.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/navigation-preload/empty-preload-response-body.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/navigation-preload/get-state.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/navigation-preload/redirect.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/navigation-preload/request-headers.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/navigation-preload/resource-timing.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/shared-worker-controlled.https-expected.txt:

LayoutTests:

10:54 AM Changeset in webkit [226003] by beidson@apple.com
  • 5 edits in trunk/Source

Implement getting ServiceWorker registrations for the WKWebsiteDataStore API
https://bugs.webkit.org/show_bug.cgi?id=180886

Reviewed by Chris Dumez.

Source/WebCore:

No new tests (API test coming soon).

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::registrationStoreImportComplete):
(WebCore::SWServer::SWServer):
(WebCore::SWServer::getOriginsWithRegistrations):
(WebCore::SWServer::performGetOriginsWithRegistrationsCallbacks):

  • workers/service/server/SWServer.h:

Source/WebKit:

  • StorageProcess/StorageProcess.cpp:

(WebKit::StorageProcess::fetchWebsiteData):

10:33 AM Changeset in webkit [226002] by commit-queue@webkit.org
  • 4 edits in trunk

[WinCairo] Move the destination of WinCairoRequirements.zip into WebKitLibraries and register it and related files as git ignore files.
https://bugs.webkit.org/show_bug.cgi?id=180875

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-12-16
Reviewed by Alex Christensen.

.:

Add files extracted from WinCairoRequirements.zip

  • .gitignore:

Tools:

Bug fix. Specify the download destination correctly.

  • Scripts/update-webkit-wincairo-libs.py:
10:31 AM Changeset in webkit [226001] by jiewen_tan@apple.com
  • 2 edits
    6 adds in trunk/LayoutTests/imported/w3c

[CredentialManagement] Import Credential Management Web Platform Tests
https://bugs.webkit.org/show_bug.cgi?id=172015
<rdar://problem/36083577>

Reviewed by Youenn Fablet.

  • resources/import-expectations.json:
  • web-platform-tests/credential-management/credentialscontainer-create-basics.https-expected.txt: Added.
  • web-platform-tests/credential-management/credentialscontainer-create-basics.https.html: Added.
  • web-platform-tests/credential-management/idl.https-expected.txt: Added.
  • web-platform-tests/credential-management/idl.https.html: Added.
  • web-platform-tests/credential-management/w3c-import.log: Added.
10:20 AM Changeset in webkit [226000] by keith_miller@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Indexing should only be computed when the new structure has an indexing header.
https://bugs.webkit.org/show_bug.cgi?id=180895

Reviewed by Saam Barati.

If we don't have an indexing header then we point the butterfly
sizeof(IndexingHeader) past the end of the butterfly. This makes
the computation of the offset simpler since it doesn't depend on
the indexing headeriness of the butterfly.

  • jit/JITOperations.cpp:
  • runtime/JSObject.cpp:

(JSC::JSObject::createInitialUndecided):
(JSC::JSObject::createInitialInt32):
(JSC::JSObject::createInitialDouble):
(JSC::JSObject::createInitialContiguous):
(JSC::JSObject::createArrayStorage):
(JSC::JSObject::convertUndecidedToArrayStorage):
(JSC::JSObject::convertInt32ToArrayStorage):
(JSC::JSObject::convertDoubleToArrayStorage):

  • runtime/JSObject.h:

(JSC::JSObject::setButterfly):
(JSC::JSObject::nukeStructureAndSetButterfly):

  • runtime/JSObjectInlines.h:

(JSC::JSObject::prepareToPutDirectWithoutTransition):
(JSC::JSObject::putDirectInternal):

9:57 AM Changeset in webkit [225999] by Brent Fulgham
  • 4 edits in trunk

Plugin processes are repeatedly spun up to do nothing
https://bugs.webkit.org/show_bug.cgi?id=180885
<rdar://problem/36082564>

Reviewed by Geoffrey Garen.

Source/WebKit:

Tested by TestWebKitAPI.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::removeData): Don't ask plugins to remove data when no websites are
passed to the function.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WKHTTPCookieStore.mm:

(runTestWithWebsiteDataStore): Check that deleting website data did not
trigger any plugin processes to start up.

9:54 AM Changeset in webkit [225998] by Yusuke Suzuki
  • 18 edits in trunk

Remove unnecessary boolean result of start() functions
https://bugs.webkit.org/show_bug.cgi?id=180856

Reviewed by Darin Adler.

Source/WebCore:

No behavior change.

  • Modules/webaudio/AsyncAudioDecoder.cpp:

(WebCore::AsyncAudioDecoder::~AsyncAudioDecoder):

  • Modules/webdatabase/DatabaseContext.cpp:

(WebCore::DatabaseContext::databaseThread):

  • Modules/webdatabase/DatabaseThread.cpp:

(WebCore::DatabaseThread::start):
Now Thread::create always succeeds (if it fails, WebKit crashes).
DatabaseThread::start() now always returns true. So, we do not need
to return bool.

  • Modules/webdatabase/DatabaseThread.h:
  • platform/network/curl/CurlDownload.cpp:

(WebCore::CurlDownload::start):

  • platform/network/curl/CurlDownload.h:
  • platform/network/curl/ResourceHandleCurl.cpp:

(WebCore::ResourceHandle::start):

  • platform/network/curl/ResourceHandleCurlDelegate.cpp:

(WebCore::ResourceHandleCurlDelegate::start):

  • platform/network/curl/ResourceHandleCurlDelegate.h:

Source/WebKitLegacy/win:

It always returns true.

  • WebDownloadCurl.cpp:

(WebDownload::start):

Source/WTF:

CrossThreadTaskHandler's Thread is just released without calling
either waitForCompletion or detach. It means that this resource
of the thread is not released.

  • benchmarks/ConditionSpeedTest.cpp:
  • wtf/CrossThreadTaskHandler.cpp:

(WTF::CrossThreadTaskHandler::CrossThreadTaskHandler):

  • wtf/CrossThreadTaskHandler.h:

Tools:

  • TestWebKitAPI/Tests/WTF/ParkingLot.cpp:
8:37 AM Changeset in webkit [225997] by Chris Dumez
  • 15 edits
    3 adds
    1 delete in trunk

Add optimization when updating a SW registration results in the exact same script
https://bugs.webkit.org/show_bug.cgi?id=180891

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline WPT test now that all checks are passing.

  • web-platform-tests/service-workers/service-worker/registration-updateviacache.https-expected.txt:

Source/WebCore:

Add optimization when updating a SW registration results in the exact same script:

No new tests, rebaselined existing test.

  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::scriptFetchFinished):

LayoutTests:

Skip bad WPT test that is timing out for us and Firefox. I'll file an upstream PR
to fix it.

  • http/tests/workers/service/controller-change.html:
  • http/tests/workers/service/registration-updateViaCache-all-importScripts.html:
  • http/tests/workers/service/registration-updateViaCache-all.html:
  • http/tests/workers/service/registration-updateViaCache-imports-importScripts.html:
  • http/tests/workers/service/registration-updateViaCache-none-importScripts.html:
  • http/tests/workers/service/registration-updateViaCache-none.html:
  • http/tests/workers/service/resources/self_registration_update-worker.js: Removed.
  • http/tests/workers/service/resources/self_registration_update-worker.php: Added.
  • http/tests/workers/service/resources/service-worker-fetch-worker.js:
  • http/tests/workers/service/resources/updating-fetch-worker.php: Added.
  • http/tests/workers/service/resources/updating-worker.php: Added.
  • http/tests/workers/service/self_registration_update.html:
  • http/tests/workers/service/service-worker-registration-gc-event.html:

Undate WebKit-specific tests to reflect behavior change.

1:26 AM Changeset in webkit [225996] by commit-queue@webkit.org
  • 6 edits
    3 adds in trunk

Service worker script fetch request should set the Service-Worker header
https://bugs.webkit.org/show_bug.cgi?id=180889

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-16
Reviewed by Chris Dumez.

Source/WebCore:

Test: http/wpt/service-workers/check-service-worker-header.https.html

Update WorkerScriptLoader to take a request instead of an URL.
Updates Worker implementation and use it in ServiceWorkerJob to set the missing request header.

  • workers/Worker.cpp:

(WebCore::Worker::create):

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadAsynchronously):

  • workers/WorkerScriptLoader.h:
  • workers/service/ServiceWorkerJob.cpp:

(WebCore::ServiceWorkerJob::fetchScriptWithContext):

LayoutTests:

  • http/wpt/service-workers/check-service-worker-header.https-expected.txt: Added.
  • http/wpt/service-workers/check-service-worker-header.https.html: Added.
  • http/wpt/service-workers/check-service-worker-header.py: Added.

Dec 15, 2017:

11:22 PM Changeset in webkit [225995] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

WK1 webrtc/datachannel bufferedAmount tests might time out
https://bugs.webkit.org/show_bug.cgi?id=180882

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-15

  • platform/mac-wk1/TestExpectations: marking tests as flaky.
6:05 PM Changeset in webkit [225994] by Ryan Haddad
  • 57 edits
    2 deletes in trunk/Source/WebCore

Unreviewed, rolling out r225969.

This change introduced LayoutTest crashes.

Reverted changeset:

"Introduce RenderTreeBuilder"
https://bugs.webkit.org/show_bug.cgi?id=180817
https://trac.webkit.org/changeset/225969

4:51 PM Changeset in webkit [225993] by Chris Dumez
  • 3 edits
    100 deletes in trunk/LayoutTests

Drop service workers stubs tests
https://bugs.webkit.org/show_bug.cgi?id=180893

Reviewed by Youenn Fablet.

These tests either do not test anything or are bad and fails in other browsers too.
There is little point in running them.

  • resources/import-expectations.json:
  • web-platform-tests/service-workers/stub-3.1-service-worker-obj-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.1-service-worker-obj.html: Removed.
  • web-platform-tests/service-workers/stub-3.1.1-service-worker-scope-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.1.1-service-worker-scope.html: Removed.
  • web-platform-tests/service-workers/stub-3.1.2-service-worker-url-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.1.2-service-worker-url.html: Removed.
  • web-platform-tests/service-workers/stub-3.1.3-service-worker-state-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.1.3-service-worker-state.html: Removed.
  • web-platform-tests/service-workers/stub-3.1.4-service-worker-on-state-change-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.1.4-service-worker-on-state-change.html: Removed.
  • web-platform-tests/service-workers/stub-3.2-navigator-service-worker-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2-navigator-service-worker.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.1-navigator-service-worker-installing-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.1-navigator-service-worker-installing.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.10-navigator-service-worker-oncontrollerchange-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.10-navigator-service-worker-oncontrollerchange.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.11-navigator-service-worker-onreloadpage-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.11-navigator-service-worker-onreloadpage.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.12-navigator-service-worker-onerror-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.12-navigator-service-worker-onerror.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.2-navigator-service-worker-waiting-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.2-navigator-service-worker-waiting.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.3-navigator-service-worker-active-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.3-navigator-service-worker-active.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.4-navigator-service-worker-controller-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.4-navigator-service-worker-controller.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.5-navigator-service-worker-ready-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.5-navigator-service-worker-ready.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.6-navigator-service-worker-getAll-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.6-navigator-service-worker-getAll.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.7-navigator-service-worker-register-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.7-navigator-service-worker-register.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.8-navigator-service-worker-unregister-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.8-navigator-service-worker-unregister.html: Removed.
  • web-platform-tests/service-workers/stub-3.2.9-navigator-service-worker-onupdatefound-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-3.2.9-navigator-service-worker-onupdatefound.html: Removed.
  • web-platform-tests/service-workers/stub-4.1-service-worker-global-scope-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1-service-worker-global-scope.html: Removed.
  • web-platform-tests/service-workers/stub-4.1.1-service-worker-global-scope-caches-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1.1-service-worker-global-scope-caches.html: Removed.
  • web-platform-tests/service-workers/stub-4.1.2-service-worker-global-scope-clients-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1.2-service-worker-global-scope-clients.html: Removed.
  • web-platform-tests/service-workers/stub-4.1.3-service-worker-global-scope-scope-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1.3-service-worker-global-scope-scope.html: Removed.
  • web-platform-tests/service-workers/stub-4.1.4-service-worker-global-scope-fetch-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1.4-service-worker-global-scope-fetch.html: Removed.
  • web-platform-tests/service-workers/stub-4.1.5-service-worker-global-scope-update-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1.5-service-worker-global-scope-update.html: Removed.
  • web-platform-tests/service-workers/stub-4.1.6-service-worker-global-scope-unregister-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1.6-service-worker-global-scope-unregister.html: Removed.
  • web-platform-tests/service-workers/stub-4.1.7-service-worker-global-scope-onmessage-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.1.7-service-worker-global-scope-onmessage.html: Removed.
  • web-platform-tests/service-workers/stub-4.2-client-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.2-client.html: Removed.
  • web-platform-tests/service-workers/stub-4.3-service-worker-clients-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.3-service-worker-clients.html: Removed.
  • web-platform-tests/service-workers/stub-4.3.1-get-serviced-method-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.3.1-get-serviced-method.html: Removed.
  • web-platform-tests/service-workers/stub-4.3.2-reloadall-method-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.3.2-reloadall-method.html: Removed.
  • web-platform-tests/service-workers/stub-4.4-request-objects-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.4-request-objects.html: Removed.
  • web-platform-tests/service-workers/stub-4.5-response-objects-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.5-response-objects.html: Removed.
  • web-platform-tests/service-workers/stub-4.5.2-response-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.5.2-response.html: Removed.
  • web-platform-tests/service-workers/stub-4.5.4-opaque-response-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.5.4-opaque-response.html: Removed.
  • web-platform-tests/service-workers/stub-4.6-cache-objects-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.6-cache-objects.html: Removed.
  • web-platform-tests/service-workers/stub-4.6.1-cache-lifetimes-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.6.1-cache-lifetimes.html: Removed.
  • web-platform-tests/service-workers/stub-4.6.2-cache-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.6.2-cache.html: Removed.
  • web-platform-tests/service-workers/stub-4.6.3-cache-storage-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.6.3-cache-storage.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.1-install-phase-event-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.1-install-phase-event.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.1.1-wait-until-method-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.1.1-wait-until-method.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.2-install-event-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.2-install-event.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.2.1-install-event-section-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.2.1-install-event-section.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.2.2-replace-method-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.2.2-replace-method.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.3-activate-event-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.3-activate-event.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.1-fetch-event-section-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.1-fetch-event-section.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.2-respond-with-method-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.2-respond-with-method.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.3-default-method-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.3-default-method.html: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.4-is-reload-attribute-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-4.7.4.4-is-reload-attribute.html: Removed.
  • web-platform-tests/service-workers/stub-5.1-origin-relativity-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-5.1-origin-relativity.html: Removed.
  • web-platform-tests/service-workers/stub-5.2-cross-origin-resources-expected.txt: Removed.
  • web-platform-tests/service-workers/stub-5.2-cross-origin-resources.html: Removed.
4:48 PM Changeset in webkit [225992] by Chris Dumez
  • 15 edits in trunk

Support updating a service worker registration's updateViaCache flag
https://bugs.webkit.org/show_bug.cgi?id=180888

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

Rebaseline WPT test now that more checks are passing.

  • web-platform-tests/service-workers/service-worker/registration-updateviacache.https-expected.txt:

Source/WebCore:

Support updating a service worker registration's updateViaCache flag to match other browsers:

No new tests, rebaselined existing test.

  • workers/service/SWClientConnection.cpp:

(WebCore::SWClientConnection::setRegistrationUpdateViaCache):

  • workers/service/SWClientConnection.h:
  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::ServiceWorkerRegistration::setUpdateViaCache):

  • workers/service/ServiceWorkerRegistration.h:
  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::runRegisterJob):

  • workers/service/server/SWServerRegistration.cpp:

(WebCore::SWServerRegistration::setUpdateViaCache):

  • workers/service/server/SWServerRegistration.h:

Source/WebKit:

  • StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::setRegistrationUpdateViaCache):

  • StorageProcess/ServiceWorker/WebSWServerConnection.h:
  • WebProcess/Storage/WebSWClientConnection.messages.in:
4:32 PM Changeset in webkit [225991] by david_quesada@apple.com
  • 2 edits in trunk/Tools

Unreviewed, adding myself to contributors.json

  • Scripts/webkitpy/common/config/contributors.json:
4:00 PM Changeset in webkit [225990] by Ryan Haddad
  • 31 edits in trunk

Unreviewed, rolling out r225941.

This change introduced LayoutTest crashes and assertion
failures.

Reverted changeset:

"Web Inspector: replace HTMLCanvasElement with
CanvasRenderingContext for instrumentation logic"
https://bugs.webkit.org/show_bug.cgi?id=180770
https://trac.webkit.org/changeset/225941

3:14 PM Changeset in webkit [225989] by achristensen@apple.com
  • 13 edits in trunk

Introduce SPI _WKWebsitePolicies.websiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=180880
<rdar://problem/35535328>

Reviewed by Andy Estes.

Source/WebKit:

The SPI doesn't do anything yet, but it already has some restrictions and tests!
WKWebView._updateWebsitePolicies can't be used to update a WKWebsiteDataStore. Only during navigation.
Even during navigation, we are only supporting the default and ephemeral data stores right now.
This functionality won't be supported in the C API. This is enforced with RELEASE_ASSERTs.
If we change our minds, we can change them and add restrictions similar to the ObjC restrictions.

  • Shared/WebsitePoliciesData.cpp:

(WebKit::WebsitePoliciesData::encode const):
(WebKit::WebsitePoliciesData::decode):

  • Shared/WebsitePoliciesData.h:
  • UIProcess/API/APIWebsitePolicies.cpp:

(API::WebsitePolicies::WebsitePolicies):
(API::WebsitePolicies::setWebsiteDataStore):
(API::WebsitePolicies::data):

  • UIProcess/API/APIWebsitePolicies.h:
  • UIProcess/API/C/WKFramePolicyListener.cpp:

(WKFramePolicyListenerUseWithPolicies):

  • UIProcess/API/C/WKPage.cpp:

(WKPageUpdateWebsitePolicies):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _updateWebsitePolicies:]):

  • UIProcess/API/Cocoa/_WKWebsitePolicies.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.mm:

(-[_WKWebsitePolicies websiteDataStore]):
(-[_WKWebsitePolicies setWebsiteDataStore:]):

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:

(-[WebsitePoliciesWebsiteDataStoreDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[WebsitePoliciesWebsiteDataStoreDelegate webView:startURLSchemeTask:]):
(-[WebsitePoliciesWebsiteDataStoreDelegate webView:stopURLSchemeTask:]):
(TEST):

2:48 PM Changeset in webkit [225988] by jmarcell@apple.com
  • 1 delete in tags/Safari-605.1.18.1/Safari-605.1.18

Removing tag (mistakenly placed inside of tag).

2:28 PM Changeset in webkit [225987] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix GTK build.

  • UIProcess/API/glib/WebKitPolicyDecision.cpp:

(webkit_policy_decision_use):

1:48 PM Changeset in webkit [225986] by jmarcell@apple.com
  • 1 copy in tags/Safari-605.1.18.1/Safari-605.1.18

New tag.

1:32 PM Changeset in webkit [225985] by rniwa@webkit.org
  • 3 edits in trunk/Source/WebCore

Add a release assert that Timer::m_wasDeleted is false in setNextFireTime
https://bugs.webkit.org/show_bug.cgi?id=180860
<rdar://problem/36066500>

Reviewed by David Kilzer.

Turn an exist debug-only assertion into a release assertion to help diagnose a crash
which appears to be caused by a freed timer getting scheduled back into the timer heap.

  • platform/Timer.cpp:

(WebCore::TimerBase::~TimerBase):
(WebCore::TimerBase::setNextFireTime):

  • platform/Timer.h:
1:27 PM Changeset in webkit [225984] by Brent Fulgham
  • 8 edits in trunk/Source/WebKit

Avoid waking plugin process up unnecessarily
https://bugs.webkit.org/show_bug.cgi?id=180819
<rdar://problem/36051548>

Reviewed by Geoffrey Garen.

WebKit purges data from origins marked as prevalent on an hourly interval. This includes waking up plugins
and removing relevant data stored in those plugins. This causes multiple plugin processes to be spawned,
even though the user is not interacting with any plugins.

Instead, we should delay removing data from plugins until they are loaded due to the user interacting with
a website using a plugin.

Make the following changes:

  1. When looking for plugin data related to prevalent sites, only examine plugin data if the relevant plugin is already running.
  2. When the state of the active plugins changes, trigger a data removal check.
  • Shared/WebsiteData/WebsiteDataFetchOption.h: Add a new option 'DoNotCreateProcesses'
  • UIProcess/Plugins/PluginProcessManager.cpp:

(WebKit::PluginProcessManager::getPluginProcessConnection): Pass new argument 'Launch', since we always
want to launch processes in this case.
(WebKit::PluginProcessManager::fetchWebsiteData): Pass a new parameter 'processAccessType' so that the
caller can specify if they only want to examine already-active plugins, or if they want to spawn new
processes. Call the completion handler if we need to exit early when no process exists.
(WebKit::PluginProcessManager::deleteWebsiteData): Always launch new processes.
(WebKit::PluginProcessManager::deleteWebsiteDataForHostNames): Ditto.
(WebKit::PluginProcessManager::getOrCreatePluginProcess): Accept new parameter indicating if new processes
shoudl be launched. Also switch to C++ style loops.

  • UIProcess/Plugins/PluginProcessManager.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::deleteWebsiteDataForTopPrivatelyControlledDomainsInAllPersistentDataStores): Use the
new 'DoNotCreatePrcesses' access type.

  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::removeDataRecords): Update the active plugin count when we
remove data.
(WebKit::WebResourceLoadStatisticsStore::shouldRemoveDataRecords const): Return true if the active plugin
process count changed since the last time data was removed.

  • UIProcess/WebResourceLoadStatisticsStore.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::fetchDataAndApply): Check fetch option for new 'DoNotCreateProcesses' flag,
and tell the PluginProcessManager which mode we are using.

1:18 PM Changeset in webkit [225983] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Elements animated on-screen are missing sometimes
https://bugs.webkit.org/show_bug.cgi?id=180773
rdar://problem/34923438

Reviewed by Zalan Bujtas.

After r225310 it was still possible for elements to be missing backing store when brought
on-screen via an animation. This occurred if a child element was outside the bounds of the
element being animated.

Fix by making sure that GraphicsLayer's "animatedExtent" took composited child layers into account.

As for r225310, no test because this is timing sensitive and hard to reliably make a test for.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateClipRects const):

  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateGeometry):

1:15 PM Changeset in webkit [225982] by beidson@apple.com
  • 3 edits in trunk/Source/WebKit

Make sure only WebsiteDataStores with valid SessionIDs register themselves.
https://bugs.webkit.org/show_bug.cgi?id=180869

Reviewed by Chris Dumez.

Some code in WebsiteDataStore assumes an invalid SessionID is a possibility,
but we didn't account for that in the map added in r225935.

Seems prudent to make sure we're not doing hash table operations with invalid keys.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::WebsiteDataStore::~WebsiteDataStore):
(WebKit::WebsiteDataStore::maybeRegisterWithSessionIDMap):
(WebKit::WebsiteDataStore::existingNonDefaultDataStoreForSessionID):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
1:12 PM Changeset in webkit [225981] by Simon Fraser
  • 2 edits in trunk/Source/WebKit

Rotating when zoomed in with fingers down can result in a broken tab
https://bugs.webkit.org/show_bug.cgi?id=180859
rdar://problem/34532817

Reviewed by Tim Horton.

If you zoom in fully, then, with two fingers down, rotate the iPhone and rotate back,
then the tab can get into a broken state where the WKContentView has a non-zero position
which may push it entirely off-screen. The tab never recovers.

This is caused by a bug in UIKit (rdar://problem/36065495) so work around it by always
re-setting the position of the content view after zooming. We initialize contentView.frame
from self.bounds, so setting the position (via "center") to the bounds origin should always be safe.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView scrollViewDidEndZooming:withView:atScale:]):

1:11 PM Changeset in webkit [225980] by beidson@apple.com
  • 14 edits in trunk/Source/WebKit

API test WebKit.WebsiteDataStoreCustomPaths is failing
https://bugs.webkit.org/show_bug.cgi?id=180870

Reviewed by Chris Dumez.

To avoid unintentionally creating the default WebsiteDataStore we need to pass around the
relevant SessionID to more places.

  • UIProcess/ServiceWorkerProcessProxy.cpp:

(WebKit::ServiceWorkerProcessProxy::start):

  • UIProcess/ServiceWorkerProcessProxy.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::getStorageProcessConnection):
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::getStorageProcessConnection):

  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:

(WebKit::WebIDBConnectionToServer::messageSenderConnection):

  • WebProcess/Databases/WebDatabaseProvider.cpp:

(WebKit::WebDatabaseProvider::idbConnectionToServerForSession):

  • WebProcess/Storage/WebServiceWorkerProvider.cpp:

(WebKit::WebServiceWorkerProvider::serviceWorkerConnectionForSession):
(WebKit::WebServiceWorkerProvider::handleFetch):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::ensureWebToStorageProcessConnection):
(WebKit::WebProcess::establishWorkerContextConnectionToStorageProcess):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
12:35 PM Changeset in webkit [225979] by webkit@devinrousso.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Canvas Tab should be turned on by default
https://bugs.webkit.org/show_bug.cgi?id=180594
<rdar://problem/35938917>

Reviewed by Brian Burg.

  • UserInterface/Base/Main.js:

(WI.loaded):

12:12 PM Changeset in webkit [225978] by Chris Dumez
  • 10 edits in trunk/LayoutTests

Unreviewed, rebaseline Service Workers flaky tests.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/cache-storage/serviceworker/cache-match.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/about-blank-replacement.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-canvas-tainting.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-request-xhr.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/registration-service-worker-attributes.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/registration-updateviacache.https-expected.txt:

LayoutTests:

11:58 AM Changeset in webkit [225977] by achristensen@apple.com
  • 16 edits
    1 move
    3 adds in trunk/Source/WebKit

Move WebKit::WebsitePolicies to API::WebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=180873

Reviewed by Joseph Pecoraro.

It's just an API data object now. I need it to be in the API namespace so we can
give it references to other API namespace objects without weird layering violations.

  • CMakeLists.txt:
  • Shared/WebsiteAutoplayPolicy.h: Added.
  • Shared/WebsiteAutoplayQuirk.h: Added.
  • Shared/WebsitePoliciesData.cpp:

(WebKit::WebsitePoliciesData::fromWebsitePolicies): Deleted.

  • Shared/WebsitePoliciesData.h:
  • UIProcess/API/APIWebsitePolicies.cpp: Added.

(API::WebsitePolicies::~WebsitePolicies):
(API::WebsitePolicies::data):

  • UIProcess/API/APIWebsitePolicies.h: Copied from Source/WebKit/UIProcess/WebsitePolicies.h.
  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKFramePolicyListener.cpp:

(WKFramePolicyListenerUseWithPolicies):

  • UIProcess/API/C/WKPage.cpp:

(WKPageUpdateWebsitePolicies):

  • UIProcess/API/C/WKWebsitePolicies.cpp:

(WKWebsitePoliciesGetTypeID):
(WKWebsitePoliciesCreate):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _updateWebsitePolicies:]):

  • UIProcess/API/Cocoa/_WKWebsitePolicies.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.mm:

(-[_WKWebsitePolicies dealloc]):
(-[_WKWebsitePolicies init]):

  • UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h:

(WebKit::wrapper): Deleted.

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

  • UIProcess/WebFormSubmissionListenerProxy.cpp:
  • UIProcess/WebsitePolicies.h: Removed.
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.cpp:
11:57 AM Changeset in webkit [225976] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

imported/w3c/web-platform-tests/service-workers/service-worker/update.https.html is sometimes crashing in Debug builds
https://bugs.webkit.org/show_bug.cgi?id=180867

Reviewed by Brady Eidson.

Fix assertion to make sure the worker is terminating if it is already in m_runningOrTerminatingWorkers.

  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::runServiceWorker):

11:36 AM Changeset in webkit [225975] by Chris Dumez
  • 16 edits in trunk

Service Worker Registration promise is sometimes not rejected when the script load fails
https://bugs.webkit.org/show_bug.cgi?id=180849

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

Rebaseline tests that are now passing.

  • web-platform-tests/service-workers/service-worker/register-same-scope-different-script-url.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/registration-iframe.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/registration-script.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/registration-security-error.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https-expected.txt:

Source/WebCore:

Service Worker Registration promise is sometimes not rejected when the script load fails.
This was caused by the ServiceWorkerJob sometimes passing a null ResourceError to the
StorageProcess, even though the load failed.

No new tests, rebaselined exisiting tests.

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::notifyError):

  • workers/service/ServiceWorkerJob.cpp:

(WebCore::ServiceWorkerJob::notifyFinished):

LayoutTests:

Fix WebKit-specific tests that had invalid URLs for workers. We failed to notice this
before because we were wrongly resolving the registration promise.

  • http/tests/workers/service/basic-register-expected.txt:
  • http/tests/workers/service/basic-unregister-then-register-again-no-reuse.html:
  • http/tests/workers/service/registration-clear-redundant-worker.html:
  • http/tests/workers/service/resources/basic-register.js:
  • http/tests/workers/service/service-worker-gc-event.html:
  • http/tests/workers/service/service-worker-registration-gc-event.html:
7:39 AM Changeset in webkit [225974] by mitz@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

libwebrtc installs an extra copy of encoder_vcp.h under /usr/local/include
https://bugs.webkit.org/show_bug.cgi?id=180858

Reviewed by Anders Carlsson.

  • libwebrtc.xcodeproj/project.pbxproj: Demoted the header from Private to Project. A script build phase copies it to the correct location under /usr/local/include/webrtc.
7:38 AM Changeset in webkit [225973] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

WebRTC Stats should not be console logged from a background thread
https://bugs.webkit.org/show_bug.cgi?id=180845

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-15
Reviewed by Eric Carlson.

Ensuring console log are done in the main thread.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::OnStatsDelivered):

6:27 AM Changeset in webkit [225972] by nael.ouedraogo@crf.canon.fr
  • 2 edits in trunk/Tools

[GTK] Add proxy option to Minibrowser
https://bugs.webkit.org/show_bug.cgi?id=180750

Reviewed by Michael Catanzaro.

Add command line option to set proxy settings in GTK minibrowser.

  • MiniBrowser/gtk/main.c:

(main):

5:58 AM Changeset in webkit [225971] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, 32bit JSEmpty is not nullptr + CellTag
https://bugs.webkit.org/show_bug.cgi?id=180804

Add 32bit path for WeakMapGet.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileWeakMapGet):

5:14 AM Changeset in webkit [225970] by Carlos Garcia Campos
  • 5 edits in trunk/Source/WebDriver

WebDriver: add support for accept/dismiss and notify unhandled prompt behavior
https://bugs.webkit.org/show_bug.cgi?id=179999

Reviewed by Carlos Alberto Lopez Perez.

They work as accept and dismiss, but unexpected alert open is still reported.

  1. User Prompts

https://w3c.github.io/webdriver/webdriver-spec.html#dfn-known-prompt-handling-approaches-table

  • Capabilities.h: Add DismissAndNotify and AcceptAndNotify to UnhandledPromptBehavior enum.
  • Session.cpp:

(WebDriver::Session::handleUnexpectedAlertOpen): Move default implementation to dismissAndNotifyAlert and
acceptAndNotifyAlert and use dismissAndNotifyAlert by default.
(WebDriver::Session::dismissAndNotifyAlert):
(WebDriver::Session::acceptAndNotifyAlert):

  • Session.h:
  • WebDriverService.cpp:

(WebDriver::deserializeUnhandledPromptBehavior): Handle accept/dismiss and notify.
(WebDriver::WebDriverService::newSession): Ditto.

4:35 AM Changeset in webkit [225969] by Antti Koivisto
  • 57 edits
    1 copy
    1 add in trunk/Source/WebCore

Introduce RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=180817

Reviewed by Zalan Bujtas.

RenderTreeBuilder is responsible of building the render tree, including construction of various anonymous
renderers. Renderer subtype specific render tree construction code will eventually move there.

This patch adds RenderTreeBuilder class and passes it as a parameter for all addChild implementations.
Future patches can then mechanically move the building code from renderers to RenderTreeBuilder.

It also moves one addChild implementation (RenderRuby::addChild -> RenderTreeBuilder::rubyRunInsertChild)
to RenderTreeBuilder as a test.

  • WebCore.xcodeproj/project.pbxproj:
  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::addChildToContinuation):
(WebCore::RenderBlock::addChild):
(WebCore::RenderBlock::addChildIgnoringContinuation):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::addChild):

  • rendering/RenderBlockFlow.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::moveChildTo):

  • rendering/RenderButton.cpp:

(WebCore::RenderButton::addChild):
(WebCore::RenderButton::setText):

  • rendering/RenderButton.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::addChild):

  • rendering/RenderElement.h:

(WebCore::RenderElement::addChildIgnoringContinuation):

  • rendering/RenderFullScreen.cpp:

(WebCore::RenderFullScreen::wrapNewRenderer):
(WebCore::RenderFullScreen::wrapExistingRenderer):
(WebCore::RenderFullScreen::unwrapRenderer):
(WebCore::RenderFullScreen::createPlaceholder):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::addChild):

  • rendering/RenderGrid.h:
  • rendering/RenderInline.cpp:

(WebCore::RenderInline::addChild):
(WebCore::RenderInline::addChildIgnoringContinuation):
(WebCore::RenderInline::splitInlines):
(WebCore::RenderInline::splitFlow):
(WebCore::RenderInline::addChildToContinuation):
(WebCore::RenderInline::childBecameNonInline):

  • rendering/RenderInline.h:
  • rendering/RenderMenuList.cpp:

(WebCore::RenderMenuList::createInnerBlock):
(RenderMenuList::addChild):
(RenderMenuList::setText):

  • rendering/RenderMenuList.h:
  • rendering/RenderMultiColumnFlow.cpp:

(WebCore::RenderMultiColumnFlow::processPossibleSpannerDescendant):

  • rendering/RenderQuote.cpp:

(WebCore::RenderQuote::updateTextRenderer):
(WebCore::RenderQuote::updateRenderer):

  • rendering/RenderQuote.h:
  • rendering/RenderRuby.cpp:

(WebCore::RenderRubyAsInline::addChild):
(WebCore::RenderRubyAsBlock::addChild):

  • rendering/RenderRuby.h:
  • rendering/RenderRubyBase.h:
  • rendering/RenderRubyRun.cpp:

(WebCore::RenderRubyRun::rubyBaseSafe):
(WebCore::RenderRubyRun::addChild): Deleted.

  • rendering/RenderRubyRun.h:
  • rendering/RenderTable.cpp:

(WebCore::RenderTable::addChild):

  • rendering/RenderTable.h:
  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::addChild):

  • rendering/RenderTableRow.h:
  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::addChild):

  • rendering/RenderTableSection.h:
  • rendering/RenderTreeBuilder.cpp: Added.

(WebCore::RenderTreeBuilder::RenderTreeBuilder):
(WebCore::RenderTreeBuilder::~RenderTreeBuilder):
(WebCore::RenderTreeBuilder::insertChild):
(WebCore::RenderTreeBuilder::rubyRunInsertChild):

  • rendering/RenderTreeBuilder.h: Added.

(WebCore::RenderTreeBuilder::current):

  • rendering/TextAutoSizing.cpp:

(WebCore::TextAutoSizingValue::adjustTextNodeSizes):

  • rendering/mathml/RenderMathMLFenced.cpp:

(WebCore::RenderMathMLFenced::updateFromElement):
(WebCore::RenderMathMLFenced::makeFences):
(WebCore::RenderMathMLFenced::addChild):

  • rendering/mathml/RenderMathMLFenced.h:
  • rendering/svg/RenderSVGContainer.cpp:

(WebCore::RenderSVGContainer::addChild):

  • rendering/svg/RenderSVGContainer.h:
  • rendering/svg/RenderSVGInline.cpp:

(WebCore::RenderSVGInline::addChild):

  • rendering/svg/RenderSVGInline.h:
  • rendering/svg/RenderSVGRoot.cpp:

(WebCore::RenderSVGRoot::addChild):

  • rendering/svg/RenderSVGRoot.h:
  • rendering/svg/RenderSVGText.cpp:

(WebCore::RenderSVGText::addChild):

  • rendering/svg/RenderSVGText.h:
  • style/RenderTreePosition.cpp:

(WebCore::RenderTreePosition::insert): Deleted.

  • style/RenderTreePosition.h:

(WebCore::RenderTreePosition::RenderTreePosition):
(WebCore::RenderTreePosition::nextSibling const):
(WebCore::RenderTreePosition::canInsert const): Deleted.

  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateAfterDescendants):
(WebCore::RenderTreeUpdater::createRenderer):
(WebCore::RenderTreeUpdater::createTextRenderer):
(WebCore::RenderTreeUpdater::updateTextRenderer):
(WebCore::createTextRenderer): Deleted.

  • style/RenderTreeUpdater.h:
  • style/RenderTreeUpdaterFirstLetter.cpp:

(WebCore::updateFirstLetterStyle):
(WebCore::createFirstLetterRenderer):

  • style/RenderTreeUpdaterGeneratedContent.cpp:

(WebCore::RenderTreeUpdater::GeneratedContent::updateQuotesUpTo):
(WebCore::createContentRenderers):
(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement):

  • style/RenderTreeUpdaterListItem.cpp:

(WebCore::RenderTreeUpdater::ListItem::updateMarker):

  • style/RenderTreeUpdaterListItem.h:
  • style/RenderTreeUpdaterMultiColumn.cpp:

(WebCore::RenderTreeUpdater::MultiColumn::createFragmentedFlow):
(WebCore::RenderTreeUpdater::MultiColumn::destroyFragmentedFlow):

12:28 AM Changeset in webkit [225968] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles Redesign: clicking above selector should prepend new property
https://bugs.webkit.org/show_bug.cgi?id=180628
<rdar://problem/35954570>

Reviewed by Devin Rousso.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:

(.spreadsheet-style-declaration-editor .property):
(.spreadsheet-style-declaration-editor .property-toggle):
(.spreadsheet-style-declaration-editor .property.has-warning .warning):

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.css:

(.spreadsheet-css-declaration):
(.spreadsheet-css-declaration :matches(.header, .header-media)):
(.spreadsheet-css-declaration :matches(.header, .header-media):first-child):
When header-media element is present, header element should have padding-top set to 0.

(.spreadsheet-css-declaration .header.editing-selector .origin):
(.spreadsheet-css-declaration .close-brace):

Dec 14, 2017:

11:53 PM Changeset in webkit [225967] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebKit

Unreviewed GTK+ build fix after r225954.

  • UIProcess/API/glib/WebKitPolicyDecision.cpp:

Explicitly include the WebsitePoliciesData.h header, avoiding build
failures due to incomplete WebsitePoliciesData type.

10:20 PM Changeset in webkit [225966] by sbarati@apple.com
  • 6 edits
    1 add in trunk

The CleanUp after LICM is erroneously removing a Check
https://bugs.webkit.org/show_bug.cgi?id=180852
<rdar://problem/36063494>

Reviewed by Filip Pizlo.

JSTests:

  • stress/dont-run-cleanup-after-licm.js: Added.

Source/JavaScriptCore:

There was a bug where CleanUp phase relied on isProved() bits and LICM
changed them in an invalid way. The bug is as follows:

We have two loops, L1 and L2, and two preheaders, P1 and P2. L2 is nested
inside of L1. We have a Check inside a node inside L1, say in basic block BB,
and that Check dominates all of L2. This is also a hoisting candidate, so we
hoist it outside of L1 and put it inside P1. Then, when we run AI, we look at
the preheader for each loop inside L1, so P1 and P2. When considering P2,
we execute the Check. Inside P2, before any hoisting is done, this Check
is dead code, because BB dominates P2. When we use AI to "execute" the
Check, it'll set its proof status to proved. This is because inside P2,
in the program before LICM runs, the Check is indeed proven at P2. But
it is not proven inside P1. This "execute" call will set our proof status
for the node inside *P1*, hence, we crash.

The fix here is to make LICM precise when updating the ProofStatus of an edge.
It can trust the AI state at the preheader it hoists the node to, but it can't
trust the state when executing effects inside inner loops's preheaders.

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):

9:45 PM Changeset in webkit [225965] by jmarcell@apple.com
  • 7 edits in tags/Safari-605.1.18.1/Source

Versioning.

9:39 PM Changeset in webkit [225964] by jmarcell@apple.com
  • 1 copy in tags/Safari-605.1.18.1

New tag.

9:32 PM Changeset in webkit [225963] by commit-queue@webkit.org
  • 23 edits in trunk

Implement <iframe allow="camera; microphone">
https://bugs.webkit.org/show_bug.cgi?id=167430
LayoutTests/imported/w3c:

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-14
Reviewed by Eric Carlson.

  • resources/import-expectations.json:
  • web-platform-tests/feature-policy/resources/: Added as this is used for some mediacapture-streams tests.
  • web-platform-tests/mediacapture-streams/: Added.

Source/WebCore:

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-14
Reviewed by Eric Carlson.

Tests: imported/w3c/web-platform-tests/mediacapture-streams/MediaStream-default-feature-policy.https.sub.html

Adding allow attribute to HTMLIFrameElement as per https://wicg.github.io/feature-policy/#iframe-allow-attribute.
Cross-origin iframes will get access to camera/microphone based on this attribute value.
Same-origin iframes do not need any attribute.
In case getUserMedia requests both camera and microphone, and allow attribute is only one of these,
getUserMedia access is denied. This goes against the tests but is not very clear from the specification.

  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::isSecure):
(WebCore::isAllowedToUse):
(WebCore::canCallGetUserMedia):
(WebCore::UserMediaRequest::start):

  • html/HTMLAttributeNames.in:
  • html/HTMLIFrameElement.cpp:

(WebCore::HTMLIFrameElement::parseAttribute):

  • html/HTMLIFrameElement.h:
  • html/HTMLIFrameElement.idl:

LayoutTests:

<rdar://problem/34887226>

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-14
Reviewed by Eric Carlson.

Skipping mediastream tests for wpe.
Updating expectations based on new error message.

  • TestExpectations: Skipping sync XHR test using allow attribute.
  • http/tests/ssl/media-stream/get-user-media-different-host-expected.txt:
  • http/tests/ssl/media-stream/get-user-media-nested-expected.txt:
  • platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-sync-default-feature-policy.sub-expected.txt:
  • platform/wpe/TestExpectations:
9:22 PM Changeset in webkit [225962] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore/PAL

Fix 32-bit build: Enable -Wstrict-prototypes for WebKit
<https://webkit.org/b/180757>
<rdar://problem/36024132>

  • pal/spi/mac/QuickDrawSPI.h:

(NewRgn): Add 'void' to C function declaration.
(PenNormal): Ditto.

9:20 PM Changeset in webkit [225961] by Chris Dumez
  • 3 edits
    1 add in trunk/LayoutTests/imported/w3c

Unreviewed, commit missing empty.js file in service workers WPT tests

  • web-platform-tests/service-workers/service-worker/resources/empty.js: Added.
  • web-platform-tests/service-workers/service-worker/service-worker-csp-default.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/service-worker-csp-script.https-expected.txt:
8:22 PM Changeset in webkit [225960] by Alan Bujtas
  • 5 edits
    2 adds in trunk

Inconsistent section grid could lead to CrashOnOverflow
https://bugs.webkit.org/show_bug.cgi?id=180850
<rdar://problem/34064811>

Reviewed by Simon Fraser.

Source/WebCore:

Each RenderTableSection maintains a grid of rows and columns. The number of columns in this grid equals the
maximum number of columns in the entire table (taking spans and multiple sections into account).
Since the maximum number of columns might change while re-computing the sections, we need to
adjust them accordingly at the end (otherwise it could lead to inconsistent grids where rows have different number of columns).

Test: fast/table/table-row-oveflow-crash.html

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::recalcSections const):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::removeRedundantColumns):

  • rendering/RenderTableSection.h:

LayoutTests:

  • fast/table/table-row-oveflow-crash-expected.txt: Added.
  • fast/table/table-row-oveflow-crash.html: Added.
8:22 PM Changeset in webkit [225959] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[webkitpy, Windows] Remove unnecessary debug message
https://bugs.webkit.org/show_bug.cgi?id=180844

Patch by Basuke Suzuki <Basuke Suzuki> on 2017-12-14
Reviewed by Ryosuke Niwa.

  • Scripts/webkitpy/common/system/crashlogs.py:

(CrashLogs._find_newest_log_win): Delete debug print

8:19 PM Changeset in webkit [225958] by ddkilzer@apple.com
  • 38 edits in trunk/Source

Enable -Wstrict-prototypes for WebKit
<https://webkit.org/b/180757>
<rdar://problem/36024132>

Rubber-stamped by Joseph Pecoraro.

Source/bmalloc:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/JavaScriptCore:

  • API/tests/CompareAndSwapTest.h:

(testCompareAndSwap): Add 'void' to C function declaration.

  • API/tests/ExecutionTimeLimitTest.h:

(testExecutionTimeLimit): Ditto.

  • API/tests/FunctionOverridesTest.h:

(testFunctionOverrides): Ditto.

  • API/tests/GlobalContextWithFinalizerTest.h:

(testGlobalContextWithFinalizer): Ditto.

  • API/tests/JSONParseTest.h:

(testJSONParse): Ditto.

  • API/tests/MultithreadedMultiVMExecutionTest.h:

(startMultithreadedMultiVMExecutionTest): Ditto.
(finalizeMultithreadedMultiVMExecutionTest): Ditto.

  • API/tests/PingPongStackOverflowTest.h:

(testPingPongStackOverflow): Ditto.

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/ThirdParty:

  • gtest/xcode/Config/General.xcconfig:

(WARNING_CFLAGS): Add semicolon.
(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/ThirdParty/ANGLE:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/ThirdParty/libwebrtc:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

  • Source/third_party/usrsctp/usrsctplib/usrsctplib/user_socket.c:

(wakeup_one): Modernize function argument declarations.
(getsockaddr): Ditto.

  • Source/webrtc/common_audio/signal_processing/include/signal_processing_library.h:

(WebRtcSpl_Init): Add 'void' to C function declaration.

  • Source/webrtc/common_audio/vad/include/webrtc_vad.h:

(WebRtcVad_Create): Ditto.

  • Source/webrtc/modules/audio_coding/codecs/isac/fix/source/codec.h:

(WebRtcIsacfix_InitTransform): Ditto.

  • Source/webrtc/modules/audio_processing/agc/legacy/gain_control.h:

(WebRtcAgc_Create): Ditto.

  • Source/webrtc/modules/audio_processing/ns/noise_suppression.h:

(WebRtcNs_Create): Ditto.
(WebRtcNs_num_freq): Ditto.

  • Source/webrtc/modules/audio_processing/ns/noise_suppression_x.h:

(WebRtcNsx_Create): Ditto.
(WebRtcNsx_num_freq): Ditto.

Source/WebCore:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/WebCore/PAL:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/WebKit:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

  • Platform/spi/ios/UIKitSPI.h:

(_UIDragInteractionDefaultLiftDelay): Add 'void' to C function declaration.
(UIKeyboardEnabledInputModesAllowOneToManyShortcuts): Ditto.

Source/WebKitLegacy/mac:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

Source/WTF:

  • Configurations/Base.xcconfig:

(CLANG_WARN_STRICT_PROTOTYPES): Add. Set to YES.

  • wtf/Assertions.h:

(WTFReportBacktrace): Add 'void' to C function declaration.
(WTFCrashHookFunction): Add 'void' to C function pointer declaration.
(WTFInstallReportBacktraceOnCrashHook): Add 'void' to C function declaration.
(WTFIsDebuggerAttached): Ditto.
(WTFCrash): Ditto.
(WTFCrashWithSecurityImplication): Ditto.

7:26 PM Changeset in webkit [225957] by ddkilzer@apple.com
  • 2 edits in trunk/Tools

check-webkit-style: Stop warning about underscores in webrtc source
<https://webkit.org/b/180848>

Reviewed by Joseph Pecoraro.

  • Scripts/webkitpy/style/checker.py:

(_PATH_RULES_SPECIFIER): Suppress readability/naming/underscores
warnings under Source/ThirdParty/libwebrtc/Source/webrtc.

6:49 PM Changeset in webkit [225956] by Chris Dumez
  • 2 edits in trunk/LayoutTests

[iOS] Many serviceworker tests are flaky timeouts on iOS bots
https://bugs.webkit.org/show_bug.cgi?id=179454
<rdar://problem/35429369>

Unreviewed attempt to unmark service worker tests as flaky on iOS.
We have now fixed all the iOS-specific bugs we are aware of so we
should give this a try.

  • platform/ios/TestExpectations:
6:14 PM Changeset in webkit [225955] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

srflx and relay ICE candidates lack raddr (rel-addr) and rport (rel-port) attributes if getUserMedia access has not been granted
https://bugs.webkit.org/show_bug.cgi?id=180842

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-14
Reviewed by Jon Lee.

Manually tested since there is no way to gather reflexive or stun candidates in WebKit CI.

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::filterICECandidate):

6:08 PM Changeset in webkit [225954] by achristensen@apple.com
  • 29 edits
    2 moves
    1 add
    2 deletes in trunk/Source/WebKit

Serialize WebsitePoliciesData instead of WebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=180847

Reviewed by Joseph Pecoraro.

No change in behavior. This will allow me to add things to WebsitePolicies that have
a different form when serialized to another process.

Also, remove API::WebsitePolicies because the wrapper isn't necessary.
WebsitePolicies is now the API type that only exists in the UIProcess.

  • Shared/WebsitePolicies.cpp: Removed.
  • Shared/WebsitePolicies.h:

(WebKit::WebsitePolicies::contentBlockersEnabled const): Deleted.
(WebKit::WebsitePolicies::setContentBlockersEnabled): Deleted.
(WebKit::WebsitePolicies::allowedAutoplayQuirks const): Deleted.
(WebKit::WebsitePolicies::setAllowedAutoplayQuirks): Deleted.
(WebKit::WebsitePolicies::autoplayPolicy const): Deleted.
(WebKit::WebsitePolicies::setAutoplayPolicy): Deleted.
(WebKit::WebsitePolicies::customHeaderFields): Deleted.
(WebKit::WebsitePolicies::takeCustomHeaderFields): Deleted.
(WebKit::WebsitePolicies::setCustomHeaderFields): Deleted.

  • Shared/WebsitePoliciesData.cpp: Copied from Source/WebKit/Shared/WebsitePolicies.cpp.

(WebKit::WebsitePoliciesData::fromWebsitePolicies):
(WebKit::WebsitePoliciesData::encode const):
(WebKit::WebsitePoliciesData::decode):
(WebKit::WebsitePoliciesData::applyToDocumentLoader):
(WebKit::WebsitePolicies::WebsitePolicies): Deleted.
(WebKit::WebsitePolicies::encode const): Deleted.
(WebKit::WebsitePolicies::decode): Deleted.
(WebKit::WebsitePolicies::applyToDocumentLoader): Deleted.

  • Shared/WebsitePoliciesData.h: Added.
  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::decidePolicyForNavigationAction):
(API::NavigationClient::decidePolicyForNavigationResponse):

  • UIProcess/API/APIPolicyClient.h:

(API::PolicyClient::decidePolicyForNavigationAction):
(API::PolicyClient::decidePolicyForNewWindowAction):
(API::PolicyClient::decidePolicyForResponse):

  • UIProcess/API/APIWebsitePolicies.cpp: Removed.
  • UIProcess/API/APIWebsitePolicies.h: Removed.
  • UIProcess/API/C/WKAPICast.h:
  • UIProcess/API/C/WKFramePolicyListener.cpp:

(WKFramePolicyListenerUse):
(WKFramePolicyListenerUseWithPolicies):

  • UIProcess/API/C/WKPage.cpp:

(WKPageUpdateWebsitePolicies):
(WKPageSetPagePolicyClient):
(WKPageSetPageNavigationClient):

  • UIProcess/API/C/WKWebsitePolicies.cpp:

(WKWebsitePoliciesGetTypeID):
(WKWebsitePoliciesCreate):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _updateWebsitePolicies:]):

  • UIProcess/API/Cocoa/_WKWebsitePolicies.mm:

(-[_WKWebsitePolicies dealloc]):
(-[_WKWebsitePolicies init]):

  • UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h:

(WebKit::wrapper):

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse):

  • UIProcess/WebFrameListenerProxy.cpp:

(WebKit::WebFrameListenerProxy::receivedPolicyDecision):

  • UIProcess/WebFrameListenerProxy.h:
  • UIProcess/WebFramePolicyListenerProxy.cpp:

(WebKit::WebFramePolicyListenerProxy::use):
(WebKit::WebFramePolicyListenerProxy::download):
(WebKit::WebFramePolicyListenerProxy::ignore):

  • UIProcess/WebFramePolicyListenerProxy.h:
  • UIProcess/WebFrameProxy.cpp:

(WebKit::WebFrameProxy::receivedPolicyDecision):

  • UIProcess/WebFrameProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::updateWebsitePolicies):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::applyToDocumentLoader):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::didReceivePolicyDecision):

  • WebProcess/WebPage/WebFrame.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didReceivePolicyDecision):
(WebKit::WebPage::updateWebsitePolicies):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
5:46 PM Changeset in webkit [225953] by Jonathan Bedard
  • 4 edits in trunk/Tools

webkitpy: Replace Version.contained_in with Version.contains
https://bugs.webkit.org/show_bug.cgi?id=180772
<rdar://problem/36033555>

Reviewed by David Kilzer.

Using contains instead of contained_in allows for the more
Pythonic 'in' operator to be used.

  • Scripts/webkitpy/common/version.py:

(Version):
(Version.contains): Replace contained_in. Note that self is now
the container.
(Version.contained_in): Deleted.

  • Scripts/webkitpy/common/version_name_map.py:

(VersionNameMap.to_name):

  • Scripts/webkitpy/common/version_unittest.py:

(VersionTestCase.test_contained_in):

5:45 PM Changeset in webkit [225952] by Yusuke Suzuki
  • 3 edits in trunk/Source/JavaScriptCore

[DFG] Reduce register pressure of WeakMapGet to be used for 32bit
https://bugs.webkit.org/show_bug.cgi?id=180804

Reviewed by Saam Barati.

This fixes 32bit failures of JSC by reducing register pressure of WeakMapGet.

  • dfg/DFGRegisterBank.h:

(JSC::DFG::RegisterBank::lockedCount const):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileWeakMapGet):

5:39 PM Changeset in webkit [225951] by commit-queue@webkit.org
  • 17 edits in trunk/Source/WebCore

Unreviewed, rolling out r225878.
https://bugs.webkit.org/show_bug.cgi?id=180855

Introduced a crash in HTMLPictureElement. We're taking a
different approach for webkit.org/b/180769 (Requested by rniwa
on #webkit).

Reverted changeset:

"Crash inside ImageLoader::updateFromElement()"
https://bugs.webkit.org/show_bug.cgi?id=180769
https://trac.webkit.org/changeset/225878

5:39 PM Changeset in webkit [225950] by BJ Burg
  • 23 edits
    2 adds in trunk

Web Inspector: InspectorTest.evaluateInPage should unwrap primitive values by default
https://bugs.webkit.org/show_bug.cgi?id=180831

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

  • UserInterface/Test/FrontendTestHarness.js:

(FrontendTestHarness.prototype.evaluateInPage.resultObjectToReturn):
(FrontendTestHarness.prototype.evaluateInPage):
Unwrap the resulting RemoteObject's value if it is a primitive.
Add an options dictionary so this behavior can be opted out.

  • UserInterface/Test/TestHarness.js:

Add documentation of how evaluateInPage works.

LayoutTests:

  • inspector/unit-tests/test-harness-evaluate-in-page-expected.txt: Added.
  • inspector/unit-tests/test-harness-evaluate-in-page.html: Added.

Add test coverage for InspectorTest.evaluateInPage. Only the promise-returning
variant is tested here, because the callback variant is well-used in existing
tests and I plan to remove the callback variant entirely in later patches.

  • inspector/console/js-isLikelyStackTrace-expected.txt:
  • inspector/console/js-isLikelyStackTrace.html:

Fix some bad tests and rebaseline. A bug was filed for the remaining failing assertion.

  • http/tests/inspector/dom/shapes-test.js:

(TestPage.registerInitializer.InspectorTest.Shapes.receivedHighlightObject):
(TestPage.registerInitializer.InspectorTest.Shapes.getShapeOutsideInfoForSelector):

  • http/tests/inspector/paymentrequest/payment-request-internal-properties.https.html:
  • inspector/console/command-line-api-copy.html:
  • inspector/console/console-log-proxy.html:
  • inspector/debugger/js-stacktrace.html:
  • inspector/dom/hideHighlight.html:
  • inspector/dom/highlightFrame.html:
  • inspector/dom/highlightNode.html:
  • inspector/dom/highlightNodeList.html:
  • inspector/dom/highlightQuad.html:
  • inspector/dom/highlightRect.html:
  • inspector/dom/highlightSelector.html:
  • inspector/page/setEmulatedMedia.html:
  • inspector/runtime/getPreview.html:

Fix existing tests to opt out of unwrapping or use the unwrapped value directly.

  • inspector/dom/setEventListenerDisabled-expected.txt:

Rebaseline results. This is caused by an extra promise tick in evaluateInPage.

  • inspector/injected-script/observable-expected.txt:
  • inspector/injected-script/observable.html:

Fix a typo and rebaseline.

5:29 PM Changeset in webkit [225949] by Ryan Haddad
  • 13 edits in trunk

Unreviewed, rolling out r225931.

Breaks internal builds.

Reverted changeset:

"Fix Mac CMake build"
https://bugs.webkit.org/show_bug.cgi?id=180835
https://trac.webkit.org/changeset/225931

5:28 PM Changeset in webkit [225948] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Unreviewed, rebaseline compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint.html after r225897.

  • platform/mac-wk1/compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint-expected.txt:
5:27 PM Changeset in webkit [225947] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Another Windows build fix.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::extendedSRGBColorSpaceRef):

5:01 PM Changeset in webkit [225946] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Fix Windows build after r225915.

Windows doens't have dispatch_once with blocks. Switch to use lambda functions instead.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::sRGBColorSpaceRef):
(WebCore::linearRGBColorSpaceRef):
(WebCore::extendedSRGBColorSpaceRef):
(WebCore::displayP3ColorSpaceRef):

5:00 PM Changeset in webkit [225945] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles Redesign: selecting text should not add new properties
https://bugs.webkit.org/show_bug.cgi?id=180797
<rdar://problem/36039751>

Reviewed by Devin Rousso.

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:

(WI.SpreadsheetCSSStyleDeclarationSection.prototype._handleClick):

4:50 PM Changeset in webkit [225944] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

Clearing WebSite data on iOS does not clear the Fetch Cache
https://bugs.webkit.org/show_bug.cgi?id=180846
<rdar://problem/36060129>

Reviewed by Youenn Fablet.

When clearing WebSite data, construct the engine for the given sessionID
if missing, instead of not clearing anything when the engine is missing.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):

4:12 PM Changeset in webkit [225943] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, forgot to add { }

  • runtime/JSObject.h:

(JSC::JSObject::setButterfly):
(JSC::JSObject::nukeStructureAndSetButterfly):

4:02 PM Changeset in webkit [225942] by Matt Lewis
  • 4 edits in trunk/LayoutTests

Skipped media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-mse.html on macOS.
https://bugs.webkit.org/show_bug.cgi?id=180430

Unreviewed test gardening.

  • platform/mac-elcapitan/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
4:02 PM Changeset in webkit [225941] by webkit@devinrousso.com
  • 31 edits in trunk

Web Inspector: replace HTMLCanvasElement with CanvasRenderingContext for instrumentation logic
https://bugs.webkit.org/show_bug.cgi?id=180770

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

  • inspector/protocol/Canvas.json:

Source/WebCore:

No change in functionality.

  • html/canvas/CanvasRenderingContext.h:
  • html/canvas/CanvasRenderingContext.cpp:

(WebCore::CanvasRenderingContext::~CanvasRenderingContext):
Instead of waiting on the HTMLCanvasElement to destruct to call willDestroyCanvasRenderingContext
we can call out in the destructor and know that the CanvasRenderingContext will be destroyed
immediately thereafter.

  • html/canvas/CanvasRenderingContext2D.h:
  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::create):

  • html/canvas/ImageBitmapRenderingContext.h:
  • html/canvas/ImageBitmapRenderingContext.cpp:

(WebCore::ImageBitmapRenderingContext::create):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::create):

  • html/canvas/WebGLRenderingContext.h:
  • html/canvas/WebGLRenderingContext.cpp:

(WebCore::WebGLRenderingContext::create):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::create):

  • html/canvas/WebGPURenderingContext.cpp:

(WebCore::WebGPURenderingContext::create):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createContext2d):
(WebCore::HTMLCanvasElement::createContextWebGL):
(WebCore::HTMLCanvasElement::createContextWebGPU):
(WebCore::HTMLCanvasElement::createContextBitmapRenderer):
(WebCore::HTMLCanvasElement::paint):
(WebCore::HTMLCanvasElement::setImageBuffer const):
Instead of adding didCreateCanvasRenderingContext calls at the construction sites of each
context, we can make the constructors private and force the usage of static create functions.
This way, we have access to the fully constructed object and have a guaranteed path for creation.

  • inspector/InspectorCanvas.h:
  • inspector/InspectorCanvas.cpp:

(WebCore::InspectorCanvas::create):
(WebCore::InspectorCanvas::InspectorCanvas):
(WebCore::InspectorCanvas::canvasElement):
(WebCore::InspectorCanvas::resetRecordingData):
(WebCore::InspectorCanvas::recordAction):
(WebCore::InspectorCanvas::buildObjectForCanvas):
(WebCore::InspectorCanvas::getCanvasContentAsDataURL):
(WebCore::InspectorCanvas::buildInitialState):

  • inspector/InspectorShaderProgram.h:
  • inspector/InspectorShaderProgram.cpp:

(WebCore::InspectorShaderProgram::context const):

  • inspector/agents/InspectorCanvasAgent.h:
  • inspector/agents/InspectorCanvasAgent.cpp:

(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::enable):
(WebCore::InspectorCanvasAgent::disable):
(WebCore::InspectorCanvasAgent::requestNode):
(WebCore::InspectorCanvasAgent::requestContent):
(WebCore::InspectorCanvasAgent::requestCSSCanvasClientNodes):
(WebCore::contextAsScriptValue):
(WebCore::InspectorCanvasAgent::resolveCanvasContext):
(WebCore::InspectorCanvasAgent::startRecording):
(WebCore::InspectorCanvasAgent::stopRecording):
(WebCore::InspectorCanvasAgent::updateShader):
(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::didChangeCSSCanvasClientNodes):
(WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext):
(WebCore::InspectorCanvasAgent::willDestroyCanvasRenderingContext):
(WebCore::InspectorCanvasAgent::didChangeCanvasMemory):
(WebCore::InspectorCanvasAgent::recordCanvasAction):
(WebCore::InspectorCanvasAgent::didFinishRecordingCanvasFrame):
(WebCore::InspectorCanvasAgent::consoleStartRecordingCanvas):
(WebCore::InspectorCanvasAgent::didEnableExtension):
(WebCore::InspectorCanvasAgent::didCreateProgram):
(WebCore::InspectorCanvasAgent::canvasDestroyedTimerFired):
(WebCore::InspectorCanvasAgent::canvasRecordingTimerFired):
(WebCore::InspectorCanvasAgent::clearCanvasData):
(WebCore::InspectorCanvasAgent::unbindCanvas):
(WebCore::InspectorCanvasAgent::findInspectorCanvas):
(WebCore::InspectorCanvasAgent::unbindProgram):
(WebCore::InspectorCanvasAgent::didCreateCSSCanvas): Deleted.
(WebCore::InspectorCanvasAgent::canvasDestroyed): Deleted.

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didCreateCanvasRenderingContext):
(WebCore::InspectorInstrumentation::willDestroyCanvasRenderingContext):
(WebCore::InspectorInstrumentation::didChangeCanvasMemory):
(WebCore::InspectorInstrumentation::recordCanvasAction):
(WebCore::InspectorInstrumentation::didFinishRecordingCanvasFrame):
(WebCore::InspectorInstrumentation::didEnableExtension):
(WebCore::InspectorInstrumentation::didCreateProgram):
(WebCore::InspectorInstrumentation::willDeleteProgram):
(WebCore::InspectorInstrumentation::isShaderProgramDisabled):
(WebCore::InspectorInstrumentation::consoleStartRecordingCanvas):
(WebCore::InspectorInstrumentation::didCreateCSSCanvas): Deleted.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::consoleStartRecordingCanvasImpl):
(WebCore::InspectorInstrumentation::didChangeCSSCanvasClientNodesImpl):
(WebCore::InspectorInstrumentation::didCreateCanvasRenderingContextImpl):
(WebCore::InspectorInstrumentation::willDestroyCanvasRenderingContextImpl):
(WebCore::InspectorInstrumentation::didChangeCanvasMemoryImpl):
(WebCore::InspectorInstrumentation::didFinishRecordingCanvasFrameImpl):
(WebCore::InspectorInstrumentation::didEnableExtensionImpl):
(WebCore::InspectorInstrumentation::didCreateProgramImpl):
(WebCore::InspectorInstrumentation::didCreateCSSCanvasImpl): Deleted.

  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::record):
(WebCore::PageConsoleClient::recordEnd):

  • dom/Document.h:
  • dom/Document.cpp:

(WebCore::Document::getCSSCanvasElement):
(WebCore::Document::nameForCSSCanvasElement const):
We have no reason to save the CSS canvas name for each InspectorCanvas object, so instead we
can just query for the name based on the CanvasRenderingContext's HTMLCanvasElement (assuming
it is not an OffscreenCanvas) when we need it.

Source/WebInspectorUI:

  • UserInterface/Models/Canvas.js:

(WI.Canvas.fromPayload):
(WI.Canvas.prototype.get contextType):
(WI.Canvas.prototype.saveIdentityToCookie):
(WI.Canvas.prototype.get frame): Deleted.

Tools:

  • Scripts/webkitpy/common/config/watchlist:
3:59 PM Changeset in webkit [225940] by Chris Dumez
  • 17 edits
    7 adds in trunk

self.importScripts() should obey updateViaCache inside service workers
https://bugs.webkit.org/show_bug.cgi?id=180826

Reviewed by Youenn Fablet.

Source/WebCore:

self.importScripts() should obey updateViaCache inside service workers, as per:

Tests: http/tests/workers/service/registration-updateViaCache-all-importScripts.html

http/tests/workers/service/registration-updateViaCache-imports-importScripts.html
http/tests/workers/service/registration-updateViaCache-none-importScripts.html

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::importScripts):

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadSynchronously):

  • workers/WorkerScriptLoader.h:
  • workers/service/SWClientConnection.cpp:

(WebCore::SWClientConnection::setRegistrationLastUpdateTime):

  • workers/service/SWClientConnection.h:
  • workers/service/ServiceWorkerRegistration.cpp:

(WebCore::ServiceWorkerRegistration::lastUpdateTime const):
(WebCore::ServiceWorkerRegistration::setLastUpdateTime):

  • workers/service/ServiceWorkerRegistration.h:
  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerRegistration.cpp:

(WebCore::SWServerRegistration::setLastUpdateTime):

  • workers/service/server/SWServerRegistration.h:

Source/WebKit:

  • StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::setRegistrationLastUpdateTime):

  • StorageProcess/ServiceWorker/WebSWServerConnection.h:
  • WebProcess/Storage/WebSWClientConnection.messages.in:

LayoutTests:

Add layout test coverage.

  • http/tests/workers/service/registration-updateViaCache-all-importScripts-expected.txt: Added.
  • http/tests/workers/service/registration-updateViaCache-all-importScripts.html: Added.
  • http/tests/workers/service/registration-updateViaCache-imports-importScripts-expected.txt: Added.
  • http/tests/workers/service/registration-updateViaCache-imports-importScripts.html: Added.
  • http/tests/workers/service/registration-updateViaCache-none-importScripts-expected.txt: Added.
  • http/tests/workers/service/registration-updateViaCache-none-importScripts.html: Added.
  • http/tests/workers/service/resources/import-cacheable-script-worker.js: Added.
3:54 PM Changeset in webkit [225939] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Network Tab - URL filter should be case-insensitive like filter bars in other tabs
https://bugs.webkit.org/show_bug.cgi?id=180824
<rdar://problem/35910750>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-12-14
Reviewed by Brian Burg.

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype._resetFilters):
(WI.NetworkTableContentView.prototype._urlFilterDidChange):
Use a case-insensitive regex created from the search query
and use that when filtering resources.

(WI.NetworkTableContentView.prototype._checkURLFilterAgainstFinishedResource): Deleted.
(WI.NetworkTableContentView.prototype._checkURLFilterAgainstResource):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
Rename the helper for checking the URL filter.

3:51 PM Changeset in webkit [225938] by Yusuke Suzuki
  • 13 edits in trunk/Source

Drop Thread::tryCreate
https://bugs.webkit.org/show_bug.cgi?id=180808

Reviewed by Darin Adler.

Source/WebCore:

This change reveals that nobody cares the WorkerThread::start's failure.
We should use Thread::create to ensure thread is actually starting.

  • workers/WorkerThread.cpp:

(WebCore::WorkerThread::start):

  • workers/WorkerThread.h:

Source/WebKit:

We still return bool since IconDatabase::open returns false if it is opened twice.

  • UIProcess/API/glib/IconDatabase.cpp:

(WebKit::IconDatabase::open):

  • UIProcess/API/glib/IconDatabase.h:

Source/WebKitLegacy:

  • Storage/StorageThread.cpp:

(WebCore::StorageThread::start):

  • Storage/StorageThread.h:

Source/WTF:

We remove Thread::tryCreate. When thread creation fails, we have no way to keep WebKit working.
Compared to tryMalloc, Thread::create always consumes fixed size of resource. If it fails,
this is not due to arbitrary large user request. It is not reasonable that some thread creations
are handled gracefully while the other thread creations are not.

If we would like to have the limit of number of users' thread creation (like, calling new Worker
so many times), we should have a soft limit instead of relying on system's hard limit.

  • wtf/ParallelJobsGeneric.cpp:

(WTF::ParallelEnvironment::ThreadPrivate::tryLockFor):

  • wtf/Threading.cpp:

(WTF::Thread::create):
(WTF::Thread::tryCreate): Deleted.

  • wtf/Threading.h:

(WTF::Thread::create): Deleted.

3:26 PM Changeset in webkit [225937] by ap@apple.com
  • 7 edits in trunk/Tools

Improve leaks detector output
https://bugs.webkit.org/show_bug.cgi?id=180828

Reviewed by Joseph Pecoraro.

Fixing two issues:

  1. run-leaks omits many lines from leaks tool output, making it incompatible with

other tools. Notably, symbolication cannot be performed.

  1. run-leaks output goes to "run-webkit-tests --debug-rwt-logging" output. This

makes it much longer than needed, sometimes even overloading buildbot. We don't
need full output in test log, as separate files are created for each of these.

  • Scripts/run-leaks: Represent each line in leaks output when parsing, and print

everything except for explicitly excluded leaks. From my testing and reading
the code, it looks like none of our tools should be broken by this change.

  • Scripts/webkitpy/port/leakdetector.py: I couldn't find a way to run a helper tool

without dumping all of its output to debug log, so switched to using a file for leaks.

  • Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl:
  • Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-new.pl:
  • Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-old.pl:
  • Scripts/webkitpy/port/leakdetector_unittest.py:

Updated tests for new behavior.

3:13 PM Changeset in webkit [225936] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[MSE] Add isValid() check before using trackBuffer.lastEnqueuedPresentationTime
https://bugs.webkit.org/show_bug.cgi?id=180258

Patch by Alicia Boya García <aboya@igalia.com> on 2017-12-14
Reviewed by Jer Noble.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

2:57 PM Changeset in webkit [225935] by beidson@apple.com
  • 15 edits in trunk

REGRESSION (r225789): API tests WKProcessPool.InitialWarmedProcessUsed and WebKit.WebsiteDataStoreCustomPaths are failing.
https://bugs.webkit.org/show_bug.cgi?id=180722

Reviewed by Chris Dumez.

Source/WebKit:

  • Add a test-only accessor to get the number of WebProcesses hosting WebPages
  • Have WebsiteDataStore keep track of all instances so they can be looked up by SessionID
  • When the StorageProcess needs to establish a SW context connection on behalf of a specific SessionID, the UI process will now prefer using the WebsiteDataStore associated with that SessionID. This allows us to continue deferring creation of the default data store if it's not needed.
  • StorageProcess/StorageProcess.cpp:

(WebKit::StorageProcess::connectionToContextProcessWasClosed):
(WebKit::StorageProcess::createServerToContextConnection):

  • StorageProcess/StorageProcess.h:
  • StorageProcess/StorageToWebProcessConnection.cpp:

(WebKit::StorageToWebProcessConnection::establishSWServerConnection):

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _webPageContentProcessCount]):

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/Storage/StorageProcessProxy.cpp:

(WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcess):
(WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcessForExplicitSession):

  • UIProcess/Storage/StorageProcessProxy.h:
  • UIProcess/Storage/StorageProcessProxy.messages.in:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::WebsiteDataStore::~WebsiteDataStore):
(WebKit::WebsiteDataStore::existingDataStoreForSessionID):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/InitialWarmedProcessUsed.mm:

(TEST):

2:39 PM Changeset in webkit [225934] by wilander@apple.com
  • 36 edits in trunk

Storage Access API: Implement frame-specific access in the document.cookie layer
https://bugs.webkit.org/show_bug.cgi?id=180682
<rdar://problem/35982257>

Reviewed by Alex Christensen.

Source/WebCore:

No new tests. Changed expected result from existing test.

CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
CookiesStrategy::cookieRequestHeaderFieldValue(), and
CookiesStrategy::getRawCookies() now take optional parameters for
frameID and pageID to allow frame-specific scoping of cookies.

This change makes the return values of FrameLoaderClient::frameID()
and FrameLoaderClient::pageID() std::optional<uint64_t> so that
WebCore can call those getters and get the right return values in
WebKit and std:nullopt in WebKitLegacy.

  • dom/Document.cpp:

(WebCore::Document::requestStorageAccess):

  • loader/CookieJar.cpp:

(WebCore::cookies):
(WebCore::setCookies):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::getRawCookies):

  • loader/EmptyFrameLoaderClient.h:
  • loader/FrameLoaderClient.h:
  • platform/CookiesStrategy.h:
  • platform/network/CacheValidation.cpp:

(WebCore::headerValueForVary):

  • platform/network/PlatformCookieJar.h:
  • platform/network/cf/CookieJarCFNet.cpp:

(WebCore::setCookiesFromDOM):
(WebCore::cookiesForDOM):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::getRawCookies):

  • platform/network/curl/CookieJarCurl.cpp:

(WebCore::CookieJarCurlFileSystem::setCookiesFromDOM):
(WebCore::CookieJarCurlFileSystem::cookiesForDOM):
(WebCore::CookieJarCurlFileSystem::cookieRequestHeaderFieldValue):
(WebCore::CookieJarCurlFileSystem::getRawCookies):
(WebCore::cookiesForDOM):
(WebCore::setCookiesFromDOM):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::getRawCookies):

  • platform/network/curl/CookieJarCurl.h:
  • platform/network/mac/CookieJarMac.mm:

(WebCore::cookiesInPartitionForURL):
(WebCore::cookiesForURL):
(WebCore::cookiesForSession):
(WebCore::cookiesForDOM):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::setCookiesFromDOM):
(WebCore::getRawCookies):

  • platform/network/soup/CookieJarSoup.cpp:

(WebCore::setCookiesFromDOM):
(WebCore::cookiesForDOM):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::getRawCookies):

Source/WebKit:

CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
CookiesStrategy::cookieRequestHeaderFieldValue(), and
CookiesStrategy::getRawCookies() now take optional parameters for
frameID and pageID to allow frame-specific scoping of cookies.

This change makes the return values of FrameLoaderClient::frameID()
and FrameLoaderClient::pageID() std::optional<uint64_t> so that
WebCore can call those getters and get the right return values in
WebKit and std:nullopt in WebKitLegacy.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
(WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
(WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue):
(WebKit::NetworkConnectionToWebProcess::getRawCookies):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • Shared/mac/CookieStorageShim.mm:

(WebKit::webKitCookieStorageCopyRequestHeaderFieldsForURL):

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoad):

Now handles the fact that FrameLoaderClient::frameID() and
FrameLoaderClient::pageID() return an optional.

  • WebProcess/Storage/WebSWContextManagerConnection.cpp:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::pageID const):
(WebKit::WebFrameLoaderClient::frameID const):

Now return an optional.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::cookiesForDOM):
(WebKit::WebPlatformStrategies::setCookiesFromDOM):
(WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
(WebKit::WebPlatformStrategies::getRawCookies):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Source/WebKitLegacy/mac:

CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
CookiesStrategy::cookieRequestHeaderFieldValue(), and
CookiesStrategy::getRawCookies() now take optional parameters for
frameID and pageID to allow frame-specific scoping of cookies.

This change makes the return values of FrameLoaderClient::frameID()
and FrameLoaderClient::pageID() std::optional<uint64_t> so that
WebCore can call those getters and get the right return values in
WebKit and std:nullopt in WebKitLegacy.

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::pageID const):
(WebFrameLoaderClient::frameID const):

  • WebCoreSupport/WebPlatformStrategies.h:
  • WebCoreSupport/WebPlatformStrategies.mm:

(WebPlatformStrategies::cookiesForDOM):
(WebPlatformStrategies::setCookiesFromDOM):
(WebPlatformStrategies::cookieRequestHeaderFieldValue):
(WebPlatformStrategies::getRawCookies):

Source/WebKitLegacy/win:

CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
CookiesStrategy::cookieRequestHeaderFieldValue(), and
CookiesStrategy::getRawCookies() now take optional parameters for
frameID and pageID to allow frame-specific scoping of cookies.

This change makes the return values of FrameLoaderClient::frameID()
and FrameLoaderClient::pageID() std::optional<uint64_t> so that
WebCore can call those getters and get the right return values in
WebKit and std:nullopt in WebKitLegacy.

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::pageID const):
(WebFrameLoaderClient::frameID const):

Now return an optional.

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebPlatformStrategies.cpp:

(WebPlatformStrategies::cookiesForDOM):
(WebPlatformStrategies::setCookiesFromDOM):
(WebPlatformStrategies::cookieRequestHeaderFieldValue):
(WebPlatformStrategies::getRawCookies):

  • WebCoreSupport/WebPlatformStrategies.h:

LayoutTests:

CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
CookiesStrategy::cookieRequestHeaderFieldValue(), and
CookiesStrategy::getRawCookies() now take optional parameters for
frameID and pageID to allow frame-specific scoping of cookies.

This change makes the return values of FrameLoaderClient::frameID()
and FrameLoaderClient::pageID() std::optional<uint64_t> so that
WebCore can call those getters and get the right return values in
WebKit and std:nullopt in WebKitLegacy.

  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-and-try-access-from-right-frame-expected.txt:

Now expects the correct behavior for document.cookie.

2:28 PM Changeset in webkit [225933] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix assertion in JSObject's structure setting methods
https://bugs.webkit.org/show_bug.cgi?id=180840

Reviewed by Mark Lam.

I forgot that when Typed Arrays have non-indexed properties
added to them, they call the generic code. The generic code
in turn calls the regular structure setting methods. Thus,
these assertions were invalid and we should just avoid setting
the indexing mask if we have a Typed Array.

  • runtime/JSObject.h:

(JSC::JSObject::setButterfly):
(JSC::JSObject::nukeStructureAndSetButterfly):

2:22 PM Changeset in webkit [225932] by jmarcell@apple.com
  • 7 edits in trunk/Source

Versioning.

2:22 PM Changeset in webkit [225931] by achristensen@apple.com
  • 13 edits in trunk

Fix Mac CMake build
https://bugs.webkit.org/show_bug.cgi?id=180835

Reviewed by Andy Estes.

Source/WebCore:

  • PlatformMac.cmake:
  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:

Source/WebKit:

  • PlatformMac.cmake:
  • Shared/WebsiteDataStoreParameters.cpp:

(WebKit::WebsiteDataStoreParameters::ephemeralParametersWithSessionID):

  • Shared/WebsiteDataStoreParameters.h:
  • UIProcess/API/APIAttachment.h:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::setPrivateBrowsingEnabled):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setSessionID):

Tools:

  • DumpRenderTree/mac/DumpRenderTree.mm:
  • MiniBrowser/mac/WK1BrowserWindowController.m:
2:16 PM Changeset in webkit [225930] by msaboff@apple.com
  • 12 edits
    1 add in trunk

REGRESSION (r225695): Repro crash on yahoo login page
https://bugs.webkit.org/show_bug.cgi?id=180761

Reviewed by JF Bastien.

JSTests:

New regression test.

  • stress/regress-180761.js: Added.

Source/JavaScriptCore:

Relanding r225695 with a fix.

The fix is that we need to save the return address for a parentheses in
the ParenContext because it is actually used by any immediately contained
alternatives.

Also did a little refactoring, changing occurances of PatternContext to
ParenContext since that is the name of the structure.

  • runtime/RegExp.cpp:

(JSC::byteCodeCompilePattern):
(JSC::RegExp::byteCodeCompileIfNecessary):
(JSC::RegExp::compile):
(JSC::RegExp::compileMatchOnly):

  • runtime/RegExp.h:
  • runtime/RegExpInlines.h:

(JSC::RegExp::matchInline):

  • testRegExp.cpp:

(parseRegExpLine):
(runFromFiles):

  • yarr/Yarr.h:
  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::ByteCompiler::compile):
(JSC::Yarr::ByteCompiler::dumpDisjunction):

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::ParenContextSizes::ParenContextSizes):
(JSC::Yarr::YarrGenerator::ParenContextSizes::numSubpatterns):
(JSC::Yarr::YarrGenerator::ParenContextSizes::frameSlots):
(JSC::Yarr::YarrGenerator::ParenContext::sizeFor):
(JSC::Yarr::YarrGenerator::ParenContext::nextOffset):
(JSC::Yarr::YarrGenerator::ParenContext::beginOffset):
(JSC::Yarr::YarrGenerator::ParenContext::matchAmountOffset):
(JSC::Yarr::YarrGenerator::ParenContext::returnAddressOffset):
(JSC::Yarr::YarrGenerator::ParenContext::subpatternOffset):
(JSC::Yarr::YarrGenerator::ParenContext::savedFrameOffset):
(JSC::Yarr::YarrGenerator::initParenContextFreeList):
(JSC::Yarr::YarrGenerator::allocateParenContext):
(JSC::Yarr::YarrGenerator::freeParenContext):
(JSC::Yarr::YarrGenerator::saveParenContext):
(JSC::Yarr::YarrGenerator::restoreParenContext):
(JSC::Yarr::YarrGenerator::tryReadUnicodeCharImpl):
(JSC::Yarr::YarrGenerator::storeToFrame):
(JSC::Yarr::YarrGenerator::generateJITFailReturn):
(JSC::Yarr::YarrGenerator::clearMatches):
(JSC::Yarr::YarrGenerator::generate):
(JSC::Yarr::YarrGenerator::backtrack):
(JSC::Yarr::YarrGenerator::opCompileParenthesesSubpattern):
(JSC::Yarr::YarrGenerator::generateEnter):
(JSC::Yarr::YarrGenerator::generateReturn):
(JSC::Yarr::YarrGenerator::YarrGenerator):
(JSC::Yarr::YarrGenerator::compile):

  • yarr/YarrJIT.h:

(JSC::Yarr::YarrCodeBlock::execute):

  • yarr/YarrPattern.cpp:

(JSC::Yarr::indentForNestingLevel):
(JSC::Yarr::dumpUChar32):
(JSC::Yarr::dumpCharacterClass):
(JSC::Yarr::PatternTerm::dump):
(JSC::Yarr::YarrPattern::dumpPattern):

  • yarr/YarrPattern.h:

(JSC::Yarr::PatternTerm::containsAnyCaptures):
(JSC::Yarr::BackTrackInfoParenthesesOnce::returnAddressIndex):
(JSC::Yarr::BackTrackInfoParentheses::beginIndex):
(JSC::Yarr::BackTrackInfoParentheses::returnAddressIndex):
(JSC::Yarr::BackTrackInfoParentheses::matchAmountIndex):
(JSC::Yarr::BackTrackInfoParentheses::parenContextHeadIndex):
(JSC::Yarr::BackTrackInfoAlternative::offsetIndex): Deleted.

2:15 PM Changeset in webkit [225929] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

[Web Animations] Use is<> when possible
https://bugs.webkit.org/show_bug.cgi?id=180832

Reviewed by Dean Jackson.

Adopt is<> when possible.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::setEffect):
(WebCore::WebAnimation::setTimeline):
(WebCore::WebAnimation::startOrStopAccelerated):

2:13 PM Changeset in webkit [225928] by graouts@webkit.org
  • 5 edits in trunk

[Web Animations] Bring timeline and currentTime setters closer to compliance
https://bugs.webkit.org/show_bug.cgi?id=180834

Reviewed by Dean Jackson.

Source/WebCore:

Now that we've added support for the concept of a hold time, pending tasks
and updating the finished state, adopt those in places we had already implemented
but weren't fully compliant.

Web Platform Tests cover these behaviors, but we're currently failing those tests
due to lacking an implementation for Element.animate().

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::setTimeline): Add some spec comments to clarify the code behavior
and implement step 4 of the "setting the timeline" procedure where we reset the hold time
to an unresolved value if the start time is resolved, as well as step 5 where we update the
finished state. Finally, we also ensure we update the pending tasks as the ready state is
dependent on a timeline being set.
(WebCore::WebAnimation::bindingsStartTime const): Invert the way we test for an unresolved
value to match prior review comments by Dean Jackson.
(WebCore::WebAnimation::setBindingsStartTime): Use a boolean check rather than checking
equality with std::nullopt.
(WebCore::WebAnimation::setBindingsCurrentTime): Do not raise an exception when setting
an unresolved time.

LayoutTests:

Remove a test clause which tested a behavior that is not part of the spec.

  • http/wpt/wk-web-animations/timing-model/animation-current-time.html:
2:12 PM Changeset in webkit [225927] by graouts@webkit.org
  • 6 edits in trunk

[Web Animations] Implement the cancel() method on Animation
https://bugs.webkit.org/show_bug.cgi?id=180830
<rdar://problem/36055816>

Reviewed by Dean Jackson.

Source/WebCore:

We implement the cancel() method on the Animation interface with full spec text defining
the normative behavior of those methods and code matching those steps. Implementing the
cancel() method required implementing the notion of "resetting pending tasks",
which the Web Animations spec defines as well.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::setEffect):
(WebCore::WebAnimation::cancel):
(WebCore::WebAnimation::resetPendingTasks):

  • animation/WebAnimation.h:
  • animation/WebAnimation.idl:

LayoutTests:

Rebase some WPT expectations with progressions due to exposing the cancel() method.

  • http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:
2:08 PM Changeset in webkit [225926] by achristensen@apple.com
  • 43 edits in trunk/Source/WebKit

Use move semantics for SandboxExtension::Handle
https://bugs.webkit.org/show_bug.cgi?id=180792

Reviewed by Andy Estes.

Passing them around as const SandboxExtension::Handle& is wrong because ownership is transferred and they are consumed.
It only works now because their contents are mutable, which isn't a good use of mutable.

  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::decideDestinationWithSuggestedFilename):
(WebKit::Download::didDecideDownloadDestination):

  • NetworkProcess/Downloads/Download.h:
  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::continueDecidePendingDownloadDestination):
(WebKit::DownloadManager::resumeDownload):

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:

(WebKit::Download::resume):

  • NetworkProcess/Downloads/ios/DownloadIOS.mm:

(WebKit::Download::resume):

  • NetworkProcess/Downloads/mac/DownloadMac.mm:

(WebKit::Download::resume):

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::registerFileBlobURL):
(WebKit::NetworkConnectionToWebProcess::preregisterSandboxExtensionsForOptionallyFileBackedBlob):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkDataTask.h:

(WebKit::NetworkDataTask::setPendingDownloadLocation):

  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::setPendingDownloadLocation):

  • NetworkProcess/NetworkDataTaskBlob.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::resumeDownload):
(WebKit::NetworkProcess::continueDecidePendingDownloadDestination):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkResourceLoadParameters.cpp:

(WebKit::NetworkResourceLoadParameters::decode):

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::setPendingDownloadLocation):

  • Shared/SandboxExtension.h:

(WebKit::SandboxExtension::create):

  • Shared/WebMemorySampler.cpp:

(WebKit::WebMemorySampler::start):
(WebKit::WebMemorySampler::initializeSandboxedLogFile):

  • Shared/WebMemorySampler.h:
  • Shared/mac/SandboxExtensionMac.mm:

(WebKit::SandboxExtension::create):

  • StorageProcess/StorageProcess.cpp:

(WebKit::StorageProcess::grantSandboxExtensionsForBlobs):

  • StorageProcess/StorageProcess.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::performDragOperation):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::dragEntered):
(WebKit::WebPageProxy::dragUpdated):
(WebKit::WebPageProxy::dragExited):
(WebKit::WebPageProxy::performDragOperation):
(WebKit::WebPageProxy::performDragControllerAction):

  • UIProcess/WebPageProxy.h:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::create):

  • WebProcess/InjectedBundle/InjectedBundle.h:
  • WebProcess/MediaStream/MediaDeviceSandboxExtensions.cpp:

(WebKit::MediaDeviceSandboxExtensions::operator[]):
(WebKit::MediaDeviceSandboxExtensions::operator[] const): Deleted.

  • WebProcess/MediaStream/MediaDeviceSandboxExtensions.h:
  • WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:

(WebKit::UserMediaPermissionRequestManager::grantUserMediaDeviceSandboxExtensions):

  • WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::getPathnamesForType):

  • WebProcess/WebPage/WebBackForwardListProxy.cpp:

(WebKit::WebBackForwardListProxy::goToItem):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadRequest):
(WebKit::WebPage::reload):
(WebKit::WebPage::performDragControllerAction):
(WebKit::WebPage::grantUserMediaDeviceSandboxExtensions):
(WebKit::WebPage::SandboxExtensionTracker::beginLoad):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::startMemorySampler):

  • WebProcess/WebProcess.h:
2:07 PM Changeset in webkit [225925] by achristensen@apple.com
  • 8 edits
    1 add in trunk/Source/WebKit

Make WebsitePolicies a proper class with getters and setters
https://bugs.webkit.org/show_bug.cgi?id=180788

Reviewed by Andy Estes.

Also introduce WebsitePolicies::applyToDocumentLoader to reduce duplicate code.
This has a side-effect of now applying custom http header fields and content blocking enabled status
when updating WebsitePolicies. This will result in these being applied when a user updates
the per-site settings, and they weren't before.

  • CMakeLists.txt:
  • Shared/WebsitePolicies.cpp: Added.

(WebKit::WebsitePolicies::WebsitePolicies):
(WebKit::WebsitePolicies::encode const):
(WebKit::WebsitePolicies::decode):
(WebKit::WebsitePolicies::applyToDocumentLoader):

  • Shared/WebsitePolicies.h:

(WebKit::WebsitePolicies::contentBlockersEnabled const):
(WebKit::WebsitePolicies::setContentBlockersEnabled):
(WebKit::WebsitePolicies::allowedAutoplayQuirks const):
(WebKit::WebsitePolicies::setAllowedAutoplayQuirks):
(WebKit::WebsitePolicies::autoplayPolicy const):
(WebKit::WebsitePolicies::setAutoplayPolicy):
(WebKit::WebsitePolicies::customHeaderFields):
(WebKit::WebsitePolicies::takeCustomHeaderFields):
(WebKit::WebsitePolicies::setCustomHeaderFields):
(WebKit::WebsitePolicies::encode const): Deleted.
(WebKit::WebsitePolicies::decode): Deleted.

  • UIProcess/API/APIWebsitePolicies.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::applyToDocumentLoader):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updateWebsitePolicies):

  • WebProcess/WebPage/WebPage.h:
1:57 PM Changeset in webkit [225924] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Enable Service Workers on iOS
https://bugs.webkit.org/show_bug.cgi?id=180836

Reviewed by Alex Christensen.

  • Shared/WebPreferencesDefaultValues.h:
  • UIProcess/WebProcessPool.cpp:

Enable Service Workers on iOS.

(WebKit::WebProcessPool::ensureNetworkProcess):
Fall back to defaultCacheStorageDirectory() instead of the empty string
for the cache storage directory, when we do not have a store.

12:50 PM Changeset in webkit [225923] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

"Click to exit fullscreen" text not legible on High Sierra
https://bugs.webkit.org/show_bug.cgi?id=180825
<rdar://problem/32839983>

Reviewed by Eric Carlson.

Explicitly set the NSVisualAffectView's .appearance property.

  • platform/mac/WebCoreFullScreenPlaceholderView.mm:

(-[WebCoreFullScreenPlaceholderView initWithFrame:]):

12:33 PM Changeset in webkit [225922] by jmarcell@apple.com
  • 4 edits in tags/Safari-605.1.18/Source/bmalloc

Revert r225701. rdar://problem/35262662

12:16 PM Changeset in webkit [225921] by Chris Dumez
  • 3 edits in trunk/LayoutTests/imported/w3c

Re-sync service-workers/service-worker/interfaces-sw.https.html from upstream
https://bugs.webkit.org/show_bug.cgi?id=180814

Reviewed by Youenn Fablet.

Re-sync service-workers/service-worker/interfaces-sw.https.html WPT from upstream after
https://github.com/w3c/web-platform-tests/pull/8669.

  • web-platform-tests/service-workers/service-worker/interfaces-sw.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js:
12:13 PM Changeset in webkit [225920] by jmarcell@apple.com
  • 4 edits in tags/Safari-605.1.17.2/Source/bmalloc

Revert r225701. rdar://problem/35262662

12:11 PM Changeset in webkit [225919] by jmarcell@apple.com
  • 7 edits in tags/Safari-605.1.17.2/Source

Versioning.

12:09 PM Changeset in webkit [225918] by jmarcell@apple.com
  • 1 copy in tags/Safari-605.1.17.2

New tag.

12:08 PM Changeset in webkit [225917] by graouts@webkit.org
  • 7 edits
    2 deletes in trunk

[Web Animations] Implement the finish() method on Animation
https://bugs.webkit.org/show_bug.cgi?id=180822
<rdar://problem/36053282>

Reviewed by Dean Jackson.

Source/WebCore:

We implement the finish() method on the Animation interface with full spec text defining
the normative behavior of those methods and code matching those steps. Implementing the
finish() method required implementing the notion of "silently setting the current time",
which the Web Animations spec defines as well.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::silentlySetCurrentTime):
(WebCore::WebAnimation::setCurrentTime):
(WebCore::WebAnimation::finish):

  • animation/WebAnimation.h:
  • animation/WebAnimation.idl:

LayoutTests:

Rebase some WPT expectations with progressions due to exposing the finish() method.
We're also removing a WebKit-only test that is no longer relevant and started failing
with compliant behavior.

  • http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:
  • http/wpt/web-animations/timing-model/animations/set-the-timeline-of-an-animation-expected.txt:
  • http/wpt/wk-web-animations/timing-model/animation-playback-rate-expected.txt: Removed.
  • http/wpt/wk-web-animations/timing-model/animation-playback-rate.html: Removed.
11:55 AM Changeset in webkit [225916] by Chris Dumez
  • 20 edits
    5 adds in trunk

Service worker script fetching currently always uses the network cache
https://bugs.webkit.org/show_bug.cgi?id=180816

Reviewed by Alex Christensen.

Source/WebCore:

Service worker script fetching currently always uses the network cache. This is incorrect as per:

Tests: http/tests/workers/service/registration-updateViaCache-all.html

http/tests/workers/service/registration-updateViaCache-none.html

  • workers/Worker.cpp:

(WebCore::Worker::create):

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::loadAsynchronously):

  • workers/WorkerScriptLoader.h:
  • workers/service/SWClientConnection.cpp:

(WebCore::SWClientConnection::startScriptFetchForServer):

  • workers/service/SWClientConnection.h:
  • workers/service/ServiceWorkerContainer.cpp:

(WebCore::ServiceWorkerContainer::startScriptFetchForJob):

  • workers/service/ServiceWorkerContainer.h:
  • workers/service/ServiceWorkerJob.cpp:

(WebCore::ServiceWorkerJob::startScriptFetch):
(WebCore::ServiceWorkerJob::fetchScriptWithContext):

  • workers/service/ServiceWorkerJob.h:
  • workers/service/ServiceWorkerJobClient.h:
  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::startScriptFetch):

  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerJobQueue.cpp:

(WebCore::SWServerJobQueue::runUpdateJob):

  • workers/service/server/SWServerRegistration.h:

(WebCore::SWServerRegistration::lastUpdateTime const):

Source/WebKit:

  • StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::startScriptFetchInClient):

  • StorageProcess/ServiceWorker/WebSWServerConnection.h:
  • WebProcess/Storage/WebSWClientConnection.messages.in:

LayoutTests:

Add layout test coverage.

  • http/tests/workers/service/registration-updateViaCache-all-expected.txt: Added.
  • http/tests/workers/service/registration-updateViaCache-all.html: Added.
  • http/tests/workers/service/registration-updateViaCache-none-expected.txt: Added.
  • http/tests/workers/service/registration-updateViaCache-none.html: Added.
  • http/tests/workers/service/resources/cacheable-script-worker.php: Added.
11:33 AM Changeset in webkit [225915] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Remove ColorSpaceDeviceRGB and most users of the obsolete deviceRGB colorspace
https://bugs.webkit.org/show_bug.cgi?id=180689

Reviewed by Darin Adler.

Address issues noted by Darin in r225797:

Existing and new code mistakenly allocated colorspaces on every call, because
they didn't initialize the static variable on the first call. Avoid this mistake
by using dispatch_once() in these functions.

Fix a case where the extendedSRGBColorSpaceRef() fallback was returning deviceRGB
instead of sRGB.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::sRGBColorSpaceRef):
(WebCore::linearRGBColorSpaceRef):
(WebCore::extendedSRGBColorSpaceRef):
(WebCore::displayP3ColorSpaceRef):

  • platform/graphics/cocoa/GraphicsContextCocoa.mm:

(WebCore::linearRGBColorSpaceRef):

11:13 AM Changeset in webkit [225914] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

StorageProcess::deleteWebsiteData() should ensure there is a SWServer for the given sessionID
https://bugs.webkit.org/show_bug.cgi?id=180784

Reviewed by Youenn Fablet.

StorageProcess::deleteWebsiteData() should ensure there is a SWServer for the given sessionID
instead of not clearing anything when no such SWServer exists.

This will be useful on iOS once <rdar://problem/36034667> is fully fixed.

  • StorageProcess/StorageProcess.cpp:

(WebKit::StorageProcess::deleteWebsiteData):
(WebKit::StorageProcess::deleteWebsiteDataForOrigins):

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):

11:11 AM Changeset in webkit [225913] by keith_miller@apple.com
  • 40 edits
    1 add in trunk

JSObjects should have a mask for loading indexed properties
https://bugs.webkit.org/show_bug.cgi?id=180768

Reviewed by Mark Lam.

JSTests:

  • stress/int16-put-by-val-in-and-out-of-bounds.js:

(test):

Source/JavaScriptCore:

This patch adds a new member to JSObject that holds an indexing
mask. The indexing mask is bitwise anded with the index used to
load a property. If for whatever reason an attacker is able to
clobber the vectorLength of our butterfly they still won't be able
to read substantially past the end of the buttefly. For
performance reasons we don't use the indexing masking for
TypedArrays. Since TypedArrays are already gigacaged the risk of
wild reads is still restricted.

This patch is a <1% regression on Speedometer and ~3% regression
on JetStream in my testing.

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::urshiftPtr):

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateImpl):

  • dfg/DFGAbstractHeap.h:
  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::emitAllocateRawObject):
(JSC::DFG::SpeculativeJIT::compileDoublePutByVal):
(JSC::DFG::SpeculativeJIT::compileNewFunctionCommon):
(JSC::DFG::SpeculativeJIT::compileCreateActivation):
(JSC::DFG::SpeculativeJIT::compileCreateDirectArguments):
(JSC::DFG::SpeculativeJIT::compileArraySlice):
(JSC::DFG::SpeculativeJIT::compileNukeStructureAndSetButterfly):
(JSC::DFG::SpeculativeJIT::compileNewStringObject):
(JSC::DFG::SpeculativeJIT::compileNewTypedArray):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::emitAllocateJSObject):
(JSC::DFG::SpeculativeJIT::emitAllocateJSObjectWithKnownSize):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize):

  • ftl/FTLAbstractHeap.cpp:

(JSC::FTL::IndexedAbstractHeap::baseIndex):

  • ftl/FTLAbstractHeap.h:
  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileAtomicsReadModifyWrite):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateDirectArguments):
(JSC::FTL::DFG::LowerDFGToB3::compileNewStringObject):
(JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::maskedIndex):
(JSC::FTL::DFG::LowerDFGToB3::computeButterflyIndexingMask):
(JSC::FTL::DFG::LowerDFGToB3::allocateObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateJSArray):
(JSC::FTL::DFG::LowerDFGToB3::pointerIntoTypedArray):

  • ftl/FTLOutput.h:

(JSC::FTL::Output::baseIndex):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::emitComputeButterflyIndexingMask):
(JSC::AssemblyHelpers::nukeStructureAndStoreButterfly):
(JSC::AssemblyHelpers::emitAllocateJSObject):
(JSC::AssemblyHelpers::emitAllocateJSObjectWithKnownSize):
(JSC::AssemblyHelpers::emitAllocateVariableSizedJSObject):
(JSC::AssemblyHelpers::emitAllocateDestructibleObject):
(JSC::AssemblyHelpers::storeButterfly): Deleted.

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_new_object):
(JSC::JIT::emit_op_create_this):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_new_object):
(JSC::JIT::emit_op_create_this):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitDoubleLoad):
(JSC::JIT::emitContiguousLoad):
(JSC::JIT::emitArrayStorageLoad):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/ArrayStorage.h:

(JSC::ArrayStorage::availableVectorLength):

  • runtime/Butterfly.h:

(JSC::ContiguousData::ContiguousData):
(JSC::ContiguousData::at const):
(JSC::ContiguousData::at):
(JSC::Butterfly::publicLength const):
(JSC::Butterfly::vectorLength const):
(JSC::Butterfly::computeIndexingMaskForVectorLength):
(JSC::Butterfly::computeIndexingMask):
(JSC::Butterfly::contiguousInt32):
(JSC::ContiguousData::operator[] const): Deleted.
(JSC::ContiguousData::operator[]): Deleted.
(JSC::Butterfly::publicLength): Deleted.
(JSC::Butterfly::vectorLength): Deleted.

  • runtime/ButterflyInlines.h:

(JSC::ContiguousData<T>::at const):
(JSC::ContiguousData<T>::at):

  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::createEmpty):

  • runtime/JSArray.cpp:

(JSC::JSArray::tryCreateUninitializedRestricted):
(JSC::JSArray::appendMemcpy):
(JSC::JSArray::setLength):
(JSC::JSArray::pop):
(JSC::JSArray::fastSlice):
(JSC::JSArray::shiftCountWithArrayStorage):
(JSC::JSArray::shiftCountWithAnyIndexingType):
(JSC::JSArray::unshiftCountWithAnyIndexingType):
(JSC::JSArray::fillArgList):
(JSC::JSArray::copyToArguments):

  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::JSArrayBufferView):

  • runtime/JSArrayInlines.h:

(JSC::JSArray::pushInline):

  • runtime/JSFixedArray.h:

(JSC::JSFixedArray::createFromArray):

  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::slowDownAndWasteMemory):

  • runtime/JSObject.cpp:

(JSC::JSObject::getOwnPropertySlotByIndex):
(JSC::JSObject::putByIndex):
(JSC::JSObject::createInitialInt32):
(JSC::JSObject::createInitialDouble):
(JSC::JSObject::createInitialContiguous):
(JSC::JSObject::convertUndecidedToInt32):
(JSC::JSObject::convertUndecidedToDouble):
(JSC::JSObject::convertUndecidedToContiguous):
(JSC::JSObject::convertInt32ToDouble):
(JSC::JSObject::convertInt32ToArrayStorage):
(JSC::JSObject::convertDoubleToContiguous):
(JSC::JSObject::convertDoubleToArrayStorage):
(JSC::JSObject::convertContiguousToArrayStorage):
(JSC::JSObject::createInitialForValueAndSet):
(JSC::JSObject::deletePropertyByIndex):
(JSC::JSObject::getOwnPropertyNames):
(JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes):
(JSC::JSObject::countElements):
(JSC::JSObject::ensureLengthSlow):
(JSC::JSObject::reallocateAndShrinkButterfly):
(JSC::JSObject::getEnumerableLength):

  • runtime/JSObject.h:

(JSC::JSObject::canGetIndexQuickly):
(JSC::JSObject::getIndexQuickly):
(JSC::JSObject::tryGetIndexQuickly const):
(JSC::JSObject::setIndexQuickly):
(JSC::JSObject::initializeIndex):
(JSC::JSObject::initializeIndexWithoutBarrier):
(JSC::JSObject::butterflyIndexingMaskOffset):
(JSC::JSObject::butterflyIndexingMask const):
(JSC::JSObject::setButterflyWithIndexingMask):
(JSC::JSObject::setButterfly):
(JSC::JSObject::nukeStructureAndSetButterfly):
(JSC::JSObject::JSObject):

  • runtime/RegExpMatchesArray.h:

(JSC::tryCreateUninitializedRegExpMatchesArray):

  • runtime/Structure.cpp:

(JSC::Structure::flattenDictionaryStructure):

Source/WebCore:

  • bindings/js/JSDOMConvertSequences.h:

(WebCore::Detail::NumericSequenceConverter::convertArray):
(WebCore::Detail::SequenceConverter::convertArray):

Source/WTF:

Add a clz that wraps the builtin clz intrinisics provided by
various compilers. The clz function by default assumes that
the input may be zero. On X86 this makes a difference because not
all CPUs have LZCNT and BSR has undefined behavior on zero. On ARM,
the zero check gets optimized away, regardless.

  • wtf/StdLibExtras.h:

(std::clz):

11:10 AM Changeset in webkit [225912] by sbarati@apple.com
  • 2 edits in trunk/Source/bmalloc

logVMFailure should not simulate crash on iOS
https://bugs.webkit.org/show_bug.cgi?id=180790

Reviewed by JF Bastien.

The Gigacage allocation on iOS is expected to fail in certain circumstances.
Let's not simulate a crash on failure because since this is expected behavior.

  • bmalloc/VMAllocate.h:

(bmalloc::tryVMAllocate):

11:08 AM Changeset in webkit [225911] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

WebsiteDataStore::defaultDataStoreConfiguration() fails to set default value for serviceWorkerRegistrationDirectory
https://bugs.webkit.org/show_bug.cgi?id=180794
<rdar://problem/36034667>

Reviewed by Youenn Fablet.

Set the default IndexedDB and ServiceWorker database paths in WebsiteDataStore::defaultDataStoreConfiguration().
Without this, the client is forced to set the expected path.

  • UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:

(API::WebsiteDataStore::defaultDataStoreConfiguration):

  • UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:

(API::WebsiteDataStore::defaultDataStoreConfiguration):

10:31 AM Changeset in webkit [225910] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Updated test expectations for imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html.
https://bugs.webkit.org/show_bug.cgi?id=177322

Unreviewed test gardening.

  • platform/mac/TestExpectations:
9:39 AM Changeset in webkit [225909] by graouts@webkit.org
  • 12 edits in trunk

[Web Animations] Implement the play() and pause() methods on Animation
https://bugs.webkit.org/show_bug.cgi?id=178932
<rdar://problem/35271069>

Reviewed by Eric Carlson.

Source/WebCore:

We implement the play() and pause() methods of the Animation interface with full spec text defining
the normative behavior of those methods and code matching those steps. Playing and pausing animations
incur running a play or pause task when conditions are met, specifically here when the timeline is ready.
So we add the notion of pending tasks and provide a proper implementation of pending() which we had
introduced in an earlier patch with a constant false return value.

Note that the play() method exposes an auto-rewinding flag which we always set to true, but other specs,
namely CSS Animations, do not require the rewinding behavior, so we expose it for future use.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::play):
(WebCore::WebAnimation::setTimeToRunPendingPlayTask):
(WebCore::WebAnimation::runPendingPlayTask):
(WebCore::WebAnimation::pause):
(WebCore::WebAnimation::setTimeToRunPendingPauseTask):
(WebCore::WebAnimation::runPendingPauseTask):
(WebCore::WebAnimation::updatePendingTasks):

  • animation/WebAnimation.h:
  • animation/WebAnimation.idl:

LayoutTests:

Rebase some WPT expectations with progressions due to exposing the play() and pause() methods.

  • TestExpectations: Temporarily mark a test as flaky as it logs an unexpected current time which

may change between runs.

  • http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/startTime-expected.txt:
  • http/wpt/web-animations/interfaces/KeyframeEffect/setTarget-expected.txt:
  • http/wpt/web-animations/timing-model/animations/current-time-expected.txt:
  • http/wpt/web-animations/timing-model/animations/set-the-target-effect-of-an-animation-expected.txt:
  • http/wpt/web-animations/timing-model/animations/set-the-timeline-of-an-animation-expected.txt:
9:09 AM Changeset in webkit [225908] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: UncaughtExceptionReporter fails on early errors
https://bugs.webkit.org/show_bug.cgi?id=180776

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-12-14
Reviewed by Brian Burg.

  • UserInterface/Debug/UncaughtExceptionReporter.js:

(urlLastPathComponent):
(handleError):
(handleUncaughtException):
URLUtilities parseURL might not be available, so have a small
helper for getting a good name from a URL / filename.

(handleUncaughtExceptionRecord):
(dismissErrorSheet):
Wrap WI namespace accesses in a try/catch since WI might not be available.
Safely check global variables there were Foo as window.Foo to avoid errors
if they are not actually available.

9:08 AM Changeset in webkit [225907] by commit-queue@webkit.org
  • 5 edits
    1 copy
    1 move
    1 delete in trunk/Source/WebKit

Web Inspector: Cmd-Option-R in docked inspector causes the inspector to reload instead of the inspected page
https://bugs.webkit.org/show_bug.cgi?id=180775
<rdar://problem/35964592>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-12-14
Reviewed by Brian Burg.

  • WebKit.xcodeproj/project.pbxproj:

Remove old files add new files.

  • PlatformMac.cmake:
  • UIProcess/mac/WKWebInspectorWKWebView.h: Removed.
  • UIProcess/mac/WKWebInspectorWKWebView.mm: Removed.

Remove unused WKWebInspectorWKWebView.

  • UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:
  • UIProcess/mac/WKInspectorViewController.mm:

(-[WKInspectorViewController dealloc]):
(-[WKInspectorViewController webView]):
(-[WKInspectorViewController inspectorWKWebViewReload:]):
(-[WKInspectorViewController inspectorWKWebViewReloadFromOrigin:]):
Handle WKWebView IBActions sent to the inspector frontend WKWebView.

  • UIProcess/mac/WKInspectorWKWebView.h:
  • UIProcess/mac/WKInspectorWKWebView.mm:

(-[WKInspectorWKWebView tag]):
(-[WKInspectorWKWebView inspectorWKWebViewDelegate]):
(-[WKInspectorWKWebView setInspectorWKWebViewDelegate:]):
(-[WKInspectorWKWebView reload:]):
(-[WKInspectorWKWebView reloadFromOrigin:]):
Move WKInspectorWKWebView into its own file. Include a delegate
to handle reload IBActions that will want to override.

9:04 AM Changeset in webkit [225906] by romain.bellessort@crf.canon.fr
  • 7 edits in trunk/LayoutTests

[Readable Streams API] Remove properties tests covered by WPT
https://bugs.webkit.org/show_bug.cgi?id=180809

Reviewed by Youenn Fablet.

Removed WebKit properties/methods tests for ReadableByteStreamController,
ReadableStreamBYOBReader and ReadableStreamBYOBRequest. Indeed, these
tests are also present in WPT streams/readable-byte-streams/properties.js.

  • streams/readable-byte-stream-controller-expected.txt: Updated expectations.
  • streams/readable-byte-stream-controller.js: Remove ReadableByteStreamController properties test.
  • streams/readable-stream-byob-reader-expected.txt: Updated expectations.
  • streams/readable-stream-byob-reader.js: Remove ReadableStreamBYOBReader properties test.
  • streams/readable-stream-byob-request-expected.txt: Updated expectations.
  • streams/readable-stream-byob-request.js: Remove ReadableStreamBYOBRequest properties test.
9:03 AM Changeset in webkit [225905] by ddkilzer@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION (r225799/r225887): Remove duplicate entries for JSCPoisonedPtr.h in Xcode project

Fixes the following warning during builds:

Warning: Multiple build commands for output file WebKitBuild/Release/JavaScriptCore.framework/Versions/A/PrivateHeaders/JSCPoisonedPtr.h

entries for JSCPoisonedPtr.h.

8:13 AM Changeset in webkit [225904] by Jonathan Bedard
  • 2 edits in trunk/Tools

webkitpy: Better name-version mapping (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=179621
<rdar://problem/35589585>

Unreviewed infrastructure fix.

r225856 caused some undesired logging on Linux and Windows.

  • Scripts/webkitpy/port/mac.py:

(MacPort.init): Use most recent OS release if not on a Mac.
(MacPort.default_baseline_search_path): Make platform explicit.
(MacPort.configuration_specifier_macros): Ditto.

7:36 AM Changeset in webkit [225903] by ddkilzer@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION (r225887): Build broke due to missing includes in InferredValue.h
<https://bugs.webkit.org/show_bug.cgi?id=180738>

  • runtime/InferredValue.h: Attempt to fix build by adding

missing #include statements.

6:37 AM Changeset in webkit [225902] by Carlos Garcia Campos
  • 7 edits
    1 add
    1 delete in trunk

WebDriver: add a common way to run tests with pytest
https://bugs.webkit.org/show_bug.cgi?id=180800

Reviewed by Carlos Alberto Lopez Perez.

Tools:

We currently use pytestrunner from wpt for w3c tests and our own code for selenium tests. Using the same code
for both would simplify everything, but also allows us to have a custom results recorder to support other test
expectations like TIMEOUT. The code to run selenium tests with pytest has been moved to a new file
pytest_runner.py and made generic to be used also for w3c tests.

  • Scripts/webkitpy/webdriver_tests/pytest_runner.py: Added.

(TemporaryDirectory):
(TemporaryDirectory.enter):
(TemporaryDirectory.exit):
(CollectRecorder):
(CollectRecorder.init):
(CollectRecorder.pytest_collectreport):
(HarnessResultRecorder):
(HarnessResultRecorder.init):
(HarnessResultRecorder.pytest_collectreport):
(SubtestResultRecorder):
(SubtestResultRecorder.init):
(SubtestResultRecorder.pytest_runtest_logreport):
(SubtestResultRecorder._was_timeout):
(SubtestResultRecorder.record_pass):
(SubtestResultRecorder.record_fail):
(SubtestResultRecorder.record_error):
(SubtestResultRecorder.record_skip):
(SubtestResultRecorder.record):
(collect):
(run):

  • Scripts/webkitpy/webdriver_tests/webdriver_selenium_executor.py:

(do_delayed_imports): Import pytest_runner here to avoid cycles.
(WebDriverSeleniumExecutor.init): Save the driver parameter as args member and call do_delayed_imports() if
needed.
(WebDriverSeleniumExecutor.collect): Use pytest_runner.
(WebDriverSeleniumExecutor.run): Ditto.

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py:

(WebDriverTestRunner.print_results): Handle all possible tests results.
(WebDriverTestRunner.print_results.report): Helper to dump test results.

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner_selenium.py:

(WebDriverTestRunnerSelenium.run):

  • Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py:

(WebDriverTestRunnerW3C.init): Do not set PYTEST_TIMEOUT env var.
(WebDriverTestRunnerW3C._is_test): Fix check for support files.
(WebDriverTestRunnerW3C.run): Pass the timeout as parameter to WebDriverW3CExecutor.run().

  • Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py:

(do_delayed_imports): Import pytest_runner here to avoid cycles.
(WebDriverW3CExecutor.init): Call do_delayed_imports() if needed.
(WebDriverW3CExecutor.run): Use pytest_runner.

WebDriverTests:

Remove conftest.py since pytest_timeout plugin is now always loaded from the command line.

  • imported/w3c/conftest.py: Removed.
6:08 AM Changeset in webkit [225901] by tpopela@redhat.com
  • 2 edits
    1 add in trunk

Build should fail early is needed Perl modules are not installed
https://bugs.webkit.org/show_bug.cgi?id=180137

Reviewed by Michael Catanzaro.

Don't finish the configure successfully if the required Perl modules
are not installed. Start to require modules that are needed for
WPE/GTK+ ports.

  • Source/cmake/FindPerlModules.cmake: Copied from

https://github.com/KDE/kdelibs4support/blob/master/cmake/FindPerlModules.cmake
and made it WebKit style compliant.

  • Source/cmake/WebKitCommon.cmake:
5:54 AM WebKitGTK/Gardening/Calendar edited by magomez@igalia.com
(diff)
5:53 AM WebKitGTK/Gardening/Calendar edited by magomez@igalia.com
(diff)
5:28 AM Changeset in webkit [225900] by magomez@igalia.com
  • 7 edits in trunk/LayoutTests

[GTK] Gardening bug after r225898
https://bugs.webkit.org/show_bug.cgi?id=180807

Unreviewed GTK+ test gardening after r225898. Updated test expectations and rebaselined
some tests.

  • platform/gtk/TestExpectations:
  • platform/gtk/mathml/opentype/horizontal-expected.png:
  • platform/gtk/mathml/opentype/horizontal-expected.txt:
  • platform/gtk/mathml/opentype/horizontal-munderover-expected.txt:
  • platform/gtk/mathml/presentation/bug159513-expected.png:
  • platform/gtk/mathml/presentation/bug159513-expected.txt:
3:43 AM Changeset in webkit [225899] by commit-queue@webkit.org
  • 6 edits
    11 adds in trunk/LayoutTests

[EME] Add layout test for InitData and InitDataType in CENC encrypted event
https://bugs.webkit.org/show_bug.cgi?id=180430

Patch by Yacine Bandou <yacine.bandou_ext@softathome.com> on 2017-12-14
Reviewed by Xabier Rodriguez-Calvar.

This commit adds new layout tests in order to test the reception of the encrypted CENC
event with an expected initData and initDataType fields.

  • media/content/encrypted/VideoClearKeyCenc.mp4: Added.

This is a simple encrypted video file used for regular playback.
It has been encrypted with BENTO4. https://www.bento4.com/

  • media/content/encrypted/segments/VideoClearKeyCenc-seg-0.mp4: Added.

This is a simple encrypted video fragment used in MSE playback.
It has been fragmented and encrypted with BENTO4. https://www.bento4.com/

  • media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-expected.txt: Added.
  • media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-mse-expected.txt: Added.
  • media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-mse.html: Added.

This is a test with MSE.

  • media/encrypted-media/clearKey/clearKey-encrypted-cenc-event.html: Added.

This is a test with a regular playback.

  • media/encrypted-media/medias-enc.js: Added.

This JavaScrit file lists the encrypted media wich will be used in encrypted-media tests.
It gives all necessary informations about the encrypted media: path of the file or
the path of the segments in MSE case, mimeType, initDataType and the encryption keys.

  • media/media-source/media-source-loader-simple.js: Added.

This JavaScript file provides a simple MSE implementation, reads the segments of the media and appends them
in the appropriate SourceBuffer.

  • platform/gtk/TestExpectations:
  • platform/mac-elcapitan/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/wpe/TestExpectations:
1:49 AM Changeset in webkit [225898] by Dewei Zhu
  • 7 edits
    2 adds in trunk/Websites/perf.webkit.org

Add a test freshness page.
https://bugs.webkit.org/show_bug.cgi?id=180126

Reviewed by Ryosuke Niwa.

Added a page to show freshness of a test.
The test freshness page reports on the same set of tests as the one shown in the summary page.
Use a logistic function to evaluate the freshness of the data points.
This function has the desired property which increase dramatically when it close to the center of the graph.
'acceptableLastDataPointDurationInHour' configs the center of the graph.

  • public/include/manifest-generator.php:
  • public/v3/components/freshness-indicator.js: Added.

(FreshnessIndicator): A cell of the test freshness table, color will transit from green to red.
(FreshnessIndicator.prototype.update): Update the the data point information and triggers
the cell to re-render if anything changes.
(FreshnessIndicator.prototype._renderIndicator): Re-render the indicator.
(FreshnessIndicator.prototype.render): Render the box color base on a logistic function.
(FreshnessIndicator.prototype._createIndicator):
(FreshnessIndicator.htmlTemplate):
(FreshnessIndicator.cssTemplate):

  • public/v3/index.html:
  • public/v3/main.js: Added test freshness page.

(main):

  • public/v3/models/build-request.js: Refactored waitingTime function to make it reusable.

(BuildRequest.formatTimeInterval): Format time interval in million seconds to more user friendly text.
(BuildRequest.prototype.waitingTime):

  • public/v3/pages/test-freshness-page.js: Added.

(TestFreshnessPage):
(TestFreshnessPage.prototype.name):
(TestFreshnessPage.prototype._loadConfig): Load config from summary page configurations.
(TestFreshnessPage.prototype.open):
(TestFreshnessPage.prototype._fetchTestResults):
(TestFreshnessPage.prototype.render):
(TestFreshnessPage.prototype._renderTable):
(TestFreshnessPage.prototype._isValidPlatformMetricCombination): Return whether a platform
and metric combination is valid.
(TestFreshnessPage.prototype._constructTableCell):
(TestFreshnessPage.cssTemplate):
(TestFreshnessPage.prototype.routeName):

  • server-tests/api-manifest-tests.js: Added 'warningHourBaseline' so that we can config the

parameter of logistic funciton.

  • unit-tests/build-request-tests.js: Added unit tests for formatTimeInterval.
1:39 AM Changeset in webkit [225897] by commit-queue@webkit.org
  • 198 edits in trunk

Make GraphicsLayer::dumpProperties dump m_offsetFromRenderer
https://bugs.webkit.org/show_bug.cgi?id=180473

Source/WebCore:

Patch by Frederic Wang <fwang@igalia.com> on 2017-12-14
Reviewed by Antonio Gomes.

No new tests, this is just a new debug info.

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::dumpProperties const): Dump the offset from renderer if nonzero.

LayoutTests:

Update test expectations to include the "offset from renderer" values. Existing tests insert
the output of layerTreeAsText into some divs which may cause the corresponding GraphicsLayers
to become slightly taller. We thus make the necessary adjustments.

Patch by Frederic Wang <fwang@igalia.com> on 2017-12-14
Reviewed by Antonio Gomes.

  • compositing/backing/no-backing-for-clip-expected.txt:
  • compositing/backing/no-backing-for-clip-overlap-expected.txt:
  • compositing/backing/transform-transition-from-outside-view-expected.txt:
  • compositing/bounds-in-flipped-writing-mode-expected.txt:
  • compositing/columns/composited-in-paginated-rl-expected.txt:
  • compositing/columns/composited-lr-paginated-repaint-expected.txt:
  • compositing/columns/composited-rl-paginated-repaint-expected.txt:
  • compositing/contents-format/subpixel-antialiased-nested-layer-expected.txt:
  • compositing/contents-format/subpixel-antialiased-text-configs-antialiasing-style-expected.txt:
  • compositing/contents-format/subpixel-antialiased-text-configs-expected.txt:
  • compositing/contents-format/subpixel-antialiased-text-images-expected.txt:
  • compositing/contents-format/subpixel-antialiased-text-traversal-expected.txt:
  • compositing/contents-format/subpixel-antialiased-text-visibility-expected.txt:
  • compositing/contents-opaque/overflow-hidden-child-layers-expected.txt:
  • compositing/filters/sw-layer-overlaps-hw-shadow-expected.txt:
  • compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow-expected.txt:
  • compositing/filters/sw-shadow-overlaps-hw-shadow-expected.txt:
  • compositing/geometry/bounds-ignores-hidden-composited-descendant-expected.txt:
  • compositing/geometry/bounds-ignores-hidden-dynamic-expected.txt:
  • compositing/geometry/bounds-ignores-hidden-expected.txt:
  • compositing/geometry/clip-expected.txt:
  • compositing/geometry/clip-inside-expected.txt:
  • compositing/geometry/fixed-position-flipped-writing-mode-expected.txt:
  • compositing/geometry/flipped-writing-mode-expected.txt:
  • compositing/geometry/foreground-layer-expected.txt:
  • compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
  • compositing/geometry/limit-layer-bounds-fixed-expected.txt:
  • compositing/geometry/limit-layer-bounds-fixed-positioned-expected.txt:
  • compositing/geometry/limit-layer-bounds-opacity-transition-expected.txt:
  • compositing/geometry/limit-layer-bounds-positioned-expected.txt:
  • compositing/geometry/limit-layer-bounds-positioned-transition-expected.txt:
  • compositing/geometry/limit-layer-bounds-transformed-expected.txt:
  • compositing/iframes/composited-parent-iframe-expected.txt:
  • compositing/iframes/connect-compositing-iframe-delayed-expected.txt:
  • compositing/iframes/connect-compositing-iframe-expected.txt:
  • compositing/iframes/connect-compositing-iframe2-expected.txt:
  • compositing/iframes/connect-compositing-iframe3-expected.txt:
  • compositing/iframes/enter-compositing-iframe-expected.txt:
  • compositing/iframes/iframe-resize-expected.txt:
  • compositing/iframes/overlapped-iframe-expected.txt:
  • compositing/iframes/page-cache-layer-tree-expected.txt:
  • compositing/iframes/scrolling-iframe-expected.txt:
  • compositing/images/clip-on-directly-composited-image-expected.txt:
  • compositing/ios/overflow-scroll-touch-tiles-expected.txt:
  • compositing/layer-creation/fixed-overlap-extent-expected.txt:
  • compositing/layer-creation/fixed-overlap-extent-rtl-expected.txt:
  • compositing/layer-creation/fixed-position-under-transform-expected.txt:
  • compositing/layer-creation/mismatched-rotated-transform-animation-overlap-expected.txt:
  • compositing/layer-creation/mismatched-rotated-transform-transition-overlap-expected.txt:
  • compositing/layer-creation/mismatched-transform-transition-overlap-expected.txt:
  • compositing/layer-creation/multiple-keyframes-animation-overlap-expected.txt:
  • compositing/layer-creation/overflow-scroll-overlap-expected.txt:
  • compositing/layer-creation/overlap-animation-clipping-expected.txt:
  • compositing/layer-creation/overlap-animation-expected.txt:
  • compositing/layer-creation/overlap-child-layer-expected.txt:
  • compositing/layer-creation/overlap-transformed-layer-expected.txt:
  • compositing/layer-creation/overlap-transforms-expected.txt:
  • compositing/layer-creation/rotate3d-overlap-expected.txt:
  • compositing/layer-creation/scale-rotation-animation-overlap-expected.txt:
  • compositing/layer-creation/scale-rotation-transition-overlap-expected.txt:
  • compositing/layer-creation/stacking-context-overlap-nested-expected.txt:
  • compositing/layer-creation/translate-animation-overlap-expected.txt:
  • compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
  • compositing/layer-creation/translate-scale-transition-overlap-expected.txt:
  • compositing/layer-creation/translate-transition-overlap-expected.txt:
  • compositing/layer-creation/will-change-layer-creation-expected.txt:
  • compositing/overflow/clip-descendents-expected.txt:
  • compositing/overflow/overflow-scrollbar-layer-positions-expected.txt:
  • compositing/repaint/fixed-background-scroll-expected.txt:
  • compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint-expected.txt:
  • compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt:
  • compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt:
  • compositing/repaint/repaint-on-layer-grouping-change-expected.txt:
  • compositing/rtl/rtl-absolute-overflow-expected.txt:
  • compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt:
  • compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt:
  • compositing/scrolling/touch-scroll-to-clip-expected.txt:
  • compositing/tiling/tiled-mask-inwindow-expected.txt:
  • compositing/tiling/tiled-reflection-inwindow-expected.txt:
  • compositing/tiling/transform-origin-tiled-expected.txt:
  • compositing/visible-rect/coverage-clipped-expected.txt:
  • compositing/visible-rect/coverage-scrolling-expected.txt:
  • fast/scrolling/ios/overflow-scroll-touch-expected.txt:
  • fast/scrolling/ios/subpixel-overflow-scrolling-with-ancestor-expected.txt:
  • platform/gtk/compositing/geometry/composited-in-columns-expected.txt:
  • platform/gtk/compositing/iframes/invisible-nested-iframe-show-expected.txt:
  • platform/gtk/compositing/layer-creation/overlap-animation-container-expected.txt:
  • platform/gtk/compositing/layer-creation/overlap-animation-expected.txt:
  • platform/gtk/compositing/layer-creation/will-change-layer-creation-expected.txt:
  • platform/gtk/compositing/overflow/composited-scrolling-creates-a-stacking-container-expected.txt:
  • platform/gtk/compositing/overflow/composited-scrolling-paint-phases-expected.txt:
  • platform/ios-wk2/compositing/backing/no-backing-for-clip-expected.txt:
  • platform/ios-wk2/compositing/backing/no-backing-for-clip-overlap-expected.txt:
  • platform/ios-wk2/compositing/columns/composited-in-paginated-rl-expected.txt:
  • platform/ios-wk2/compositing/columns/composited-lr-paginated-repaint-expected.txt:
  • platform/ios-wk2/compositing/columns/composited-rl-paginated-repaint-expected.txt:
  • platform/ios-wk2/compositing/geometry/bounds-ignores-hidden-composited-descendant-expected.txt:
  • platform/ios-wk2/compositing/geometry/composited-in-columns-expected.txt:
  • platform/ios-wk2/compositing/geometry/limit-layer-bounds-fixed-expected.txt:
  • platform/ios-wk2/compositing/geometry/limit-layer-bounds-fixed-positioned-expected.txt:
  • platform/ios-wk2/compositing/iframes/composited-parent-iframe-expected.txt:
  • platform/ios-wk2/compositing/iframes/connect-compositing-iframe-delayed-expected.txt:
  • platform/ios-wk2/compositing/iframes/connect-compositing-iframe-expected.txt:
  • platform/ios-wk2/compositing/iframes/connect-compositing-iframe2-expected.txt:
  • platform/ios-wk2/compositing/iframes/connect-compositing-iframe3-expected.txt:
  • platform/ios-wk2/compositing/iframes/enter-compositing-iframe-expected.txt:
  • platform/ios-wk2/compositing/iframes/iframe-resize-expected.txt:
  • platform/ios-wk2/compositing/iframes/leave-compositing-iframe-expected.txt:
  • platform/ios-wk2/compositing/iframes/overlapped-iframe-expected.txt:
  • platform/ios-wk2/compositing/iframes/page-cache-layer-tree-expected.txt:
  • platform/ios-wk2/compositing/iframes/scrolling-iframe-expected.txt:
  • platform/ios-wk2/compositing/layer-creation/fixed-position-under-transform-expected.txt:
  • platform/ios-wk2/compositing/repaint/fixed-background-scroll-expected.txt:
  • platform/ios-wk2/compositing/rtl/rtl-absolute-overflow-expected.txt:
  • platform/ios-wk2/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt:
  • platform/ios-wk2/compositing/rtl/rtl-fixed-overflow-expected.txt:
  • platform/ios-wk2/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt:
  • platform/ios-wk2/compositing/scrolling/touch-scroll-to-clip-expected.txt:
  • platform/ios-wk2/compositing/tiling/backface-preserve-3d-tiled-expected.txt:
  • platform/ios-wk2/compositing/tiling/rotated-tiled-clamped-expected.txt:
  • platform/ios-wk2/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
  • platform/ios-wk2/compositing/tiling/tiled-mask-inwindow-expected.txt:
  • platform/ios-wk2/compositing/tiling/tiled-reflection-inwindow-expected.txt:
  • platform/ios-wk2/compositing/tiling/transform-origin-tiled-expected.txt:
  • platform/ios-wk2/compositing/visibility/visibility-image-layers-dynamic-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/2d-transformed-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/3d-transformed-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/clipped-visible-rect-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/coverage-clipped-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/coverage-scrolling-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/flipped-preserve-3d-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/iframe-and-layers-expected.txt:
  • platform/ios-wk2/compositing/visible-rect/nested-transform-expected.txt:
  • platform/ios/compositing/contents-format/subpixel-antialiased-nested-layer-expected.txt:
  • platform/ios/compositing/contents-format/subpixel-antialiased-text-traversal-expected.txt:
  • platform/ios/compositing/filters/sw-layer-overlaps-hw-shadow-expected.txt:
  • platform/ios/compositing/geometry/fixed-position-flipped-writing-mode-expected.txt:
  • platform/ios/compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
  • platform/ios/compositing/iframes/invisible-nested-iframe-show-expected.txt:
  • platform/ios/compositing/images/clip-on-directly-composited-image-expected.txt:
  • platform/ios/compositing/layer-creation/overlap-animation-clipping-expected.txt:
  • platform/ios/compositing/layer-creation/overlap-animation-container-expected.txt:
  • platform/ios/compositing/layer-creation/scale-rotation-animation-overlap-expected.txt:
  • platform/ios/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
  • platform/ios/compositing/overflow/composited-scrolling-creates-a-stacking-container-expected.txt:
  • platform/ios/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt:
  • platform/ios/compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt:
  • platform/ios/compositing/visible-rect/3d-transform-style-expected.txt:
  • platform/ios/compositing/visible-rect/animated-expected.txt:
  • platform/ios/compositing/visible-rect/animated-from-none-expected.txt:
  • platform/ios/fast/scrolling/ios/overflow-scrolling-ancestor-clip-expected.txt:
  • platform/ios/fast/scrolling/ios/overflow-scrolling-ancestor-clip-size-expected.txt:
  • platform/ios/fast/scrolling/ios/textarea-scroll-touch-expected.txt:
  • platform/ios/media/video-play-glyph-composited-outside-overflow-scrolling-touch-container-expected.txt:
  • platform/mac-elcapitan/compositing/contents-opaque/control-layer-expected.txt:
  • platform/mac-elcapitan/compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint-expected.txt:
  • platform/mac-sierra-wk1/compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint-expected.txt:
  • platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt:
  • platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt:
  • platform/mac-wk1/compositing/tiling/tiled-mask-inwindow-expected.txt:
  • platform/mac-wk1/compositing/tiling/tiled-reflection-inwindow-expected.txt:
  • platform/mac-wk1/compositing/tiling/transform-origin-tiled-expected.txt:
  • platform/mac-wk2/compositing/rtl/rtl-absolute-overflow-expected.txt:
  • platform/mac-wk2/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt:
  • platform/mac-wk2/compositing/rtl/rtl-fixed-overflow-expected.txt:
  • platform/mac-wk2/compositing/tiling/rotated-tiled-clamped-expected.txt:
  • platform/mac-wk2/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
  • platform/mac/compositing/contents-format/subpixel-antialiased-text-configs-antialiasing-style-expected.txt:
  • platform/mac/compositing/contents-format/subpixel-antialiased-text-configs-expected.txt:
  • platform/mac/compositing/contents-format/subpixel-antialiased-text-images-expected.txt:
  • platform/mac/compositing/contents-format/subpixel-antialiased-text-traversal-expected.txt:
  • platform/mac/compositing/contents-format/subpixel-antialiased-text-visibility-expected.txt:
  • platform/mac/compositing/contents-opaque/control-layer-expected.txt:
  • platform/mac/compositing/geometry/composited-in-columns-expected.txt:
  • platform/mac/compositing/iframes/invisible-nested-iframe-show-expected.txt:
  • platform/mac/compositing/layer-creation/overlap-animation-container-expected.txt:
  • platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
  • platform/mac/compositing/overflow/composited-scrolling-creates-a-stacking-container-expected.txt:
  • platform/mac/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt:
  • platform/mac/compositing/tiling/backface-preserve-3d-tiled-expected.txt:
  • platform/mac/compositing/tiling/rotated-tiled-clamped-expected.txt:
  • platform/mac/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
  • platform/mac/compositing/visibility/visibility-image-layers-dynamic-expected.txt:
  • platform/mac/compositing/visible-rect/2d-transformed-expected.txt:
  • platform/mac/compositing/visible-rect/3d-transform-style-expected.txt:
  • platform/mac/compositing/visible-rect/3d-transformed-expected.txt:
  • platform/mac/compositing/visible-rect/animated-expected.txt:
  • platform/mac/compositing/visible-rect/animated-from-none-expected.txt:
  • platform/mac/compositing/visible-rect/clipped-visible-rect-expected.txt:
  • platform/mac/compositing/visible-rect/flipped-preserve-3d-expected.txt:
  • platform/mac/compositing/visible-rect/iframe-and-layers-expected.txt:
  • platform/mac/compositing/visible-rect/nested-transform-expected.txt:
  • tiled-drawing/scrolling/fixed/four-bars-zoomed-expected.txt:
  • tiled-drawing/scrolling/frames/fixed-inside-frame-expected.txt:
  • tiled-drawing/tile-coverage-iframe-to-zero-coverage-expected.txt:
12:17 AM Changeset in webkit [225896] by Yusuke Suzuki
  • 4 edits in trunk/Source

REGRESSION(r225769): Build errors with constexpr std::tie on older gcc
https://bugs.webkit.org/show_bug.cgi?id=180692

Reviewed by Carlos Garcia Campos.

Source/WebCore:

  • platform/graphics/FontSelectionAlgorithm.h:

(WebCore::FontSelectionRange::operator== const):
(WebCore::FontSelectionRequest::tied const):
(WebCore::FontSelectionCapabilities::tied const):
(WebCore::FontSelectionSpecifiedCapabilities:: const):

Source/WTF:

Due to libstdc++'s bug[1], std::tie is not annotated with constexpr in libstdc++ 5.
This patch adds WTF::tie for a work around. Since we do not want to
include <tuple> in StdLibExtras.h, we define this function for all
the compilers.

[1]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65978

  • wtf/StdLibExtras.h:

Dec 13, 2017:

11:45 PM Changeset in webkit [225895] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Network Tab - Make text filter just a URL filter and update incrementally
https://bugs.webkit.org/show_bug.cgi?id=180796

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-12-13
Reviewed by Brian Burg.

Revert the Network Tab's text filter back to being just a URL filter with the
normal behaviors of our other text filters that update as you type (incremental).
This also renames the "text filter" to "url filter" everywhere in the ContentView
for clarity. A follow-up change will make the url filter be case-insensitive
to fully match the filter bars in other tabs.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.get filterNavigationItems):
(WI.NetworkTableContentView.prototype._checkURLFilterAgainstFinishedResource):
(WI.NetworkTableContentView.prototype._updateURLFilterActiveIndicator):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
(WI.NetworkTableContentView.prototype._hasURLFilter):
(WI.NetworkTableContentView.prototype._hasActiveFilter):
(WI.NetworkTableContentView.prototype._passURLFilter):
(WI.NetworkTableContentView.prototype._passFilter):
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._resetFilters):
(WI.NetworkTableContentView.prototype._urlFilterDidChange):
(WI.NetworkTableContentView.prototype._checkTextFilterAgainstFinishedResource): Deleted.
(WI.NetworkTableContentView.prototype._checkTextFilterAgainstFailedResource): Deleted.
(WI.NetworkTableContentView.prototype._updateTextFilterActiveIndicator): Deleted.
(WI.NetworkTableContentView.prototype._hasTextFilter): Deleted.
(WI.NetworkTableContentView.prototype._passTextFilter): Deleted.
(WI.NetworkTableContentView.prototype._textFilterDidChange): Deleted.

11:00 PM Changeset in webkit [225894] by dbates@webkit.org
  • 1 edit
    3 adds in trunk/LayoutTests

Add more auto fill button types
https://bugs.webkit.org/show_bug.cgi?id=180651
<rdar://problem/35891125>
And
<rdar://problem/35977943>

Add macOS El Capitan-specific and Windows expected results. I included results from the Apple Windows bot
as a baseline. The results are incorrect as they render the password field text using bullets instead of
plain text. Further investigation required.

  • platform/mac-elcapitan/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt: Added.
  • platform/win/fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button-expected.txt: Added.
  • platform/win/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt: Added.
10:04 PM Changeset in webkit [225893] by fpizlo@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

Octane/richards regressed by a whopping 20% because eliminateCommonSubexpressions has a weird fixpoint requirement
https://bugs.webkit.org/show_bug.cgi?id=180783

Reviewed by Saam Barati.

This fixes the regression by fixpointing CSE. We need to fixpoint CSE because of this case:

BB#1:

a: Load(@x)
b: Load(@x)
c: Load(@b)

BB#2:

d: Load(@b)

BB#3:

e: Load(@b)


Lets assume that #3 loops around to #2, so to eliminate @d, we need to prove that it's redundant
with both @c and @e. The problem is that by the time we get to @d, the CSE state will look like
this:

BB#1:

a: Load(@x)
b: Load(@x)
c: Load(@a)
memoryAtTail: {@x=>@a, @a=>@c}

BB#2:

d: Load(@a) [sic]
memoryAtTail: {@b=>@d}

BB#3:

e: Load(@b)
memoryAtTail: {@b=>@e} [sic]


Note that #3's atTail map is keyed on @b, which was the old (no longer canonical) version of @a.
But @d's children were already substituted, so it refers to @a. Since @a is not in #3's atTail
map, we don't find it and leave the redundancy.

I think that the cleanest solution is to fixpoint. CSE is pretty cheap, so hopefully we can afford
this. It fixes the richards regression, since richards is super dependent on B3 CSE.

  • b3/B3EliminateCommonSubexpressions.cpp: Logging.
  • b3/B3Generate.cpp:

(JSC::B3::generateToAir): Fix the bug.

  • b3/air/AirReportUsedRegisters.cpp:

(JSC::B3::Air::reportUsedRegisters): Logging.

  • dfg/DFGByteCodeParser.cpp:
  • dfg/DFGSSAConversionPhase.cpp:

(JSC::DFG::SSAConversionPhase::run): Don't generate EntrySwitch if we don't need it (makes IR easier to read).

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::lower): Don't generate EntrySwitch if we don't need it (makes IR easier to read).

8:47 PM Changeset in webkit [225892] by commit-queue@webkit.org
  • 18 edits
    2 adds in trunk

REGRESSION: Web Inspector: Opening inspector crashes page if there are empty resources
https://bugs.webkit.org/show_bug.cgi?id=180787
<rdar://problem/35934838>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-12-13
Reviewed by Brian Burg.

Source/JavaScriptCore:

  • inspector/ContentSearchUtilities.cpp:

(Inspector::ContentSearchUtilities::findMagicComment):
For empty / null strings just return. There is no use
trying to search them for a long common syntax.

Source/WebInspectorUI:

  • UserInterface/Test/TestUtilities.js:

Add a generic sanitizeURL used by many tests.

  • UserInterface/TestStub.html:

Include TestUtilities.

LayoutTests:

  • inspector/page/resources/empty.css: Added.
  • inspector/page/resources/empty.js: Added.
  • inspector/page/empty-or-missing-resources-expected.txt: Added.
  • inspector/page/empty-or-missing-resources.html: Added.

Test no crashes inspecting a page with empty/missing resources.
Previously the test would crash.

  • inspector/canvas/recording-webgl-snapshots.html:
  • inspector/canvas/resources/create-context-utilities.js:
  • inspector/canvas/resources/recording-utilities.js:
  • inspector/css/getAllStyleSheets.html:
  • inspector/css/stylesheet-events-basic.html:
  • inspector/css/stylesheet-events-imports.html:
  • inspector/css/stylesheet-events-multiple-documents.html:
  • inspector/worker/console-basic.html:
  • inspector/worker/debugger-scripts.html:
  • inspector/worker/resources-in-worker.html:
  • inspector/worker/runtime-basic.html:
  • inspector/worker/worker-create-and-terminate.html:

Promote sanitizeURL to a TestUtility function since it is common.

8:10 PM Changeset in webkit [225891] by sbarati@apple.com
  • 11 edits
    1 add in trunk

Arrow functions need their own structure because they have different properties than sloppy functions
https://bugs.webkit.org/show_bug.cgi?id=180779
<rdar://problem/35814591>

Reviewed by Mark Lam.

JSTests:

  • stress/arrow-function-needs-its-own-structure.js: Added.

(assert):
(readPrototype):
(noInline.let.f1):
(noInline):

Source/JavaScriptCore:

We were using the same structure for sloppy functions and
arrow functions. This broke our IC caching machinery because
these two types of functions actually have different properties.
This patch gives them different structures.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileNewFunction):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):

  • runtime/FunctionConstructor.cpp:

(JSC::constructFunctionSkippingEvalEnabledCheck):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::selectStructureForNewFuncExp):
(JSC::JSFunction::create):

  • runtime/JSFunction.h:
  • runtime/JSFunctionInlines.h:

(JSC::JSFunction::createWithInvalidatedReallocationWatchpoint):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::arrowFunctionStructure const):

7:05 PM Changeset in webkit [225890] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Fix copy/paste error in ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration()
https://bugs.webkit.org/show_bug.cgi?id=180782

Reviewed by Youenn Fablet.

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):

6:37 PM Changeset in webkit [225889] by dbates@webkit.org
  • 5 edits
    2 adds in trunk/LayoutTests

Add more auto fill button types
https://bugs.webkit.org/show_bug.cgi?id=180651
<rdar://problem/35891125>
And
<rdar://problem/35977943>

Update expected results. I included results from the GTK bot as a baseline. The results are incorrect as they
render the password field text using bullets instead of plain text. This likely indicates that the bots did not
regenerate the user-agent style sheet.

  • platform/gtk/fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button-expected.txt: Added.
  • platform/gtk/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt: Added.
  • platform/ios/fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button-expected.txt:
  • platform/ios/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt:
  • platform/mac/fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button-expected.txt:
  • platform/mac/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt:
5:45 PM Changeset in webkit [225888] by clopez@igalia.com
  • 2 edits in trunk

[WPE] WebCrypto should be a public option.
https://bugs.webkit.org/show_bug.cgi?id=180780

Reviewed by Konstantin Tokarev.

Make ENABLE_WEB_CRYPTO public and lower the dependency requirements
when this option is not enabled. This is also how the GTK+ port
configures the visibility of this option and its dependencies.

  • Source/cmake/OptionsWPE.cmake:
5:12 PM Changeset in webkit [225887] by fpizlo@apple.com
  • 7 edits
    1 add in trunk/Source/JavaScriptCore

InferredValue should use IsoSubspace
https://bugs.webkit.org/show_bug.cgi?id=180738

Reviewed by Keith Miller.

This moves InferredValue into an IsoSubspace and then takes advantage of this to get rid of
its UnconditionalFinalizer.

(JSC::Heap::finalizeUnconditionalFinalizers):

  • runtime/InferredValue.cpp:

(JSC::InferredValue::visitChildren):
(JSC::InferredValue::ValueCleanup::ValueCleanup): Deleted.
(JSC::InferredValue::ValueCleanup::~ValueCleanup): Deleted.
(JSC::InferredValue::ValueCleanup::finalizeUnconditionally): Deleted.

  • runtime/InferredValue.h:

(JSC::InferredValue::subspaceFor):

  • runtime/InferredValueInlines.h: Added.

(JSC::InferredValue::finalizeUnconditionally):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
5:07 PM Changeset in webkit [225886] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=173742

Unreviewed test gardening

  • platform/mac-wk2/TestExpectations:
5:02 PM Changeset in webkit [225885] by dbates@webkit.org
  • 2 edits in trunk/Source/WebCore

Fix the Windows build after <https://trac.webkit.org/changeset/225879>
(https://bugs.webkit.org/show_bug.cgi?id=180651)

  • html/TextFieldInputType.cpp:

(WebCore::autoFillButtonTypeToAccessibilityLabel):
(WebCore::autoFillButtonTypeToAutoFillButtonText):
(WebCore::autoFillButtonTypeToAutoFillButtonPseudoClassName):

4:57 PM Changeset in webkit [225884] by webkit@devinrousso.com
  • 23 edits
    6 adds in trunk

Web Inspector: add instrumentation for ImageBitmapRenderingContext
https://bugs.webkit.org/show_bug.cgi?id=180736

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

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

Source/WebCore:

Tests: inspector/canvas/create-context-bitmaprenderer.html

inspector/canvas/requestContent-bitmaprenderer.html
inspector/canvas/resolveCanvasContext-bitmaprenderer.html

  • CMakeLists.txt:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::getContext):
(WebCore::HTMLCanvasElement::createContextBitmapRenderer):
Support passing an optional settings dictionary when creating an ImageBitmapRenderingContext.

  • inspector/agents/InspectorCanvasAgent.cpp:

(WebCore::InspectorCanvasAgent::requestContent):
(WebCore::contextAsScriptValue):

  • bindings/js/CallTracerTypes.h:
  • inspector/InspectorCanvas.h:
  • inspector/InspectorCanvas.cpp:

(WebCore::InspectorCanvas::buildObjectForCanvas):
(WebCore::InspectorCanvas::indexForData):
(WebCore::InspectorCanvas::buildAction):
(WebCore::InspectorCanvas::buildArrayForImageBitmap): Deleted.

Source/WebInspectorUI:

  • UserInterface/Base/ImageUtilities.js:

(WI.ImageUtilities.promisifyLoad):
(WI.ImageUtilities.imageFromImageBitmap):

  • UserInterface/Models/Canvas.js:

(WI.Canvas.fromPayload):
(WI.Canvas.displayNameForContextType):

  • UserInterface/Models/NativeFunctionParameters.js:
  • UserInterface/Models/Recording.js:

(WI.Recording.displayNameForSwizzleType):
(WI.Recording.prototype.async swizzle):

  • UserInterface/Views/RecordingActionTreeElement.js:

(WI.RecordingActionTreeElement._generateDOM):
(WI.RecordingActionTreeElement._generateDOM.createParameterElement):

LayoutTests:

  • inspector/canvas/context-attributes-expected.txt:
  • inspector/canvas/context-attributes.html:
  • inspector/canvas/create-context-bitmaprenderer-expected.txt: Added.
  • inspector/canvas/create-context-bitmaprenderer.html: Added.
  • inspector/canvas/recording-2d-expected.txt:
  • inspector/canvas/recording-2d.html:
  • inspector/canvas/requestContent-bitmaprenderer-expected.txt: Added.
  • inspector/canvas/requestContent-bitmaprenderer.html: Added.
  • inspector/canvas/resolveCanvasContext-bitmaprenderer-expected.txt: Added.
  • inspector/canvas/resolveCanvasContext-bitmaprenderer.html: Added.
4:50 PM Changeset in webkit [225883] by jmarcell@apple.com
  • 7 edits in tags/Safari-605.1.17.1/Source

Cherry-pick r225863. rdar://problem/35996158

4:49 PM Changeset in webkit [225882] by jmarcell@apple.com
  • 7 edits in tags/Safari-605.1.17.1/Source

Versioning.

4:47 PM Changeset in webkit [225881] by jmarcell@apple.com
  • 1 copy in tags/Safari-605.1.17.1

New tag.

4:31 PM Changeset in webkit [225880] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Take a value driven approach to how we emit structure checks in TypeCheckHoistingPhase to obviate the need for static_assert guards
https://bugs.webkit.org/show_bug.cgi?id=180771

Reviewed by JF Bastien.

  • dfg/DFGTypeCheckHoistingPhase.cpp:

(JSC::DFG::TypeCheckHoistingPhase::run):

4:29 PM Changeset in webkit [225879] by dbates@webkit.org
  • 29 edits
    14 adds in trunk

Add more auto fill button types
https://bugs.webkit.org/show_bug.cgi?id=180651
<rdar://problem/35891125>
And
<rdar://problem/35977943>

Reviewed by Brent Fulgham.

Source/WebCore:

Tests: fast/forms/auto-fill-button/input-autofilled-disabled-strong-password-auto-fill-button.html

fast/forms/auto-fill-button/input-autofilled-readonly-strong-password-auto-fill-button.html
fast/forms/auto-fill-button/input-disabled-strong-password-and-strong-confirmation-password-auto-fill-buttons.html
fast/forms/auto-fill-button/input-readonly-strong-password-and-strong-confirmation-password-auto-fill-buttons.html
fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button.html
fast/forms/auto-fill-button/input-strong-password-auto-fill-button.html

  • English.lproj/Localizable.strings:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): Add strings for new auto fill button types.

  • css/CSSSelector.cpp:

(WebCore::CSSSelector::selectorText const):

  • css/CSSSelector.h:
  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::checkOne const):

  • css/SelectorCheckerTestFunctions.h:

(WebCore::isAutofilledStrongPassword):

  • css/SelectorPseudoClassAndCompatibilityElementMap.in:
  • css/html.css:

(input::-webkit-strong-password-auto-fill-button):
(input:-webkit-autofill-strong-password):
(input:-webkit-autofill, input:-webkit-autofill-strong-password):
(input:-webkit-autofill): Deleted.

  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::addPseudoClassType):
Add new CSS pseudo class and CSS styles.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::reset): Hide the auto fill button when the form is reset. This is also called
whenever we suspend the page to put it into the page cache.
(WebCore::HTMLInputElement::setShowAutoFillButton): Modified to update the editability of the inner text element
and invalidate styles for the subtree as the editability may have changed depending on the auto fill button type.

(WebCore::autoFillStrongPasswordMaskImage):
(WebCore::HTMLInputElement::createInnerTextStyle):
(WebCore::HTMLInputElement::createInnerTextStyle const): Deleted.
Adjust the look of the inner text field. This function is not const because we may need to resolve style to
generate a mask image.

  • html/HTMLInputElement.h:

(WebCore::HTMLInputElement::autoFillButtonType const): Fix style nit; use a C++ style cast while I am in
this area.
(WebCore::HTMLInputElement::hasAutoFillStrongPasswordButton const): Added.

  • html/HTMLTextAreaElement.cpp:

(WebCore::HTMLTextAreaElement::createInnerTextStyle):
(WebCore::HTMLTextAreaElement::createInnerTextStyle const): Deleted.
Made this non-const because HTMLInputElement::createInnerTextStyle() needs to be non-const. See above.

  • html/HTMLTextAreaElement.h:
  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::isInnerTextElementEditable const):
(WebCore::HTMLTextFormControlElement::updateInnerTextElementEditability):
Extract out the query to determine if the inner text element is editable into a virtual function isInnerTextElementEditable()
and have updateInnerTextElementEditability() make use of it. By default a field is considered editable if it is not disabled
or read-only. We override updateInnerTextElementEditability() in HTMLInputElement to also consider the auto fill button type.

  • html/HTMLTextFormControlElement.h:
  • html/TextFieldInputType.cpp:

(WebCore::autoFillButtonTypeToAccessibilityLabel):
(WebCore::autoFillButtonTypeToAutoFillButtonText):
(WebCore::autoFillButtonTypeToAutoFillButtonPseudoClassName):
(WebCore::isAutoFillButtonTypeChanged):
(WebCore::TextFieldInputType::createAutoFillButton):
(WebCore::TextFieldInputType::updateAutoFillButton):
Support having text for the auto fill button.

  • platform/LocalizedStrings.cpp:

(WebCore::AXAutoFillStrongPasswordLabel):
(WebCore::AXAutoFillStrongConfirmationPasswordLabel):
(WebCore::autoFillStrongPasswordLabel):

  • platform/LocalizedStrings.h:

Add localized strings.

  • rendering/RenderTextControlSingleLine.h: Disallow scrolling depending on the auto fill button type.
  • testing/Internals.cpp:

(WebCore::toAutoFillButtonType):

  • testing/Internals.h:
  • testing/Internals.idl:

Add support for testing.

Source/WebKit:

Adds enumerators for the new auto fill button types.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:

(toAutoFillButtonType):

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:
  • WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:

(toAutoFillButtonType):

  • WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h:

LayoutTests:

  • fast/forms/auto-fill-button/input-autofilled-disabled-strong-password-auto-fill-button-expected.html: Added.
  • fast/forms/auto-fill-button/input-autofilled-disabled-strong-password-auto-fill-button.html: Added.
  • fast/forms/auto-fill-button/input-autofilled-readonly-strong-password-auto-fill-button-expected.html: Added.
  • fast/forms/auto-fill-button/input-autofilled-readonly-strong-password-auto-fill-button.html: Added.
  • fast/forms/auto-fill-button/input-disabled-strong-password-and-strong-confirmation-password-auto-fill-buttons-expected.html: Added.
  • fast/forms/auto-fill-button/input-disabled-strong-password-and-strong-confirmation-password-auto-fill-buttons.html: Added.
  • fast/forms/auto-fill-button/input-readonly-strong-password-and-strong-confirmation-password-auto-fill-buttons-expected.html: Added.
  • fast/forms/auto-fill-button/input-readonly-strong-password-and-strong-confirmation-password-auto-fill-buttons.html: Added.
  • fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button.html: Added.
  • fast/forms/auto-fill-button/input-strong-password-auto-fill-button.html: Added.
  • platform/ios/fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button-expected.txt: Added.
  • platform/ios/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt: Added.
  • platform/mac/fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button-expected.txt: Added.
  • platform/mac/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt: Added.
4:05 PM Changeset in webkit [225878] by rniwa@webkit.org
  • 17 edits in trunk/Source/WebCore

Crash inside ImageLoader::updateFromElement()
https://bugs.webkit.org/show_bug.cgi?id=180769
<rdar://problem/35278782>

Reviewed by Antti Koivisto.

Fixed the crash by moving all call sites of ImageLoader::updateFromElement() to be post insertion callbacks
where it's safe to execute arbitrary scripts.

No new test since existing tests cover this with a newly added release assert in ImageLoader.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::insertedIntoAncestor):
(WebCore::HTMLImageElement::didFinishInsertingNode): Extracted from insertedIntoAncestor to call
selectImageSource or updateFromElement.

  • html/HTMLImageElement.h: Made many member functions final.
  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::didAttachRenderers): Delay the call to ImageLoader::updateFromElement() in
ImageInputType using a post style resolution callback.

  • html/HTMLMetaElement.h:
  • html/HTMLPictureElement.cpp:

(WebCore::HTMLPictureElement::sourcesChanged): Store the list of child image elements into a vector before
calling selectImageSource since each call may execute arbitrary scripts.

  • html/HTMLSourceElement.cpp:

(WebCore::HTMLSourceElement::insertedIntoAncestor): Delay the call to ImageLoader::updateFromElement()
using a post style resolution callback.
(WebCore::HTMLSourceElement::didFinishInsertingNode): Extracted from insertedIntoAncestor.

  • html/HTMLSourceElement.h:
  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::didAttachRenderers):
(WebCore::HTMLVideoElement::updateAfterStyleResolution): Extracted from didAttachRenderers.

  • html/HTMLVideoElement.h:
  • html/ImageInputType.cpp:

(WebCore::ImageInputType::needsPostStyleResolutionCallback): Added. Returns true so that HTMLInputElement's
didAttachRenderers would register a post style resolution callback.
(WebCore::ImageInputType::updateAfterStyleResolution): Extracted from attach.
(WebCore::ImageInputType::attach): Deleted.

  • html/ImageInputType.h:
  • html/InputType.cpp:

(WebCore::InputType::needsPostStyleResolutionCallback): Added. All but ImageInputType returns false.
(WebCore::InputType::updateAfterStyleResolution): Added.
(WebCore::InputType::attach): Deleted.

  • html/InputType.h:
  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::updateFromElement): Added a release assertion. There is no direct security implication
so there is no need to use RELEASE_ASSERT_WITH_SECURITY_IMPLICATION here.

  • svg/SVGImageElement.cpp:

(WebCore::SVGImageElement::insertedIntoAncestor):
(WebCore::SVGImageElement::didFinishInsertingNode):

  • svg/SVGImageElement.h:
3:58 PM Changeset in webkit [225877] by Matt Lewis
  • 15 edits in trunk

Unreviewed, rolling out r225864.

This caused the Layout test step to crash out on Debug testers

Reverted changeset:

"REGRESSION (r225789): API tests
WKProcessPool.InitialWarmedProcessUsed and
WebKit.WebsiteDataStoreCustomPaths are failing."
https://bugs.webkit.org/show_bug.cgi?id=180722
https://trac.webkit.org/changeset/225864

3:10 PM Changeset in webkit [225876] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.5.2.1

Tag Safari-604.5.2.1.

3:07 PM Changeset in webkit [225875] by jmarcell@apple.com
  • 5 edits in branches/safari-604.5.2-branch/Source

Cherry-pick r225535. rdar://problem/34531264

3:05 PM Changeset in webkit [225874] by jmarcell@apple.com
  • 7 edits in branches/safari-604.5.2-branch/Source

Versioning.

2:55 PM Changeset in webkit [225873] by jmarcell@apple.com
  • 1 copy in branches/safari-604.5.2-branch

New branch.

2:13 PM Changeset in webkit [225872] by Alan Bujtas
  • 5 edits
    2 adds in trunk

RenderImage can be destroyed even before setting the style on it.
https://bugs.webkit.org/show_bug.cgi?id=180767
<rdar://problem/33965995>

Reviewed by Simon Fraser.

Source/WebCore:

In certain cases, when the newly constructed renderer can't be inserted into the tree (parent can only have specific type of children etc),
RenderTreeUpdater destroys it right away. While destroying a RenderImage, the associated image resource assumes
that the image renderer has been initialized through RenderElement::initializeStyle(). This is an incorrect
assumption.
This patch also makes RenderImageResource's m_renderer a weak pointer.

Test: fast/images/crash-when-image-renderer-is-destroyed-before-calling-initializeStyle.html

  • rendering/RenderImageResource.cpp:

(WebCore::RenderImageResource::initialize):
(WebCore::RenderImageResource::setCachedImage):
(WebCore::RenderImageResource::resetAnimation):
(WebCore::RenderImageResource::image const):
(WebCore::RenderImageResource::setContainerContext):
(WebCore::RenderImageResource::imageSize const):

  • rendering/RenderImageResource.h:

(WebCore::RenderImageResource::renderer const):

  • rendering/RenderImageResourceStyleImage.cpp:

(WebCore::RenderImageResourceStyleImage::shutdown):

LayoutTests:

  • fast/images/crash-when-image-renderer-is-destroyed-before-calling-initializeStyle-expected.txt: Added.
  • fast/images/crash-when-image-renderer-is-destroyed-before-calling-initializeStyle.html: Added.
1:58 PM Changeset in webkit [225871] by jmarcell@apple.com
  • 7 edits in tags/Safari-605.1.18/Source

Cherry-pick r225863. rdar://problem/35996158

1:46 PM Changeset in webkit [225870] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Update ContentFiltering.LazilyLoadPlatformFrameworks test to account for libwebrtc using VideoProcessing framework
https://bugs.webkit.org/show_bug.cgi?id=180713
<rdar://problem/36003031>

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-13
Reviewed by Andy Estes.

Reenable the check for non High Sierra builds.

  • TestWebKitAPI/Tests/WebKitCocoa/ContentFiltering.mm:

(-[LazilyLoadPlatformFrameworksController expectParentalControlsLoaded:networkExtensionLoaded:]):

1:16 PM Changeset in webkit [225869] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked accessibility/mac/html5-input-number.html as flaky on macOS.
https://bugs.webkit.org/show_bug.cgi?id=180560

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:12 PM Changeset in webkit [225868] by rniwa@webkit.org
  • 7 edits in trunk/Source/WebCore

Update the SVG use element's shadow trees explicitly before the style recall
https://bugs.webkit.org/show_bug.cgi?id=180729
<rdar://problem/36009806>

Reviewed by Antti Koivisto.

Update the SVG use element's shadow trees before start resolving styles. Document now has a hash set of all
connected SVG use elements with invalidated shadow trees. SVGUseElement adds itself to this set when its
shadow tree gets invalidated, or it gets newly connected to a document with the invalidated shadow tree.
SVGUseElement removes itself from this set when it updates its shadow tree or it gets disconnected from
a document with the invalidated shadow tree.

No new tests. Covered by existing tests.

  • dom/Document.cpp:

(WebCore::Document::~Document): Assert that m_svgUseElements has been cleared.
(WebCore::Document::resolveStyle): Update the shadow trees of SVG use elements with invalidated shadow trees.
(WebCore::Document::addSVGUseElement): Added.
(WebCore::Document::removeSVGUseElement): Added.

  • dom/Document.h:

(WebCore::Document::svgUseElements const): Added.

  • dom/Element.cpp:

(WebCore::Element::cloneElementWithChildren): Removed EventAllowedScope since the SVG use element's shadow
tree is no longer updated when there is a NoEventDispatchAssertion in the stack.
(WebCore::Element::cloneElementWithoutChildren): Ditto.

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolveComposedTree): No longer drops the assertion now that SVG use element's
shadow tree is updated before calling this function.

  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::insertedIntoAncestor): Add the element to the document's hash set if this use element's
shadow tree needs to be updated (m_shadowTreeNeedsUpdate is set), and it got newly connected.
(WebCore::SVGUseElement::removedFromAncestor): Ditto for removal. We have to check m_shadowTreeNeedsUpdate before
calling SVGGraphicsElement::removedFromAncestor or updateExternalDocument since either function can invoke
m_shadowTreeNeedsUpdate to true.
(WebCore::SVGUseElement::willRecalcStyle): Deleted. We no longer call updateShadowTree during style recalc.
(WebCore::SVGUseElement::updateShadowTree): Remove this element from the document's hah set. We can't clear all
the entries in the map at once in Document::resolveStyle because updating the shadow trees of a SVG use element
can result in a sync IPC in ImageLoader::updateFromElement, which end up executing arbitrary author scripts.
(WebCore::SVGUseElement::cloneTarget const): Removed EventAllowedScope since the SVG use element's shadow tree
is no longer updated when there is a NoEventDispatchAssertion in the stack.
(WebCore::SVGUseElement::expandUseElementsInShadowTree const): Ditto.
(WebCore::SVGUseElement::expandSymbolElementsInShadowTree const): Ditto.
(WebCore::SVGUseElement::invalidateShadowTree): Add the element to the document's hash set if it's connected.

  • svg/SVGUseElement.h:
12:54 PM Changeset in webkit [225867] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Removed debug only expectations from platform/ios/ios/plugin/youtube-flash-plugin-iframe.html
https://bugs.webkit.org/show_bug.cgi?id=163362

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
12:47 PM Changeset in webkit [225866] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Updated expectations for contentextension tests to be flaky.
https://bugs.webkit.org/show_bug.cgi?id=162942

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
12:46 PM Changeset in webkit [225865] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r225844): Around 850 new JSC failures on 32-bit
https://bugs.webkit.org/show_bug.cgi?id=180764

Unreviewed. We should only emit CheckStructureOrEmpty on 64 bit platforms.

  • dfg/DFGTypeCheckHoistingPhase.cpp:

(JSC::DFG::TypeCheckHoistingPhase::run):

12:20 PM Changeset in webkit [225864] by beidson@apple.com
  • 15 edits in trunk

REGRESSION (r225789): API tests WKProcessPool.InitialWarmedProcessUsed and WebKit.WebsiteDataStoreCustomPaths are failing.
https://bugs.webkit.org/show_bug.cgi?id=180722

Reviewed by Chris Dumez.

Source/WebKit:

  • Add a test-only accessor to get the number of WebProcesses hosting WebPages
  • Have WebsiteDataStore keep track of all instances so they can be looked up by SessionID
  • When the StorageProcess needs to establish a SW context connection on behalf of a specific SessionID, the UI process will now prefer using the WebsiteDataStore associated with that SessionID. This allows us to continue deferring creation of the default data store if it's not needed.
  • StorageProcess/StorageProcess.cpp:

(WebKit::StorageProcess::connectionToContextProcessWasClosed):
(WebKit::StorageProcess::createServerToContextConnection):

  • StorageProcess/StorageProcess.h:
  • StorageProcess/StorageToWebProcessConnection.cpp:

(WebKit::StorageToWebProcessConnection::establishSWServerConnection):

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _webPageContentProcessCount]):

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/Storage/StorageProcessProxy.cpp:

(WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcess):
(WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcessForExplicitSession):

  • UIProcess/Storage/StorageProcessProxy.h:
  • UIProcess/Storage/StorageProcessProxy.messages.in:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::WebsiteDataStore::~WebsiteDataStore):
(WebKit::WebsiteDataStore::existingDataStoreForSessionID):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/InitialWarmedProcessUsed.mm:

(TEST): Call a new SPI to get the count of WebProcesses hosting WebPages.

12:19 PM Changeset in webkit [225863] by pvollan@apple.com
  • 7 edits in trunk/Source

REGRESSION(225597): Can't select a text box or web view on a page when VO is on.
https://bugs.webkit.org/show_bug.cgi?id=180756
<rdar://problem/35996158>

Reviewed by Brent Fulgham.

Source/WebCore:

No new tests.

  • platform/mac/EventLoopMac.mm:

(WebCore::EventLoop::cycle):

Source/WebKit:

  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::AccessibilityProcessSuspendedNotification):

  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::shouldLeakBoost):

  • WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-OSX.plist:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeProcess):

12:01 PM Changeset in webkit [225862] by graouts@webkit.org
  • 8 edits in trunk

[Web Animations] Implement the "updating the finished state" procedure
https://bugs.webkit.org/show_bug.cgi?id=180743
<rdar://problem/36017232>

Reviewed by Simon Fraser.

Source/WebCore:

The Web Animations spec defines a procedure for "updating the finished state", which should run as the timeline time
changes and is responsible for ultimately triggering finish events and fulfil the "finished" promise. The procedure
allows for two flags to control its behavior: didSeek and synchronouslyNotify. When synchronouslyNotify is true, the
"finish notification steps" procedure is ran right away, otherwise it's queued as a microtask.

In this patch we introduce the notion of "hold time", which is the time held while an animation is paused. It will be
set by the pause() and play() method in future patches.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::updateAnimations): Update the finished state as the timeline time changes with both flags
set to false.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::currentTime const): Add a private currentTime(bool) variant which allows for the hold time to
be ignored in case updateFinishedState() was called with the didSeek flag set to false.
(WebCore::WebAnimation::updateFinishedState): Implement the procedure as specified with all spec-mandated steps inline.
(WebCore::WebAnimation::scheduleMicrotaskIfNeeded): Schedule a microtask to complete the "finish notification steps"
if we haven't scheduled a microtask before.
(WebCore::WebAnimation::performMicrotask): Perform the microtask if the "finish notification steps" procedure hasn't
been canceled after it was originally scheduled, as tracked by the m_finishNotificationStepsMicrotaskPending flag, since
microtasks are not presently cancelable.
(WebCore::WebAnimation::finishNotificationSteps): Implement the procedure as specified with all spec-mandated steps inline,
dispatching a "finish" events and fulfilling the "finished" promise.

  • animation/WebAnimation.h:
  • animation/WebAnimation.idl:
  • dom/EventNames.h:

LayoutTests:

Rebase some WPT expectations with minor progressions due to exposing the "onfinish" property.

  • http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:
11:38 AM Changeset in webkit [225861] by msaboff@apple.com
  • 11 edits in trunk/Source/JavaScriptCore

Unreviewed rollout of r225695. Caused a crash on yahoo login page.

That bug tracked in https://bugs.webkit.org/show_bug.cgi?id=180761.

11:31 AM Changeset in webkit [225860] by jmarcell@apple.com
  • 11 edits in tags/Safari-605.1.18/Source/JavaScriptCore

Revert r225695. rdar://problem/35914716

11:26 AM Changeset in webkit [225859] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Fix crash under Document::visualUpdatesSuppressionTimerFired()
https://bugs.webkit.org/show_bug.cgi?id=180758
Document::visualUpdatesSuppressionTimerFired

Reviewed by Zalan Bujtas.

Speculative fix for crash under visualUpdatesSuppressionTimerFired() where view()
can be null. Add null checks for the view() in all code called from this function.

  • dom/Document.cpp:

(WebCore::Document::setVisualUpdatesAllowed):
(WebCore::Document::visualUpdatesSuppressionTimerFired):

11:24 AM Changeset in webkit [225858] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

[iOS] Further Trim WebContent Process sandbox
https://bugs.webkit.org/show_bug.cgi?id=180727
<rdar://problem/18899506>

Reviewed by Eric Carlson.

Take another pass over the contents of the file and remove addition items that
don't have call sites in WebKit.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
11:22 AM Changeset in webkit [225857] by mark.lam@apple.com
  • 8 edits
    2 adds in trunk

Fill out some Poisoned APIs, fix some bugs, and add some tests.
https://bugs.webkit.org/show_bug.cgi?id=180724
<rdar://problem/36006884>

Reviewed by JF Bastien.

Source/JavaScriptCore:

  • runtime/StructureTransitionTable.h:

Source/WTF:

Also rename Int32Poisoned to ConstExprPoisoned. The key it takes is actually a
uint32_t. So, Int32 is really a misnomer. In addition, the key needs to be a
constexpr. So, ConstExprPoisoned is a better name for it.

  • wtf/Poisoned.cpp:

(WTF::makePoison):

  • wtf/Poisoned.h:

(WTF::PoisonedImplHelper::asReference):
(WTF::PoisonedImpl::PoisonedImpl):
(WTF::PoisonedImpl::clear):
(WTF::PoisonedImpl::operator* const):
(WTF::PoisonedImpl::operator-> const):
(WTF::PoisonedImpl::operator== const):
(WTF::PoisonedImpl::operator!= const):
(WTF::PoisonedImpl::operator< const):
(WTF::PoisonedImpl::operator<= const):
(WTF::PoisonedImpl::operator> const):
(WTF::PoisonedImpl::operator>= const):
(WTF::PoisonedImpl::operator=):
(WTF::PoisonedImpl::swap):
(WTF::PoisonedImpl::exchange):
(WTF::swap):
(WTF::makePoison):
(WTF::PoisonedImpl::operator==): Deleted.

Tools:

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/ConstExprPoisoned.cpp: Added.

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WTF/Poisoned.cpp: Added.

(TestWebKitAPI::initializeTestPoison):
(TestWebKitAPI::TEST):

11:04 AM Changeset in webkit [225856] by Jonathan Bedard
  • 29 edits in trunk/Tools

webkitpy: Better name-version mapping (Part 2)
https://bugs.webkit.org/show_bug.cgi?id=179621
<rdar://problem/35589585>

Reviewed by David Kilzer.

Now that we have a central mapping of version numbers to version names, this
mapping should be used to compute version names. This patch treats passes versions
as objects, only mapping them to names when strings are needed.

  • Scripts/webkitpy/common/system/platforminfo.py:

(PlatformInfo.init): Store os_version as a version object instead of a string.
(PlatformInfo.os_version_name): Convert os_version to a string through the VersionNameMap.

  • Scripts/webkitpy/common/system/platforminfo_mock.py:

(MockPlatformInfo.init): Store os_version as a version object.
(MockPlatformInfo.os_version_name): Mirror PlatformInfo.

  • Scripts/webkitpy/common/system/platforminfo_unittest.py:

(TestPlatformInfo.test_real_code): Only Mac and Windows have defined version objects.
(TestPlatformInfo.test_os_version): Deleted, this behavior is now managed by VersionNameMap.

  • Scripts/webkitpy/common/version.py:

(Version.cmp): Allow a version object to be compared with 'None'.

  • Scripts/webkitpy/common/version_name_map.py:

(VersionNameMap.map): Check for the apple_additions VersionNameMap.
(VersionNameMap.init): Add a wincairo mapping, the same as the win mapping.

  • Scripts/webkitpy/common/version_unittest.py:

(VersionTestCase.test_compare_versions): Test comparing a version object to 'None'.

  • Scripts/webkitpy/layout_tests/models/test_configuration.py:

(TestConfiguration.init): Strip formatting from version name. Note that this object still
accepts a string because the version string implicitly contains the platform as well.

  • Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Win7 should be 7SP0 as

it is in the VersionNameMap.

  • Scripts/webkitpy/port/apple.py:

(ApplePort): Replace VERSION_FALLBACK_ORDER with a minimum and maximum version. This is required
because it may be the case that scripts are aware of more versions than the port actually supports.
(ApplePort.determine_full_port_name): Use the host operating system to compute the full port name.
(ApplePort._allowed_versions): Return a list of valid port versions by iterating through the
VersionNameMap.
(ApplePort._generate_all_test_configurations): Compute a list of configurations by iterating through
_allowed_versions and converting each version to a string.
(ApplePort._apple_baseline_path): Return a layout test expectation directory inside apple_additions.
(ApplePort._skipped_file_search_paths): Deleted.
(ApplePort._allowed_port_names): Deleted.
(ApplePort._future_port_name): Deleted.

  • Scripts/webkitpy/port/base.py:

(Port.init): Replace _version string with _os_version object.
(Port.version_name): Convert version object to string.
(Port.test_configuration): Pass version string to TestConfiguration.
(Port.version): Deleted.

  • Scripts/webkitpy/port/darwin_testcase.py:

(DarwinTest.assert_name): Convert an os_version_string to a version object and construct a port.

  • Scripts/webkitpy/port/factory_unittest.py:

(FactoryTest.test_mac): Replace version strings with version objects.
(FactoryTest.test_win): Ditto.

  • Scripts/webkitpy/port/gtk.py:

(GtkPort._generate_all_test_configurations): Replace _version with version_name().

  • Scripts/webkitpy/port/ios.py:

(IOSPort.version_name): Both Simulator and device share the same version-name convention.
(IOSPort._generate_all_test_configurations): Replace _version with version_name().
(IOSPort.default_baseline_search_path): Use the internal mapping of version names to construct
apple_additions expectations.
(IOSPort._apple_additions_path): Deleted.

  • Scripts/webkitpy/port/ios_device.py:

(IOSDevicePort.ios_version): Return None if no version is defined.

  • Scripts/webkitpy/port/ios_device_unittest.py:

(IOSDeviceTest):
(IOSDeviceTest.test_layout_test_searchpath_with_apple_additions): Conform with the new mock
apple_additions.
(IOSDeviceTest.make_port): Deleted.

  • Scripts/webkitpy/port/ios_simulator.py:

(IOSSimulatorPort._create_devices): Use Version object over list of version strings.

  • Scripts/webkitpy/port/ios_simulator_unittest.py:

(IOSSimulatorTest):
(IOSSimulatorTest.make_port): Use iOS 11 as the default version for testing.
(IOSSimulatorTest.test_layout_test_searchpath_with_apple_additions): Conform with the new
mock apple_additions.

  • Scripts/webkitpy/port/ios_testcase.py:

(IOSTest.make_port): Use iOS 11 as the default version for testing.

  • Scripts/webkitpy/port/mac.py:

(MacPort):
(MacPort.init): Use Version object for _os_version.
(MacPort.default_baseline_search_path): Use the internal mapping of version names to construct
apple_additions expectations.
(MacPort.configuration_specifier_macros): Automatically construct macros based on VersionNameMap.
(MacPort._apple_additions_path): Deleted.

  • Scripts/webkitpy/port/mac_unittest.py:

(MacTest): Use Version object instead of version string.
(MacTest.test_version):

  • Scripts/webkitpy/port/port_testcase.py:

(bind_mock_apple_additions): Add a mock VersionNameMap to mock apple_additions.
(bind_mock_apple_additions.MockAppleAdditions):
(bind_mock_apple_additions.MockAppleAdditions.version_name_mapping):

  • Scripts/webkitpy/port/test.py:

(TestPort):
(TestPort.init): Use VersionNameMap to compute the correct Version from a port name.
(TestPort.version_name): Mirror Port object.
(TestPort.baseline_search_path): Replace win7 with 7sp0.
(TestPort._all_systems): Ditto.
(TestPort.configuration_specifier_macros): Ditto.

  • Scripts/webkitpy/port/win.py:

(WinPort):
(WinPort.init): Construct Version object from port name.
(WinPort.default_baseline_search_path): Use the internal mapping of version names to construct
apple_additions expectations.
(WinCairoPort):
(WinCairoPort.default_baseline_search_path): Use MIN/MAX instead of the VERSION_FALLBACK_ORDER.
(WinCairoPort._future_port_name): Deleted.

  • Scripts/webkitpy/port/win_unittest.py:

(WinPortTest.test_baseline_search_path): Add new Windows versions not previously included.
(WinPortTest._assert_version): Handle expected_version as a Version object.
(WinPortTest.test_versions): Pass Version objects instead of version strings.

  • Scripts/webkitpy/port/wpe.py:

(WPEPort._generate_all_test_configurations): Replace _version with version_name().

  • Scripts/webkitpy/tool/commands/queries_unittest.py:

(PrintExpectationsTest.test_multiple): Replace win7 with 7sp0.
(PrintBaselinesTest.test_multiple): Ditto.

  • Scripts/webkitpy/tool/commands/queues.py:

(PatchProcessingQueue._new_port_name_from_old): Use os_version_name() instead of Version object.

10:43 AM Changeset in webkit [225855] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

ASSERT(LayoutDisallowedScope::isLayoutAllowed()) whenever hitting Enter in Web Inspector console
https://bugs.webkit.org/show_bug.cgi?id=180690

Reviewed by Simon Fraser.

Defer text replacement notification until after layout is done to avoid unexpected forced layouts.

Covered by existing tests.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::disableAccessibility):
(WebCore::AXObjectCache::remove):
(WebCore::filterMapForRemoval):
(WebCore::filterListForRemoval):
(WebCore::AXObjectCache::prepareForDocumentDestruction):
(WebCore::AXObjectCache::performDeferredCacheUpdate):
(WebCore::AXObjectCache::deferTextReplacementNotificationForTextControl):
(WebCore::filterForRemoval): Deleted.

  • accessibility/AXObjectCache.h: Need to use the base (Element) class since

we can't call is<HTMLTextFormControlElement> in Node d'tor.
(WebCore::AXObjectCache::deferTextReplacementNotificationForTextControl):

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::setInnerTextValue):

10:36 AM Changeset in webkit [225854] by Ryan Haddad
  • 4 edits in trunk/Source/WebCore

Unreviewed, rolling out r225836.

Broke the Windows build.

Reverted changeset:

"Unify some WebGL sources"
https://bugs.webkit.org/show_bug.cgi?id=180726
https://trac.webkit.org/changeset/225836

10:35 AM Changeset in webkit [225853] by dbates@webkit.org
  • 4 edits in trunk/Source/WebKit

Move out-parameter in API::FormClient::willBeginInputSession() to the end of the parameter list
https://bugs.webkit.org/show_bug.cgi?id=180754

Reviewed by Wenson Hsieh.

Group all in-parameters in the signature of API::FormClient::willBeginInputSession() at
the front of the parameter list instead of interspersing in- and out- parameters.

No functionality changed. So, no new tests.

  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]):

  • WebProcess/InjectedBundle/APIInjectedBundleFormClient.h:

(API::InjectedBundle::FormClient::willBeginInputSession):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::elementDidFocus):

10:26 AM Changeset in webkit [225852] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Updated Expectations for http/tests/cache/disk-cache/disk-cache-204-status-code.html
https://bugs.webkit.org/show_bug.cgi?id=162685

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
10:20 AM Changeset in webkit [225851] by Caio Lima
  • 3 edits in trunk/Source/JavaScriptCore

[ESNext][BigInt] Breking tests on Debug build and 32-bits due to missing Exception check
https://bugs.webkit.org/show_bug.cgi?id=180746

Reviewed by Saam Barati.

We have some uncatched exceptions that could happen due to OOM into
JSBigInt::allocateFor and JSBigInt::toStringGeneric. This patching is
catching such exceptions properly.

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::allocateFor):
(JSC::JSBigInt::parseInt):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::toStringSlowCase const):

10:13 AM Changeset in webkit [225850] by Chris Dumez
  • 5 edits in trunk/Source/WebKit

[iOS] Take process assertion to prevent the service worker process from getting suspended
https://bugs.webkit.org/show_bug.cgi?id=180735

Reviewed by Brady Eidson.

Take process assertion to prevent the service worker process from getting suspended while
it is still needed. We use the same policy as for the network process, meaning that
unsuspended WebContent processes prevent the service worker process from getting suspended.

This patch still does not enable service workers on iOS. The demo at https://mdn.github.io/sw-test/
appears to work. However, things are not working as expected for mobile.twitter.com where I
see the fetches intercepted by the service worker fail when offline for some reason (unrelated
to process suspension).

  • UIProcess/WebProcessPool.cpp:

(WebKit::m_foregroundWebProcessCounter):
(WebKit::m_backgroundWebProcessCounter):
(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::updateProcessAssertions):
(WebKit::WebProcessPool::reinstateNetworkProcessAssertionState):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didSetAssertionState):

  • UIProcess/WebProcessProxy.h:
10:02 AM Changeset in webkit [225849] by aestes@apple.com
  • 17 edits
    3 copies
    1 move
    2 adds
    4 deletes in trunk

[Payment Request] Remove ApplePayPaymentMethodUpdateEvent and use PaymentDetailsModifiers instead
https://bugs.webkit.org/show_bug.cgi?id=180737
<rdar://problem/36013152>

Reviewed by Brady Eidson.

Source/WebCore:

Instead of firing a non-standard "applepaypaymentmethodupdate" event when the payment method
changes, use the PaymentDetailsModifier mechanism to allow the merchant to specify override
totals and additional display items per payment method type.

Test: http/tests/ssl/applepay/ApplePayPaymentDetailsModifier.https.html

  • DerivedSources.make:
  • Modules/applepay/ApplePayLineItem.idl:
  • Modules/applepay/ApplePayPaymentMethod.h:
  • Modules/applepay/ApplePayPaymentMethod.idl:
  • Modules/applepay/ApplePayPaymentMethodType.h: Added.
  • Modules/applepay/ApplePayPaymentMethodType.idl: Added.
  • Modules/applepay/cocoa/PaymentMethodCocoa.mm:
  • Modules/applepay/paymentrequest/ApplePayModifier.h: Added.
  • Modules/applepay/paymentrequest/ApplePayModifier.idl: Added.
  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:

(WebCore::ApplePayPaymentHandler::show):
(WebCore::ApplePayPaymentHandler::computeTotalAndLineItems):
(WebCore::ApplePayPaymentHandler::detailsUpdated):
(WebCore::ApplePayPaymentHandler::shippingAddressUpdated):
(WebCore::ApplePayPaymentHandler::shippingOptionUpdated):
(WebCore::ApplePayPaymentHandler::paymentMethodUpdated):
(WebCore::ApplePayPaymentHandler::didSelectPaymentMethod):

  • Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
  • Modules/applepay/paymentrequest/ApplePayPaymentMethodUpdateEvent.cpp: Removed.
  • Modules/applepay/paymentrequest/ApplePayPaymentMethodUpdateEvent.h: Removed.
  • Modules/paymentrequest/PaymentRequest.h:
  • Modules/paymentrequest/PaymentRequest.idl:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/EventNames.h:
  • dom/EventNames.in:
  • testing/MockPaymentCoordinator.cpp:

(WebCore::convert):
(WebCore::MockPaymentCoordinator::updateTotalAndLineItems):
(WebCore::MockPaymentCoordinator::completeShippingMethodSelection):
(WebCore::MockPaymentCoordinator::completeShippingContactSelection):
(WebCore::MockPaymentCoordinator::completePaymentMethodSelection):

  • testing/MockPaymentCoordinator.h:
  • testing/MockPaymentCoordinator.idl:

LayoutTests:

  • http/tests/ssl/applepay/ApplePayPaymentDetailsModifier.https-expected.txt: Added.
  • http/tests/ssl/applepay/ApplePayPaymentDetailsModifier.https.html: Added.
  • http/tests/ssl/applepay/ApplePayPaymentMethodUpdateEvent.https-expected.txt: Removed.
  • http/tests/ssl/applepay/ApplePayPaymentMethodUpdateEvent.https.html: Removed.
9:57 AM Changeset in webkit [225848] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Added missing expectation file for fast/text/user-installed-fonts/shadow-postscript-family.html
https://bugs.webkit.org/show_bug.cgi?id=180062

Unreviewed test gardening.

  • platform/ios/TestExpectations:
9:37 AM Changeset in webkit [225847] by jmarcell@apple.com
  • 1 copy in tags/Safari-605.1.18

Tag Safari-605.1.18.

9:29 AM Changeset in webkit [225846] by Ms2ger@igalia.com
  • 5 edits
    8 adds in trunk/LayoutTests

[GTK][WPE] Test gardening
https://bugs.webkit.org/show_bug.cgi?id=180751

Unreviewed test gardening.

  • platform/gtk/TestExpectations:
  • platform/gtk/http/tests/inspector/network/fetch-response-body-expected.txt:
  • platform/gtk/http/tests/inspector/network/xhr-response-body-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/encoding/textdecoder-fatal-single-byte-expected.txt: Added.
  • platform/wpe/TestExpectations:
  • platform/wpe/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt: Added.
  • platform/wpe/imported/w3c/web-platform-tests/encoding/textdecoder-fatal-single-byte-expected.txt: Added.
9:29 AM Changeset in webkit [225845] by sbarati@apple.com
  • 3 edits
    1 add in trunk

Fix how JSFunction handles "caller" and "arguments" for functions that don't have those properties
https://bugs.webkit.org/show_bug.cgi?id=163579
<rdar://problem/35455798>

Reviewed by Mark Lam.

JSTests:

  • stress/caller-and-arguments-properties-for-functions-that-dont-have-them.js: Added.

(assert):
(test1):
(i.test1):
(i.test1.C):
(i.test1.async.foo):
(i.test1.foo):
(test2):

Source/JavaScriptCore:

Some functions in JavaScript do not have the "caller" and "arguments" properties.
For example, strict functions do not. When reading our code that dealt with these
types of functions, it was simply all wrong. We were doing weird things depending
on the method table hook. This patch fixes this by doing what we should've been
doing all along: when the JSFunction does not own the "caller"/"arguments" property,
it should defer to its base class implementation for the various method table hooks.

  • runtime/JSFunction.cpp:

(JSC::JSFunction::put):
(JSC::JSFunction::deleteProperty):
(JSC::JSFunction::defineOwnProperty):

9:19 AM Changeset in webkit [225844] by sbarati@apple.com
  • 3 edits
    1 add in trunk

TypeCheckHoistingPhase needs to emit a CheckStructureOrEmpty if it's doing it for |this|
https://bugs.webkit.org/show_bug.cgi?id=180734
<rdar://problem/35640547>

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value.js: Added.

(isPropertyOfType):
(
getProperties):
(getObjects):
(
getRandomObject):
(theClass.):
(theClass):
(childClass):
(counter.catch):

Source/JavaScriptCore:

The |this| value may be TDZ. If type check hoisting phase
hoists a CheckStructure to it, it will crash. This patch
makes it so we emit CheckStructureOrEmpty for |this|.

  • dfg/DFGTypeCheckHoistingPhase.cpp:

(JSC::DFG::TypeCheckHoistingPhase::run):

9:10 AM WebKitGTK/Gardening/Calendar edited by Ms2ger@igalia.com
(diff)
6:51 AM WebKitGTK/Releasing edited by Claudio Saavedra
Update location of the make-dist script. (diff)
4:39 AM Changeset in webkit [225843] by Konstantin Tokarev
  • 1 edit in trunk/LayoutTests/ChangeLog

Unreviewed, rolling out r179000.

There are tests failing in 32-bits and Debug builds

Reverted changeset:

https://trac.webkit.org/changeset/179000

4:09 AM Changeset in webkit [225842] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.19.3

WebKitGTK+ 2.19.3

4:08 AM Changeset in webkit [225841] by Carlos Garcia Campos
  • 4 edits in trunk

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.19.3 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.19.3.

Dec 12, 2017:

11:51 PM Changeset in webkit [225840] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Optimize Object.assign by single transition acceleration
https://bugs.webkit.org/show_bug.cgi?id=180644

Reviewed by Saam Barati.

Handling single transition is critical. Since this get() function is only used
in Structure.cpp's 2 functions and it is quite small, we can annotate inline
to accelerate it.

This improves SixSpeed/object-assign.es6 by 2.8%.

baseline patched

object-assign.es6 382.3548+-8.0461 371.6496+-5.7439 might be 1.0288x faster

  • runtime/Structure.cpp:

(JSC::StructureTransitionTable::get const):

10:19 PM Changeset in webkit [225839] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Styles Redesign: navigating away from empty value should remove CSS property
https://bugs.webkit.org/show_bug.cgi?id=180508

Reviewed by Devin Rousso.

Remove a property when navigating away from it (e.g. to the next/previous property,
or outside of the styles panel entirely) and either its name or value is empty:

color: [ ]->
<-[ ]: red
<-[color]:

Don't remove a property when navigating from an empty value to a non-empty name:

color: <-[ ]

Always remove a property when both name and value are empty.

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):

  • UserInterface/Views/SpreadsheetTextField.js:

(WI.SpreadsheetTextField.prototype._handleBlur):
(WI.SpreadsheetTextField.prototype.get valueBeforeEditing): Deleted.

8:47 PM Changeset in webkit [225838] by Chris Dumez
  • 3 edits in trunk/LayoutTests/imported/w3c

Re-sync imported/w3c/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html
https://bugs.webkit.org/show_bug.cgi?id=180698

Reviewed by Alex Christensen.

Re-sync imported/w3c/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html
after https://github.com/w3c/web-platform-tests/pull/8622.

  • web-platform-tests/service-workers/service-worker/interfaces-sw.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js:
8:05 PM Changeset in webkit [225837] by Alan Bujtas
  • 13 edits in trunk/Source/WebCore

is<HTMLTextFormControlElement> reports the input type.
https://bugs.webkit.org/show_bug.cgi?id=180721
<rdar://problem/36005123>

Reviewed by Ryosuke Niwa.

This patch ensures that is<HTMLTextFormControlElement> consistently returns true even
when the input type changes from text to non-text (checkbox etc).

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::selectText):

  • dom/Element.h:

(WebCore::Element::isTextFormControlElement const):
(WebCore::Element::isTextField const):
(WebCore::Element::isTextFormControl const): Deleted.

  • editing/Editor.cpp:

(WebCore::Editor::selectionForCommand):
(WebCore::Editor::setBaseWritingDirection):
(WebCore::findFirstMarkable):

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::selectAll):

  • html/FormController.cpp:

(WebCore::FormController::formElementsCharacterCount const):

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::directionality const):

  • html/HTMLInputElement.h:
  • html/HTMLTextAreaElement.h:
  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::didEditInnerTextValue):
(WebCore::HTMLTextFormControlElement::selectedText const):
(WebCore::HTMLTextFormControlElement::setSelectionRange):
(WebCore::HTMLTextFormControlElement::selectionStart const):
(WebCore::HTMLTextFormControlElement::computeSelectionStart const):
(WebCore::HTMLTextFormControlElement::selectionEnd const):
(WebCore::HTMLTextFormControlElement::computeSelectionEnd const):
(WebCore::HTMLTextFormControlElement::selectionDirection const):
(WebCore::HTMLTextFormControlElement::computeSelectionDirection const):
(WebCore::HTMLTextFormControlElement::selection const):
(WebCore::HTMLTextFormControlElement::selectionChanged):
(WebCore::HTMLTextFormControlElement::lastChangeWasUserEdit const):
(WebCore::HTMLTextFormControlElement::setInnerTextValue):
(WebCore::HTMLTextFormControlElement::valueWithHardLineBreaks const):
(WebCore::enclosingTextFormControl):

  • html/HTMLTextFormControlElement.h:

(isType):

  • rendering/HitTestResult.cpp:

(WebCore::HitTestResult::isOverTextInsideFormControlElement const):

7:51 PM Changeset in webkit [225836] by dino@apple.com
  • 4 edits in trunk/Source/WebCore

Unify some WebGL sources
https://bugs.webkit.org/show_bug.cgi?id=180726

Rubber-stamped by Keith, weeks ago.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/canvas/WebGLRenderingContextBase.cpp:
7:26 PM Changeset in webkit [225835] by fpizlo@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

Structure, StructureRareData, and PropertyTable should be in IsoSubspaces
https://bugs.webkit.org/show_bug.cgi?id=180732

Rubber stamped by Mark Lam.

We should eventually move all fixed-size cells into IsoSubspaces. I don't know if they are
scalable enough to support that, so we should do it carefully.

  • heap/MarkedSpace.cpp:
  • runtime/PropertyMapHashTable.h:
  • runtime/Structure.h:
  • runtime/StructureRareData.h:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
7:04 PM Changeset in webkit [225834] by sbarati@apple.com
  • 4 edits
    1 add in trunk

We need to model effects of Spread(@PhantomCreateRest) in Clobberize/PreciseLocalClobberize
https://bugs.webkit.org/show_bug.cgi?id=180725
<rdar://problem/35970511>

Reviewed by Michael Saboff.

JSTests:

  • stress/model-effects-properly-of-spread-over-phantom-create-rest.js: Added.

(f1):
(f2):
(let.o2.valueOf):

Source/JavaScriptCore:

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGPreciseLocalClobberize.h:

(JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):

6:52 PM Changeset in webkit [225833] by dbates@webkit.org
  • 6 edits
    1 copy in trunk

[WK] Add modern WebKit SPI to set auto fill button type and query if the auto fill button is enabled
https://bugs.webkit.org/show_bug.cgi?id=180686

Reviewed by Alex Christensen.

Source/WebKit:

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:

(-[WKWebProcessPlugInNodeHandle isHTMLInputElementAutoFillButtonEnabled]):
(toAutoFillButtonType):
(-[WKWebProcessPlugInNodeHandle setHTMLInputElementAutoFillButtonEnabledWithButtonType:]):

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/ClickAutoFillButton.mm:

(-[ClickAutoFillButton webProcessPlugIn:didCreateBrowserContextController:]):

6:49 PM Changeset in webkit [225832] by Yusuke Suzuki
  • 42 edits
    1 copy
    12 adds
    2 deletes in trunk

[JSC] Implement optimized WeakMap and WeakSet
https://bugs.webkit.org/show_bug.cgi?id=179929

Reviewed by Saam Barati.

JSTests:

  • microbenchmarks/weak-map-key.js:
  • microbenchmarks/weak-set-key.js: Copied from JSTests/microbenchmarks/weak-map-key.js.

(assert):
(objectKey):
(let.start.Date.now):

  • stress/basic-weakmap.js: Added.

(shouldBe):
(test):

  • stress/basic-weakset.js: Added.

(shouldBe):
(test.set new):

  • stress/weakmap-cse-set-break.js: Added.

(shouldBe):
(test):

  • stress/weakmap-cse.js: Added.

(shouldBe):
(test):

  • stress/weakmap-gc.js: Added.

(test):

  • stress/weakset-cse-add-break.js: Added.

(shouldBe):
(test.set new):

  • stress/weakset-cse.js: Added.

(shouldBe):
(test.set new):

  • stress/weakset-gc.js: Added.

(test.set add):
(test.set new):
(test):

Source/JavaScriptCore:

This patch introduces WeakMapImpl to optimize WeakMap and WeakSet.
This is similar to HashMapImpl. But,

  1. WeakMapImpl's bucket is not allocated in GC heap since WeakMap

do not need to have iterators.

  1. WeakMapImpl's buffer is allocated in JSValue Gigacage instead

of auxiliary buffer. This is because we would like to allocate buffer
when finalizing GC. At that time, WeakMapImpl prunes dead entries and
shrink it if necessary. However, allocating from the GC heap during
finalization is not allowed.

In particular, (2) is important since it ensures any WeakMap operations
do not cause GC. Since GC may collect dead keys in WeakMap, rehash WeakMap,
and reallocate/change WeakMap's buffer, ensuring that any WeakMap operations
do not cause GC makes our implementation simple. To ensure this, we place
DisallowGC for each WeakMap's interface.

In DFG, we introduce WeakMapGet and ExtractValueFromWeakMapGet nodes.
WeakMapGet looks up entry in WeakMapImpl and returns value. If it is
WeakMap, it returns value. And it returns key if it is WeakSet. If it
does not find a corresponding entry, it returns JSEmpty.
ExtractValueFromWeakMapGet converts JSEmpty to JSUndefined.

This patch improves WeakMap and WeakSet operations.

baseline patched

weak-set-key 240.6932+-10.4923 148.7606+-6.1784 definitely 1.6180x faster
weak-map-key 174.3176+-8.2680 151.7053+-6.8723 definitely 1.1491x faster

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • dfg/DFGAbstractHeap.h:
  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGNode.h:

(JSC::DFG::Node::hasHeapPrediction):

  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileExtractValueFromWeakMapGet):
(JSC::DFG::SpeculativeJIT::compileWeakMapGet):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileExtractValueFromWeakMapGet):
(JSC::FTL::DFG::LowerDFGToB3::compileWeakMapGet):

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::weakSetEntries):
Existing code is incorrect. They can run GC and break WeakMap's iterator.
We introduce takeSnapshot function to WeakMapImpl, which retrieves live
entries without causing any GC.

  • runtime/HashMapImpl.h:

(JSC::shouldShrink):
(JSC::shouldRehashAfterAdd):
(JSC::nextCapacity):
(JSC::HashMapImpl::shouldRehashAfterAdd const):
(JSC::HashMapImpl::shouldShrink const):
(JSC::HashMapImpl::rehash):
(JSC::WeakMapHash::hash): Deleted.
(JSC::WeakMapHash::equal): Deleted.

  • runtime/Intrinsic.cpp:

(JSC::intrinsicName):

  • runtime/Intrinsic.h:
  • runtime/JSWeakMap.cpp:
  • runtime/JSWeakMap.h:
  • runtime/JSWeakSet.cpp:
  • runtime/JSWeakSet.h:
  • runtime/VM.cpp:
  • runtime/WeakGCMap.h:

(JSC::WeakGCMap::forEach): Deleted.

  • runtime/WeakMapBase.cpp: Removed.
  • runtime/WeakMapBase.h: Removed.
  • runtime/WeakMapConstructor.cpp:

(JSC::constructWeakMap):

  • runtime/WeakMapImpl.cpp: Added.

(JSC::WeakMapImpl<WeakMapBucket>::destroy):
(JSC::WeakMapImpl<WeakMapBucket>::visitChildren):
(JSC::WeakMapImpl<WeakMapBucket>::estimatedSize):
(JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKey>>::visitWeakReferences):
(JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKeyValue>>::visitWeakReferences):
(JSC::WeakMapImpl<WeakMapBucket>::finalizeUnconditionally):
(JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKey>>::takeSnapshot):
(JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKeyValue>>::takeSnapshot):

  • runtime/WeakMapImpl.h: Added.

(JSC::jsWeakMapHash):
(JSC::nextCapacityAfterRemoveBatching):
(JSC::WeakMapBucket::setKey):
(JSC::WeakMapBucket::setValue):
(JSC::WeakMapBucket::key const):
(JSC::WeakMapBucket::value const):
(JSC::WeakMapBucket::copyFrom):
(JSC::WeakMapBucket::offsetOfKey):
(JSC::WeakMapBucket::offsetOfValue):
(JSC::WeakMapBucket::extractValue):
(JSC::WeakMapBucket::isEmpty):
(JSC::WeakMapBucket::deletedKey):
(JSC::WeakMapBucket::isDeleted):
(JSC::WeakMapBucket::makeDeleted):
(JSC::WeakMapBucket::visitAggregate):
(JSC::WeakMapBucket::clearValue):
(JSC::WeakMapBuffer::allocationSize):
(JSC::WeakMapBuffer::buffer const):
(JSC::WeakMapBuffer::create):
(JSC::WeakMapBuffer::reset):
(JSC::WeakMapImpl::WeakMapImpl):
(JSC::WeakMapImpl::finishCreation):
(JSC::WeakMapImpl::get):
(JSC::WeakMapImpl::has):
(JSC::WeakMapImpl::add):
(JSC::WeakMapImpl::remove):
(JSC::WeakMapImpl::size const):
(JSC::WeakMapImpl::offsetOfBuffer):
(JSC::WeakMapImpl::offsetOfCapacity):
(JSC::WeakMapImpl::findBucket):
(JSC::WeakMapImpl::buffer const):
(JSC::WeakMapImpl::forEach):
(JSC::WeakMapImpl::shouldRehashAfterAdd const):
(JSC::WeakMapImpl::shouldShrink const):
(JSC::WeakMapImpl::canUseBucket):
(JSC::WeakMapImpl::addInternal):
(JSC::WeakMapImpl::findBucketAlreadyHashed):
(JSC::WeakMapImpl::rehash):
(JSC::WeakMapImpl::checkConsistency const):
(JSC::WeakMapImpl::makeAndSetNewBuffer):
(JSC::WeakMapImpl::assertBufferIsEmpty const):
(JSC::WeakMapImpl::DeadKeyCleaner::target):

  • runtime/WeakMapPrototype.cpp:

(JSC::WeakMapPrototype::finishCreation):
(JSC::protoFuncWeakMapGet):
(JSC::protoFuncWeakMapHas):

  • runtime/WeakSetConstructor.cpp:

(JSC::constructWeakSet):

  • runtime/WeakSetPrototype.cpp:

(JSC::WeakSetPrototype::finishCreation):
(JSC::protoFuncWeakSetHas):
(JSC::protoFuncWeakSetAdd):

Source/WTF:

We introduce JSValueMalloc, which is specialized malloc scheme with Gigacage::JSValue.
This is used for WeakMapImpl's buffer.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/JSValueMalloc.cpp: Added.

(WTF::tryJSValueMalloc):
(WTF::jsValueMalloc):
(WTF::jsValueRealloc):
(WTF::jsValueFree):

  • wtf/JSValueMalloc.h: Added.

(WTF::JSValueMalloc::malloc):
(WTF::JSValueMalloc::tryMalloc):
(WTF::JSValueMalloc::realloc):
(WTF::JSValueMalloc::free):

  • wtf/MallocPtr.h:

(WTF::MallocPtr::~MallocPtr):
(WTF::MallocPtr::malloc):
(WTF::MallocPtr::tryMalloc):
(WTF::MallocPtr::realloc):
We extend MallocPtr to adopt malloc scheme as its template parameter.

6:35 PM Changeset in webkit [225831] by fpizlo@apple.com
  • 27 edits
    7 adds in trunk/Source

It should be possible to flag a cell for unconditional finalization
https://bugs.webkit.org/show_bug.cgi?id=180636

Reviewed by Saam Barati.

Source/JavaScriptCore:

UnconditionalFinalizers were annoying - you had to allocate them and you had to manage a
global linked list - but they had some nice properties:

  • You only did the hardest work (creating the UnconditionalFinalizer) on first GC where you survived and needed it.

-> Just needing it wasn't enough.
-> Just surviving wasn't enough.


The new API based on IsoSubspaces meant that just surviving was enough to cause unconditional
finalizer logic to be invoked. I think that's not great. InferredType got around this by
making InferredStructure a cell, but this was a gross hack. For one, it meant that
InferredStructure would survive during the GC in which its finalizer obviated the need for its
existence. It's not really an idiom I want us to repeat because it sounds like the sort of
thing that turns out to be subtly broken.

We really need to have a way of indicating when you have entered into the state that requires
your unconditional finalizer to be invoked. Basically, we want to be able to track the set of
objects that need unconditional finalizers. Only the subset of that set that overlaps with the
set of marked objects needs to be accurate. The easiest way to do this is a hierarchy of
bitvectors: one to say which MarkedBlocks have objects that have unconditional finalizers, and
another level to say which atoms within a MarkedBlock have unconditional finalizers.

This change introduces IsoCellSet, which couples itself to the MarkedAllocator of some
IsoSubspace to allow maintaining a set of objects (well, cells - you could do this with
auxiliaries) that belong to that IsoSubspace. It'll have undefined behavior if you try to
add/remove/contains an object that isn't in that IsoSubspace. For objects in that subspace,
you can add/remove/contains and forEachMarkedCell. The cost of each IsoCellSet is at worst
about 0.8% increase in size to every object in the subspace that the set is attached to. So,
it makes sense to have a handful per subspace max. This change only needs one per subspace,
but you could imagine more if we do this for WeakReferenceHarvester.

To absolutely minimize the possibility that this incurs costs, the add/remove/contains
functions can be used from any thread so long as forEachMarkedCell isn't running. This means
that InferredType only needs to add itself to the set during visitChildren. Thus, it needs to
both survive and need it for the hardest work to take place. The work of adding does involve
a gnarly load chain that ends in a CAS: load block handle from block, load index, load
segment, load bitvector, load bit -> if not set, then CAS. That's five dependent loads!
However, it's perfect for running in parallel since the only write operations are to widely
dispersed cache lines that contain the bits underlying the set.

The best part is how forEachMarkedCell works. That skips blocks that don't have any objects
that need unconditional finalizers, and only touches the memory of marked objects that have
the unconditional finalizer bit set. It will walk those objects in roughly address order. I
previously found that this speeds up walking over a lot of objects when I made similar changes
for DOM GC (calling visitAdditionalChildren via forEachMarkedCell rather than by walking a
HashSet).

This change makes InferredStructure be a malloc object again, but now it's in an IsoHeap.

My expectation for this change is that it's perf-neutral. Long-term, it gives us a path
forward for eliminating UnconditionalFinalizer and WeakReferenceHarvester while using
IsoSubspace in more places.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • heap/AtomIndices.h: Added.

(JSC::AtomIndices::AtomIndices):

  • heap/Heap.cpp:

(JSC::Heap::finalizeUnconditionalFinalizers):

  • heap/Heap.h:
  • heap/IsoCellSet.cpp: Added.

(JSC::IsoCellSet::IsoCellSet):
(JSC::IsoCellSet::~IsoCellSet):
(JSC::IsoCellSet::addSlow):
(JSC::IsoCellSet::didResizeBits):
(JSC::IsoCellSet::didRemoveBlock):
(JSC::IsoCellSet::sweepToFreeList):

  • heap/IsoCellSet.h: Added.
  • heap/IsoCellSetInlines.h: Added.

(JSC::IsoCellSet::add):
(JSC::IsoCellSet::remove):
(JSC::IsoCellSet::contains const):
(JSC::IsoCellSet::forEachMarkedCell):

  • heap/IsoSubspace.cpp:

(JSC::IsoSubspace::didResizeBits):
(JSC::IsoSubspace::didRemoveBlock):
(JSC::IsoSubspace::didBeginSweepingToFreeList):

  • heap/IsoSubspace.h:
  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::addBlock):
(JSC::MarkedAllocator::removeBlock):

  • heap/MarkedAllocator.h:
  • heap/MarkedAllocatorInlines.h:
  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::Handle::sweep):
(JSC::MarkedBlock::Handle::isEmpty): Deleted.

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::marks const):
(JSC::MarkedBlock::Handle::newlyAllocated const):

  • heap/MarkedBlockInlines.h:

(JSC::MarkedBlock::Handle::isAllocated):
(JSC::MarkedBlock::Handle::isEmpty):
(JSC::MarkedBlock::Handle::emptyMode):
(JSC::MarkedBlock::Handle::forEachMarkedCell):

  • heap/Subspace.cpp:

(JSC::Subspace::didResizeBits):
(JSC::Subspace::didRemoveBlock):
(JSC::Subspace::didBeginSweepingToFreeList):

  • heap/Subspace.h:
  • heap/SubspaceInlines.h:

(JSC::Subspace::forEachMarkedCell):

  • runtime/InferredStructure.cpp:

(JSC::InferredStructure::InferredStructure):
(JSC::InferredStructure::create): Deleted.
(JSC::InferredStructure::destroy): Deleted.
(JSC::InferredStructure::createStructure): Deleted.
(JSC::InferredStructure::visitChildren): Deleted.
(JSC::InferredStructure::finalizeUnconditionally): Deleted.
(JSC::InferredStructure::finishCreation): Deleted.

  • runtime/InferredStructure.h:
  • runtime/InferredStructureWatchpoint.cpp:

(JSC::InferredStructureWatchpoint::fireInternal):

  • runtime/InferredType.cpp:

(JSC::InferredType::visitChildren):
(JSC::InferredType::willStoreValueSlow):
(JSC::InferredType::makeTopSlow):
(JSC::InferredType::set):
(JSC::InferredType::removeStructure):
(JSC::InferredType::finalizeUnconditionally):

  • runtime/InferredType.h:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:

Source/WTF:

This adds ConcurrentVector, which is like SegmentedVector, but wastes some space to allow
resizing to proceed concurrently to access. It's not possible to resize concurrently to
resizing, concurrent read/writes aren't protected from racing if they access the same element,
and who knows what you'll get if you iterate up to size() while someone else append()s. The
key insight is to stash all prior copies of the spine, so that nobody crashes trying to access
a stale spine.

I'm going to want to do the same thing for FastBitVector, by creating a segmented WordOwner
class. That would require repeating the dance of having a spine that can resize while stashing
old versions. So, the spine resizing logic is abstracted behind ConcurrentBuffer. You could
use that as a kind of "concurrent vector" for immutable data. That's how ConcurrentVector uses
it: it's an immutable array of segment pointers.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/ConcurrentBuffer.h: Added.

(WTF::ConcurrentBuffer::ConcurrentBuffer):
(WTF::ConcurrentBuffer::~ConcurrentBuffer):
(WTF::ConcurrentBuffer::growExact):
(WTF::ConcurrentBuffer::grow):
(WTF::ConcurrentBuffer::array const):
(WTF::ConcurrentBuffer::operator[]):
(WTF::ConcurrentBuffer::operator[] const):
(WTF::ConcurrentBuffer::createArray):

  • wtf/ConcurrentVector.h: Added.

(WTF::ConcurrentVectorIterator::~ConcurrentVectorIterator):
(WTF::ConcurrentVectorIterator::operator* const):
(WTF::ConcurrentVectorIterator::operator-> const):
(WTF::ConcurrentVectorIterator::operator++):
(WTF::ConcurrentVectorIterator::operator== const):
(WTF::ConcurrentVectorIterator::operator!= const):
(WTF::ConcurrentVectorIterator::operator=):
(WTF::ConcurrentVectorIterator::ConcurrentVectorIterator):
(WTF::ConcurrentVector::~ConcurrentVector):
(WTF::ConcurrentVector::size const):
(WTF::ConcurrentVector::isEmpty const):
(WTF::ConcurrentVector::at):
(WTF::ConcurrentVector::at const):
(WTF::ConcurrentVector::operator[]):
(WTF::ConcurrentVector::operator[] const):
(WTF::ConcurrentVector::first):
(WTF::ConcurrentVector::first const):
(WTF::ConcurrentVector::last):
(WTF::ConcurrentVector::last const):
(WTF::ConcurrentVector::takeLast):
(WTF::ConcurrentVector::append):
(WTF::ConcurrentVector::alloc):
(WTF::ConcurrentVector::removeLast):
(WTF::ConcurrentVector::grow):
(WTF::ConcurrentVector::begin):
(WTF::ConcurrentVector::end):
(WTF::ConcurrentVector::segmentExistsFor):
(WTF::ConcurrentVector::segmentFor):
(WTF::ConcurrentVector::subscriptFor):
(WTF::ConcurrentVector::ensureSegmentsFor):
(WTF::ConcurrentVector::ensureSegment):
(WTF::ConcurrentVector::allocateSegment):

5:57 PM Changeset in webkit [225830] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix !ENABLE(MEDIA_STREAM) build after r225822
https://bugs.webkit.org/show_bug.cgi?id=180666
<rdar://problem/36008948>

  • html/HTMLMediaElement.cpp:
5:54 PM Changeset in webkit [225829] by achristensen@apple.com
  • 4 edits in trunk

Fix possible out-of-bounds read in protocolIsInHTTPFamily
https://bugs.webkit.org/show_bug.cgi?id=180688

Reviewed by Daniel Bates.

Source/WebCore:

It wouldn't read very far out of bounds, and it would just change a bool return value,
but it's still out of bounds. Covered by an API test that ASAN wouldn't like.

  • platform/URL.cpp:

(WebCore::protocolIsInHTTPFamily):
Check bounds before reading a string.

Tools:

  • TestWebKitAPI/Tests/WebCore/URL.cpp:

(TestWebKitAPI::TEST_F):

5:39 PM Changeset in webkit [225828] by commit-queue@webkit.org
  • 8 edits in trunk

getUserMedia is resolving before the document knows it is capturing
https://bugs.webkit.org/show_bug.cgi?id=180699

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-12
Reviewed by Eric Carlson.

Source/WebCore:

Covered by updated test.

Ensure the document state is capturing when getUserMedia promise is resolved by doing the following:

  • Promise is resolved when MediaStream is producing data.
  • MediaStream asks Document to update its state when MediaStream state is updated.

Introduce PendingActivationMediaStream for waiting for the MediaStream to produce data.

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::statusDidChange):

  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::allow):
(WebCore::UserMediaRequest::contextDestroyed):
(WebCore::UserMediaRequest::PendingActivationMediaStream::PendingActivationMediaStream):
(WebCore::UserMediaRequest::PendingActivationMediaStream::~PendingActivationMediaStream):
(WebCore::UserMediaRequest::PendingActivationMediaStream::characteristicsChanged):
(WebCore::UserMediaRequest::mediaStreamIsReady):

  • Modules/mediastream/UserMediaRequest.h:

(WebCore::UserMediaRequest::PendingActivationMediaStream::create):

  • platform/mediastream/RealtimeMediaSourceCenter.h:
  • WebCore/WebCore.xcodeproj/project.pbxproj:

LayoutTests:

  • webrtc/video.html: Adding a check that document is capturing within getUserMedia promise resolution callback.

Adding this check without the changes to WebCore makes the test flaky, sometimes the promise resolution happens
after document state is updated.

5:20 PM Changeset in webkit [225827] by wilander@apple.com
  • 31 edits
    2 copies
    2 moves in trunk

Storage Access API: Implement frame-specific access in the network storage session layer
https://bugs.webkit.org/show_bug.cgi?id=180679
<rdar://problem/35982116>

Reviewed by Alex Christensen.

Source/WebCore:

Tests: http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-and-try-access-from-right-frame.html

http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-but-try-access-from-wrong-frame.html

This changes adds frameID and pageID to what is communicated for
storage access and also stored in the network process' table of
partitioning exceptions.

  • dom/Document.cpp:

(WebCore::Document::hasStorageAccess):

Now makes use of the new m_hasFrameSpecificStorageAccess to check
if access has already been granted to this document's domain and
frame.

(WebCore::Document::requestStorageAccess):

Now submits frameID and pageID in the request call and sets
m_hasFrameSpecificStorageAccess upon granted access callback.

  • dom/Document.h:
  • page/ChromeClient.h:
  • platform/network/NetworkStorageSession.h:
  • platform/network/cf/NetworkStorageSessionCFNet.cpp:

(WebCore::NetworkStorageSession::cookieStoragePartition const):
(WebCore::NetworkStorageSession::setPrevalentDomainsToPartitionOrBlockCookies):
(WebCore::NetworkStorageSession::isStorageAccessGranted const):
(WebCore::NetworkStorageSession::setStorageAccessGranted):

Now makes use of frameID and pageID for partitioning exceptions.

  • platform/network/mac/CookieJarMac.mm:

(WebCore::cookiesInPartitionForURL):
(WebCore::setCookiesFromDOM):

Submits std::nullopt for frameID and pageID.
Follow-up work tracked in https://bugs.webkit.org/show_bug.cgi?id=180682.

  • platform/network/mac/ResourceHandleMac.mm:

(WebCore::ResourceHandle::applySniffingPoliciesAndStoragePartitionIfNeeded):

Submits std::nullopt for frameID and pageID.
Follow-up work tracked in https://bugs.webkit.org/show_bug.cgi?id=180682.

Source/WebKit:

This changes adds frameID and pageID to what is communicated for
storage access and also stored in the network process' table of
partitioning exceptions.

  • NetworkProcess/NetworkDataTask.cpp:

(WebKit::NetworkDataTask::create):

Now stores frameID and pageID for the task for easy retrieval
in the HSTS checks.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::updateStorageAccessForPrevalentDomains):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):

These two methods now submit frameID and pageID to the
partitioning query call.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):

These two methods now submit frameID and pageID to the
partitioning query call.

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::updateStorageAccessForPrevalentDomains):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestStorageAccess):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):

  • UIProcess/WebResourceLoadStatisticsStore.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::updateStorageAccessForPrevalentDomainsHandler):
(WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
(WebKit::WebsiteDataStore::requestStorageAccess):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::requestStorageAccess):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::requestStorageAccess):

  • WebProcess/WebPage/WebPage.h:

LayoutTests:

Note that the expected results for
request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-and-try-access-from-right-frame.html
accepts the missing part where document.cookie is still partitioned
after storage access has been granted. Follow-up work tracked in
https://bugs.webkit.org/show_bug.cgi?id=180682.

  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-and-try-access-from-right-frame-expected.txt: Added.
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-and-try-access-from-right-frame.html: Added.
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-but-try-access-from-wrong-frame-expected.txt: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-expected.txt.
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-but-try-access-from-wrong-frame.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction.html.
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-expected.txt: Removed.
  • http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction.html: Removed.
  • platform/mac-wk2/TestExpectations:
5:18 PM Changeset in webkit [225826] by achristensen@apple.com
  • 10 edits in trunk/Source/WebKit

Modernize WebsiteDataStoreParameters and SandboxExtension::Handle decoding
https://bugs.webkit.org/show_bug.cgi?id=180621

Reviewed by Youenn Fablet.

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkResourceLoadParameters.cpp:

(WebKit::NetworkResourceLoadParameters::decode):

  • Shared/LoadParameters.cpp:

(WebKit::LoadParameters::decode):

  • Shared/SandboxExtension.h:

(WebKit::decode):
(WebKit::SandboxExtension::Handle::decode): Deleted.

  • Shared/Storage/StorageProcessCreationParameters.cpp:

(WebKit::StorageProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebsiteDataStoreParameters.cpp:

(WebKit::WebsiteDataStoreParameters::decode):

  • Shared/WebsiteDataStoreParameters.h:
  • Shared/mac/SandboxExtensionMac.mm:

(WebKit::SandboxExtension::Handle::decode):
(WebKit::SandboxExtension::HandleArray::HandleArray):
(WebKit::SandboxExtension::HandleArray::encode const):
(WebKit::SandboxExtension::HandleArray::decode):
(WebKit::SandboxExtension::SandboxExtension):

5:13 PM Changeset in webkit [225825] by jmarcell@apple.com
  • 7 edits in trunk/Source

Versioning.

4:50 PM Changeset in webkit [225824] by jfbastien@apple.com
  • 7 edits in trunk

makeString: support more integral types
https://bugs.webkit.org/show_bug.cgi?id=180720

Reviewed by Sam Weinig.

Source/WTF:

Only some integral types worked. Add more types by using template
magic. While we're here, also use the same magic for
floating-point types in the theoretical future where short float
or long double matter.

The core of the magic is a second, defaulted, template
parameter. It's declared in Forward.h (as void), and then in
classes where we want to enable_if we use it (in C++ speak we
create a partial class template specialization), otherwise we
leave it as void.

Also clean up some constructors which were being way too verbose
in stating that they were declarations for this template
specialization right here, when really we already knew that.

  • wtf/Forward.h:
  • wtf/text/StringConcatenate.h:

(WTF::StringTypeAdapter<char>::StringTypeAdapter<char>): Deleted.
(WTF::StringTypeAdapter<char>::length): Deleted.
(WTF::StringTypeAdapter<char>::is8Bit): Deleted.
(WTF::StringTypeAdapter<char>::writeTo const): Deleted.
(WTF::StringTypeAdapter<char>::toString const): Deleted.
(WTF::StringTypeAdapter<UChar>::StringTypeAdapter<UChar>): Deleted.
(WTF::StringTypeAdapter<UChar>::length const): Deleted.
(WTF::StringTypeAdapter<UChar>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<UChar>::writeTo const): Deleted.
(WTF::StringTypeAdapter<UChar>::toString const): Deleted.
(WTF::StringTypeAdapter<char::StringTypeAdapter): Deleted.
(WTF::StringTypeAdapter<ASCIILiteral>::StringTypeAdapter): Deleted.
(WTF::StringTypeAdapter<Vector<char>>::StringTypeAdapter): Deleted.
(WTF::StringTypeAdapter<Vector<char>>::length const): Deleted.
(WTF::StringTypeAdapter<Vector<char>>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<Vector<char>>::writeTo const): Deleted.
(WTF::StringTypeAdapter<Vector<char>>::toString const): Deleted.
(WTF::StringTypeAdapter<String>::StringTypeAdapter<String>): Deleted.
(WTF::StringTypeAdapter<String>::length const): Deleted.
(WTF::StringTypeAdapter<String>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<String>::writeTo const): Deleted.
(WTF::StringTypeAdapter<String>::toString const): Deleted.
(WTF::StringTypeAdapter<AtomicString>::StringTypeAdapter): Deleted.

  • wtf/text/StringConcatenateNumbers.h:

(WTF::StringTypeAdapter<FormattedNumber>::StringTypeAdapter):
(WTF::StringTypeAdapter<int>::StringTypeAdapter<int>): Deleted.
(WTF::StringTypeAdapter<int>::length const): Deleted.
(WTF::StringTypeAdapter<int>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<int>::writeTo const): Deleted.
(WTF::StringTypeAdapter<int>::toString const): Deleted.
(WTF::StringTypeAdapter<unsigned>::StringTypeAdapter<unsigned>): Deleted.
(WTF::StringTypeAdapter<unsigned>::length const): Deleted.
(WTF::StringTypeAdapter<unsigned>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<unsigned>::writeTo const): Deleted.
(WTF::StringTypeAdapter<unsigned>::toString const): Deleted.
(WTF::StringTypeAdapter<double>::StringTypeAdapter<double>): Deleted.
(WTF::StringTypeAdapter<double>::length const): Deleted.
(WTF::StringTypeAdapter<double>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<double>::writeTo const): Deleted.
(WTF::StringTypeAdapter<double>::toString const): Deleted.
(WTF::StringTypeAdapter<float>::StringTypeAdapter<float>): Deleted.
(WTF::StringTypeAdapter<FormattedNumber>::StringTypeAdapter<FormattedNumber>): Deleted.

  • wtf/text/StringView.h:

(WTF::StringTypeAdapter<StringView>::StringTypeAdapter<StringView>): Deleted.
(WTF::StringTypeAdapter<StringView>::length): Deleted.
(WTF::StringTypeAdapter<StringView>::is8Bit): Deleted.
(WTF::StringTypeAdapter<StringView>::writeTo): Deleted.
(WTF::StringTypeAdapter<StringView>::toString const): Deleted.

Tools:

Test a few more types can be made string'd.

  • TestWebKitAPI/Tests/WTF/StringConcatenate.cpp:

(TestWebKitAPI::TEST):

4:43 PM Changeset in webkit [225823] by jmarcell@apple.com
  • 11 edits in tags/Safari-605.1.17/Source/JavaScriptCore

Revert r225695. rdar://problem/35914716

4:40 PM Changeset in webkit [225822] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Playing webrtc video tracks should prevent from display to got to sleep
https://bugs.webkit.org/show_bug.cgi?id=180666

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-12
Reviewed by Darin Adler.

Done through manual testing by checking screen assertions taken on webrtc sites.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::shouldDisableSleep const):

4:32 PM Changeset in webkit [225821] by sbarati@apple.com
  • 3 edits
    1 add in trunk

ConstantFoldingPhase rule for GetMyArgumentByVal must check for negative indices
https://bugs.webkit.org/show_bug.cgi?id=180723
<rdar://problem/35859726>

Reviewed by JF Bastien.

JSTests:

  • stress/get-my-argument-by-val-constant-folding.js: Added.

(test):
(catch):

Source/JavaScriptCore:

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

4:31 PM Changeset in webkit [225820] by BJ Burg
  • 5 edits in trunk

Web Inspector: support async setup() and async teardown() in AsyncTestSuite
https://bugs.webkit.org/show_bug.cgi?id=180626

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

This can make some code simpler by removing Promise-related boilerplate. I'm splitting
this patch from the new use-site in the interest of making it easier to review.

  • UserInterface/Test/TestSuite.js:

(AsyncTestSuite.prototype.runTestCases):
(AsyncTestSuite):

LayoutTests:

Update tests to cover async setup() and async teardown() in the case
of success, runtime failure, and explicit failure.

  • inspector/unit-tests/async-test-suite-expected.txt:
  • inspector/unit-tests/async-test-suite.html:
4:11 PM Changeset in webkit [225819] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Flakiness dashboard: Make GTK and WPE builds inherit expectations from WK2
https://bugs.webkit.org/show_bug.cgi?id=178782

Patch by Alicia Boya García <aboya@igalia.com> on 2017-12-12
Reviewed by Michael Catanzaro.

  • TestResultServer/static-dashboards/flakiness_dashboard.js:
3:54 PM Changeset in webkit [225818] by wilander@apple.com
  • 2 edits in trunk/Source/WebKit

Dispatch resource load statistics telemetry on the main thread
https://bugs.webkit.org/show_bug.cgi?id=180602
<rdar://problem/35942205>

Reviewed by Brent Fulgham.

  • UIProcess/WebResourceLoadStatisticsTelemetry.cpp:

(WebKit::WebResourceLoadStatisticsTelemetry::calculateAndSubmit):

Now switches to the main thread for the telemetry submission
through a webpage proxy. The reason is that the webpage we
use may go away while we're still using it. This kind of
telemetry isn't associated with a specific webpage but the
infrastructure requires a webpage proxy.

3:41 PM Changeset in webkit [225817] by don.olmstead@sony.com
  • 2 edits in trunk

[WinCairo] Enable WebP support
https://bugs.webkit.org/show_bug.cgi?id=179908

Reviewed by Konstantin Tokarev.

  • Source/cmake/OptionsWinCairo.cmake:
3:35 PM Changeset in webkit [225816] by dino@apple.com
  • 12 edits
    3 copies
    3 adds in trunk/Source/WebCore

Add CanvasRenderingContext2DBase class and OffscreenCanvasRenderingContext2D
https://bugs.webkit.org/show_bug.cgi?id=180718
<rdar://problem/36004015>

Reviewed by Sam Weinig.

Add an OffscreenCanvasRenderingContext2D class, and in the process create a shared
base class for it and CanvasRenderingContext2D, called CanvasRenderingContext2DBase.
The base class has nearly all the functionality, with the exception of the text
and focus rendering APIs, which are only exposed on CanvasRenderingContext2D.

At the moment CanvasRenderingContext2DBase's implementation still expects the attached
canvas to be an HTMLCanvasElement, but that's ok since you can't yet create an
OffscreenCanvasRenderingContext2D. A subsequent patch will do the right thing.

No change in functionality at the moment, so covered by the existing tests.

  • DerivedSources.make: Add the new IDL file.
  • Sources.txt: Add all the new files to compile.
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSCanvasRenderingContext2DCustom.cpp: Removed some unnecessary headers, and

added JSC:: where appropriate.
(WebCore::JSCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots):
(WebCore::JSCanvasRenderingContext2D::visitAdditionalChildren):

  • bindings/js/JSOffscreenCanvasRenderingContext2DCustom.cpp: Copied from Source/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp.

(WebCore::root): New root function that just returns the address of the OffscreenCanvas.
(WebCore::JSOffscreenCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots):
(WebCore::JSOffscreenCanvasRenderingContext2D::visitAdditionalChildren):

  • bindings/js/JSWorkerNavigatorCustom.cpp: Add JSC:: to fix a compilation error.

(WebCore::JSWorkerNavigator::visitAdditionalChildren):

  • bindings/js/WebCoreBuiltinNames.h: New IDL types.
  • html/OffscreenCanvas.idl: Explicitly generates an IsReachable.
  • html/canvas/CanvasRenderingContext.h:

(WebCore::CanvasRenderingContext::isOffscreen2d const): Helper for is<> trait.

  • html/canvas/CanvasRenderingContext2D.cpp: Nearly everything has been moved to the Base class.
  • html/canvas/CanvasRenderingContext2D.h:
  • html/canvas/CanvasRenderingContext2DBase.cpp: Copied from Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp.
  • html/canvas/CanvasRenderingContext2DBase.h: Copied from Source/WebCore/html/canvas/CanvasRenderingContext2D.h.
  • html/canvas/OffscreenCanvasRenderingContext2D.cpp: Added. Basic implementation that

just uses the Base class.
(WebCore::OffscreenCanvasRenderingContext2D::OffscreenCanvasRenderingContext2D):

  • html/canvas/OffscreenCanvasRenderingContext2D.h: Added.
  • html/canvas/OffscreenCanvasRenderingContext2D.idl: Added.
3:13 PM Changeset in webkit [225815] by Jonathan Bedard
  • 3 edits in trunk/Tools

MobileMiniBrowser using the wrong toolchain
https://bugs.webkit.org/show_bug.cgi?id=180716
<rdar://problem/36002951>

Reviewed by Tim Horton.

Move Debug/Release configurations from xcodeproj into Base.xcconfig.

  • MobileMiniBrowser/Configurations/Base.xcconfig:
  • MobileMiniBrowser/MobileMiniBrowser.xcodeproj/project.pbxproj:
3:13 PM Changeset in webkit [225814] by BJ Burg
  • 5 edits in trunk

Web Inspector: SyncTestSuite should complain if passed an async setup/test/teardown function
https://bugs.webkit.org/show_bug.cgi?id=180717

Reviewed by Devin Rousso.

Source/WebInspectorUI:

  • UserInterface/Test/TestSuite.js:

(SyncTestSuite.prototype.addTestCase):
Raise an exception if test/setup/teardown is an async function. It won't work.

LayoutTests:

Add new test cases for more strict requirements for test case arguments.

  • inspector/unit-tests/sync-test-suite-expected.txt:
  • inspector/unit-tests/sync-test-suite.html:
3:12 PM Changeset in webkit [225813] by jer.noble@apple.com
  • 7 edits in trunk/Source/WebCore

[EME] Support FPS-over-HLS in the Modern EME API
https://bugs.webkit.org/show_bug.cgi?id=180707

Reviewed by Eric Carlson.

Add support for the "skd" initDataType, where the initData is the URI provided in the
EXT-X-KEY tag in a HLS manifest:

  • platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:

(WebCore::CDMPrivateFairPlayStreaming::sinfName):
(WebCore::CDMPrivateFairPlayStreaming::skdName):
(WebCore::extractSinfData):
(WebCore::CDMPrivateFairPlayStreaming::sanitizeSkd):
(WebCore::CDMPrivateFairPlayStreaming::extractKeyIDsSkd):
(WebCore::validInitDataTypes):
(WebCore::CDMFactory::platformRegisterFactories):
(WebCore::CDMPrivateFairPlayStreaming::supportsInitDataType const):
(WebCore::CDMPrivateFairPlayStreaming::supportsConfiguration const):
(WebCore::CDMPrivateFairPlayStreaming::supportsInitData const):
(WebCore::sinfName): Deleted.

Add support for creating a AVContentKeyRequest from a skd key URI rather than from
initialization data, and for extracting keyIDs from the AVContentKeyRequest identifier.

  • platform/graphics/avfoundation/CDMFairPlayStreaming.h:
  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:

(WebCore::CDMInstanceFairPlayStreamingAVFObjC::keyIDs):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::requestLicense):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::updateLicense):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::didProvideRequest):

Add support for AVContentKeySession to MediaPlayerPrivateAVFoundationObjC, and for emitting
initializationData messages when encountering a loading request for a "skd" URI.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource):
(WebCore::MediaPlayerPrivateAVFoundationObjC::cdmInstanceAttached):
(WebCore::MediaPlayerPrivateAVFoundationObjC::cdmInstanceDetached):
(WebCore::MediaPlayerPrivateAVFoundationObjC::attemptToDecryptWithInstance):

3:12 PM Changeset in webkit [225812] by graouts@webkit.org
  • 7 edits in trunk

[Web Animations] Expose promises on Animation interface
https://bugs.webkit.org/show_bug.cgi?id=180710
<rdar://problem/36000604>

Reviewed by Dean Jackson.

Source/WebCore:

Expose the "ready" and "finished" promises on Animation. A future patch will fulfil or reject them.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::WebAnimation):
(WebCore::WebAnimation::readyPromiseResolve):
(WebCore::WebAnimation::finishedPromiseResolve):

  • animation/WebAnimation.h:
  • animation/WebAnimation.idl:

LayoutTests:

Rebase some WPT expectations with progressions due to exposing the "ready" and "finished" promises.

  • http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:
  • http/wpt/web-animations/timing-model/animations/current-time-expected.txt:
3:11 PM Changeset in webkit [225811] by mmaxfield@apple.com
  • 3 edits
    2 adds in trunk

IPC code doesn't understand NSDictionaries with non-NSString keys
https://bugs.webkit.org/show_bug.cgi?id=180307
<rdar://problem/35812382>

Reviewed by Alex Christensen.

Source/WebKit:

Variable fonts have a dictionary inside its descriptor which represents the values
of all the axes of the variable font. Our IPC code wasn't expecting this.

  • Shared/mac/ArgumentCodersMac.mm:

(IPC::encode):
(IPC::decode):

LayoutTests:

  • fast/text/variations/ipc-expected.txt: Added.
  • fast/text/variations/ipc.html: Added.
3:10 PM Changeset in webkit [225810] by BJ Burg
  • 7 edits
    2 adds in trunk

Web Inspector: add InspectorTest.expectException() and use it
https://bugs.webkit.org/show_bug.cgi?id=180719

Reviewed by Matt Baker.

Source/WebInspectorUI:

This helps straighten out async test() functions that need
to test exceptional cases. Without this, every such method
needs try/catch boilerplate to leak the error outside the
scope of the catch-block and then assert that it exists.

  • UserInterface/Test/TestHarness.js:

(TestHarness.prototype.expectException):
Added. This method takes a callback which is expected to raise
an exception either by throwing an Error instance or returning
a Promise that rejects with an Error instance. The method returns
a Promise that is either resolved with the expected exception
from one of the above sources, or is rejected with the non-exception
result that was returned or resolved by the callback.

LayoutTests:

  • inspector/dom/highlightNode-expected.txt:
  • inspector/dom/highlightNode.html:

Adopt the new helper method.

  • inspector/unit-tests/test-harness-expect-functions-async-expected.txt: Added.
  • inspector/unit-tests/test-harness-expect-functions-async.html: Added.

Add a separate async test suite for async expect* functions.

  • inspector/unit-tests/test-harness-expect-functions-expected.txt:
  • inspector/unit-tests/test-harness-expect-functions.html:

Standardize the naming for these two suites.

3:01 PM Changeset in webkit [225809] by commit-queue@webkit.org
  • 4 edits in trunk

Fetch Event header filtering should apply in CORS mode only
https://bugs.webkit.org/show_bug.cgi?id=180708

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-12
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:

Source/WebCore:

Covered by no-longer failing test.

  • workers/service/context/ServiceWorkerFetch.cpp: cleaning headers only in case of CORS mode.
2:51 PM Changeset in webkit [225808] by mmaxfield@apple.com
  • 4 edits
    2 adds in trunk

REGRESSION (Safari 11): custom <font-face> tag crashes a page
https://bugs.webkit.org/show_bug.cgi?id=177848

Reviewed by Darin Adler.

Source/WebCore:

We currently use the CSS property parsers to parse SVG's <font-face> element attributes. Instead,
we should be using the CSS descriptor parsers to parse these attributes. However, this is a
fairly involved task, so until I can finish that, this patch fixes the crash. The crash is simple;
the descriptors shouldn't accept the universal keywords ("initial", "inherit", etc.) and our
font-face machinery assumes this. So the fix is just detect these keywords and explicitly disallow
them.

Test: svg/text/font-style-keyword.html

  • svg/SVGFontFaceElement.cpp:

(WebCore::SVGFontFaceElement::parseAttribute):

LayoutTests:

  • svg/text/font-style-keyword-expected.txt: Added.
  • svg/text/font-style-keyword.html: Added.
2:24 PM Changeset in webkit [225807] by commit-queue@webkit.org
  • 8 edits in trunk

[Web Animations] Implement the playState property on Animation
https://bugs.webkit.org/show_bug.cgi?id=180711
<rdar://problem/36000982>

Patch by Antoine Quint <Antoine Quint> on 2017-12-12
Reviewed by Dean Jackson.

Source/WebCore:

Expose the playState and pending properties. The playState property has a complete implementation but
has some test failures due to Animation lacking correct behavior while running animations which will
be fixed in a followup patch. The pending property is a placeholder until we implement pending play
and pause tasks in followup patches.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::playState const):
(WebCore::WebAnimation::effectEndTime const):

  • animation/WebAnimation.h:
  • animation/WebAnimation.idl:

LayoutTests:

Rebase some WPT expectations with progressions due to exposing the "playState" and "pending" properties.

  • http/wpt/web-animations/interfaces/Animation/constructor-expected.txt:
  • http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:
  • http/wpt/web-animations/timing-model/animations/set-the-timeline-of-an-animation-expected.txt:
2:23 PM Changeset in webkit [225806] by Michael Catanzaro
  • 2 edits in trunk/Source/WebInspectorUI

Don't require perl(File::Copy::Recursive)
https://bugs.webkit.org/show_bug.cgi?id=180479
<rdar://problem/35944218>

Reviewed by Daniel Bates.

Fix the error handling. I added this at the last moment and failed to test. The logic is
inverted, causing an error to always be reported on success.

Add a missing 'mkdir -p' using File::Path::make_path. This has its own built-in error
reporting, so no need to add our own.

  • Scripts/copy-user-interface-resources.pl:

(ditto):

2:19 PM Changeset in webkit [225805] by jfernandez@igalia.com
  • 55 edits in trunk

[css-grid] Implement alignment for absolute positioned grid items
https://bugs.webkit.org/show_bug.cgi?id=180632

Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

These tests now pass and verify the alignment logic for positioned grid items.

  • web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-002-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-005-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-007-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-009-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-011-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-013-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-014-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-column-axis-alignment-positioned-items-016-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-002-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-003-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-004-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-005-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-007-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-009-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-010-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-013-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-014-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-row-axis-alignment-positioned-items-015-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-001-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-002-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-003-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-004-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-005-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-006-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-007-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-008-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-009.html:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-010-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-011-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-non-static-positioned-items-012-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-001-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-002-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-003-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-004-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-005-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-006-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-007-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-008-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-009-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-010-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-011-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-012-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-013-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-014-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-015-expected.txt:
  • web-platform-tests/css/css-grid/alignment/grid-self-alignment-positioned-items-with-margin-border-padding-016-expected.txt:

Source/WebCore:

We are changing how we compute the grid area's size of positioned
items, trying to make the logic as independent as possible of the
grid container's direction.

The new way of placing absolute positioned elements in their grid area
is based on the previously computed area's size. This provide a
mechanism to place an item in its area respecting the offsets derived
from the Content Alignment CSS properties and, which is more important,
ignoring the grid container's direction.

Additionally, we use the already implemented alignment logic that's
used for regular grid items. This patch provides almost full alignment
capabilities for positioned objects, with the exception of 'stretch'.

It's worth mentioning that some of the test cases using vertical-rl
writing mode will fail because of the bug 180633.

Updated web-platform-tests results of the test cases that pass now.

  • rendering/GridLayoutFunctions.cpp:

(WebCore::GridLayoutFunctions::hasOverrideContainingBlockContentSizeForChild):

(WebCore::GridLayoutFunctions::overrideContainingBlockContentSizeForChild):

  • rendering/GridLayoutFunctions.h:
  • rendering/GridTrackSizingAlgorithm.cpp:

(WebCore::GridTrackSizingAlgorithmStrategy::updateOverrideContainingBlockContentSizeForChild const):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::layoutBlock):
(WebCore::RenderGrid::gridItemOffset const):
(WebCore::RenderGrid::hasStaticPositionForChild const):
(WebCore::RenderGrid::layoutPositionedObject):
(WebCore::RenderGrid::applyStretchAlignmentToChildIfNeeded):
(WebCore::RenderGrid::columnAxisPositionForChild const):
(WebCore::RenderGrid::rowAxisPositionForChild const):
(WebCore::RenderGrid::columnAxisOffsetForChild const):
(WebCore::RenderGrid::rowAxisOffsetForChild const):
(WebCore::RenderGrid::gridPositionIsAutoForOutOfFlow const):
(WebCore::RenderGrid::resolveAutoStartGridPosition const):
(WebCore::RenderGrid::resolveAutoEndGridPosition const):
(WebCore::RenderGrid::gridAreaBreadthForOutOfFlowChild):
(WebCore::RenderGrid::logicalOffsetForChild const):
(WebCore::RenderGrid::gridAreaPositionForOutOfFlowChild const):
(WebCore::RenderGrid::gridAreaPositionForInFlowChild const):
(WebCore::RenderGrid::gridAreaPositionForChild const):
(WebCore::RenderGrid::translateOutOfFlowRTLCoordinate const):
(WebCore::RenderGrid::findChildLogicalPosition const):

  • rendering/RenderGrid.h:
  • rendering/style/GridPositionsResolver.cpp:

(WebCore::adjustGridPositionsFromStyle):
(WebCore::GridPositionsResolver::initialPositionSide):
(WebCore::GridPositionsResolver::finalPositionSide):

  • rendering/style/GridPositionsResolver.h:
1:49 PM Changeset in webkit [225804] by BJ Burg
  • 8 edits in trunk/Source/JavaScriptCore

Web Inspector: modernize InjectedScript a bit
https://bugs.webkit.org/show_bug.cgi?id=180367

Reviewed by Timothy Hatcher.

Stop using out parameters passed by pointer, use references instead.
Stop using OptOutput<T> in favor of std::optional where possible.
If there is only one out-parameter and a void return type, then return the value.

  • inspector/InjectedScript.h:
  • inspector/InjectedScript.cpp:

(Inspector::InjectedScript::evaluate):
(Inspector::InjectedScript::callFunctionOn):
(Inspector::InjectedScript::evaluateOnCallFrame):
(Inspector::InjectedScript::getFunctionDetails):
(Inspector::InjectedScript::functionDetails):
(Inspector::InjectedScript::getPreview):
(Inspector::InjectedScript::getProperties):
(Inspector::InjectedScript::getDisplayableProperties):
(Inspector::InjectedScript::getInternalProperties):
(Inspector::InjectedScript::getCollectionEntries):
(Inspector::InjectedScript::saveResult):
(Inspector::InjectedScript::setExceptionValue):
(Inspector::InjectedScript::clearExceptionValue):
(Inspector::InjectedScript::inspectObject):
(Inspector::InjectedScript::releaseObject):

  • inspector/InjectedScriptBase.h:
  • inspector/InjectedScriptBase.cpp:

(Inspector::InjectedScriptBase::InjectedScriptBase):
Declare m_environment with a default initializer.

(Inspector::InjectedScriptBase::makeCall):
(Inspector::InjectedScriptBase::makeEvalCall):
Just return the result, no need for an out-parameter.
Rearrange some code paths now that we can just return a result.
Return a Ref<JSON::Value> since it is either a result value or error value.
Use out_ prefixes in a few places to improve readability.

  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::getFunctionDetails):
(Inspector::InspectorDebuggerAgent::evaluateOnCallFrame):

  • inspector/agents/InspectorHeapAgent.cpp:

(Inspector::InspectorHeapAgent::getPreview):

  • inspector/agents/InspectorRuntimeAgent.cpp:

(Inspector::InspectorRuntimeAgent::evaluate):
(Inspector::InspectorRuntimeAgent::callFunctionOn):
(Inspector::InspectorRuntimeAgent::getPreview):
(Inspector::InspectorRuntimeAgent::getProperties):
(Inspector::InspectorRuntimeAgent::getDisplayableProperties):
(Inspector::InspectorRuntimeAgent::getCollectionEntries):
(Inspector::InspectorRuntimeAgent::saveResult):
Adapt to InjectedScript changes. In some cases we need to bridge OptOutput<T>
and std::optional until the former is removed from generated method signatures.

1:36 PM Changeset in webkit [225803] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Update ContentFiltering.LazilyLoadPlatformFrameworks test to account for libwebrtc using VideoProcessing framework
https://bugs.webkit.org/show_bug.cgi?id=180713

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-12
Reviewed by Andy Estes.

Temporarily disabling a subcheck until we make the test more robust and/or libwebrtc weak linking VideoProcessing framework.

  • TestWebKitAPI/Tests/WebKitCocoa/ContentFiltering.mm:

(-[LazilyLoadPlatformFrameworksController expectParentalControlsLoaded:networkExtensionLoaded:]):

1:35 PM Changeset in webkit [225802] by jer.noble@apple.com
  • 5 edits in trunk/Source/WebCore

[EME] Support reporting and restoring persistent usage data.
https://bugs.webkit.org/show_bug.cgi?id=180684

Reviewed by Eric Carlson.

Add support for reading and acknowledging persistent usage data from the MediaKeys storage
directory.

Add a mechanism for passing the storage location down to CDMPrivate and CDMInstance objects
inside of the CDM class itself:

  • Modules/encryptedmedia/CDM.cpp:

(WebCore::CDM::createInstance):
(WebCore::CDM::storageDirectory const):

  • Modules/encryptedmedia/CDM.h:

Support loading expired session data, acknowledging expired session data, closing sessions
and removing usable key data.

  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:
  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:

(WebCore::isEqual):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::updateLicense):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::loadSession):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::closeSession):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::removeSessionData):

1:16 PM Changeset in webkit [225801] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

Unreviewed build fix after r225763.

Remove dangling close-parentheses character.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
1:11 PM Changeset in webkit [225800] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

WebGL TextureMapperShaderProgram shaders don't compile in MSVC
https://bugs.webkit.org/show_bug.cgi?id=180709

Patch by Christopher Reid <chris.reid@sony.com> on 2017-12-12
Reviewed by Myles C. Maxfield.

No new tests, no change in behavior.

Vertex and Fragment shaders were not compiling because TextureMapperShaderProgram.cpp was
stringifying "#if USE(OPENGL_ES_2) ... #endif" into the shaders rather than evaluating these
preprocessor directives before the STRINGIFY expansion.

Moved these #if conditions outside of STRINGIFY to remove compiler ambiguity.

  • platform/graphics/texmap/TextureMapperShaderProgram.cpp:
1:01 PM Changeset in webkit [225799] by Caio Lima
  • 46 edits
    9 adds in trunk

[ESNext][BigInt] Implement BigInt literals and JSBigInt
https://bugs.webkit.org/show_bug.cgi?id=179000

Reviewed by Darin Adler and Yusuke Suzuki.

JSTests:

  • bigIntTests.yaml: Added.
  • stress/big-int-literal-line-terminator.js: Added.
  • stress/big-int-literals.js: Added.
  • stress/big-int-operations-error.js: Added.
  • stress/big-int-type-of.js: Added.
  • stress/big-int-white-space-trailing-leading.js: Added.
  • stress/big-int-function-apply.js: Added.

Source/JavaScriptCore:

This patch starts the implementation of BigInt primitive on
JavaScriptCore. We are introducing BigInt primitive and
implementing it on JSBigInt as a subclass of JSCell with BigIntData
field implemented contiguosly on memory as inline storage of JSBigInt to
take advantages on performance due to cache locality. The
implementation allows 64 or 32 bitwise arithmetic operations.
JSBigInt also has m_sign to store the sign of BigIntData and
m_length that keeps track of BigInt length.
The implementation is following the V8 one. BigIntData is manipulated
by JSBigInt::setDigit(index, value) and JSBigInt::digit(index) operations.
We also have some operations to support arithmetics over digits.

It is important to notice that on our representation,
JSBigInt::dataStorage()[0] represents the least significant digit and
JSBigInt::dataStorage()[m_length - 1] represents the most siginificant digit.

We are also introducing into this Patch the BigInt literals lexer and
syntax parsing support. The operation Strict Equals on BigInts is also being
implemented to enable tests.
These features are being implemented behind a runtime flage "--useBigInt" and
are disabled by default.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • bytecode/CodeBlock.cpp:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitEqualityOp):
(JSC::BytecodeGenerator::addBigIntConstant):

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::BigIntEntryHash::hash):
(JSC::BytecodeGenerator::BigIntEntryHash::equal):

  • bytecompiler/NodesCodegen.cpp:

(JSC::BigIntNode::jsValue const):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::isToThisAnIdentity):

  • interpreter/Interpreter.cpp:

(JSC::sizeOfVarargs):

  • llint/LLIntData.cpp:

(JSC::LLInt::Data::performAssertions):

  • llint/LowLevelInterpreter.asm:
  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createBigInt):

  • parser/Lexer.cpp:

(JSC::Lexer<T>::parseBinary):
(JSC::Lexer<T>::parseOctal):
(JSC::Lexer<T>::parseDecimal):
(JSC::Lexer<T>::lex):
(JSC::Lexer<T>::parseHex): Deleted.

  • parser/Lexer.h:
  • parser/NodeConstructors.h:

(JSC::BigIntNode::BigIntNode):

  • parser/Nodes.h:

(JSC::ExpressionNode::isBigInt const):
(JSC::BigIntNode::value):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parsePrimaryExpression):

  • parser/ParserTokens.h:
  • parser/ResultType.h:

(JSC::ResultType::definitelyIsBigInt const):
(JSC::ResultType::mightBeBigInt const):
(JSC::ResultType::isNotBigInt const):
(JSC::ResultType::addResultType):
(JSC::ResultType::bigIntType):
(JSC::ResultType::forAdd):
(JSC::ResultType::forLogicalOp):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createBigInt):

  • runtime/CommonIdentifiers.h:
  • runtime/JSBigInt.cpp: Added.

(JSC::JSBigInt::visitChildren):
(JSC::JSBigInt::JSBigInt):
(JSC::JSBigInt::initialize):
(JSC::JSBigInt::createStructure):
(JSC::JSBigInt::createZero):
(JSC::JSBigInt::allocationSize):
(JSC::JSBigInt::createWithLength):
(JSC::JSBigInt::finishCreation):
(JSC::JSBigInt::toPrimitive const):
(JSC::JSBigInt::singleDigitValueForString):
(JSC::JSBigInt::parseInt):
(JSC::JSBigInt::toString):
(JSC::JSBigInt::isZero):
(JSC::JSBigInt::inplaceMultiplyAdd):
(JSC::JSBigInt::digitAdd):
(JSC::JSBigInt::digitSub):
(JSC::JSBigInt::digitMul):
(JSC::JSBigInt::digitPow):
(JSC::JSBigInt::digitDiv):
(JSC::JSBigInt::internalMultiplyAdd):
(JSC::JSBigInt::equalToBigInt):
(JSC::JSBigInt::absoluteDivSmall):
(JSC::JSBigInt::calculateMaximumCharactersRequired):
(JSC::JSBigInt::toStringGeneric):
(JSC::JSBigInt::rightTrim):
(JSC::JSBigInt::allocateFor):
(JSC::JSBigInt::estimatedSize):
(JSC::JSBigInt::toNumber const):
(JSC::JSBigInt::getPrimitiveNumber const):

  • runtime/JSBigInt.h: Added.

(JSC::JSBigInt::setSign):
(JSC::JSBigInt::sign const):
(JSC::JSBigInt::setLength):
(JSC::JSBigInt::length const):
(JSC::JSBigInt::parseInt):
(JSC::JSBigInt::offsetOfData):
(JSC::JSBigInt::dataStorage):
(JSC::JSBigInt::digit):
(JSC::JSBigInt::setDigit):
(JSC::asBigInt):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::synthesizePrototype const):
(JSC::JSValue::toStringSlowCase const):

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::isBigInt const):
(JSC::JSValue::strictEqualSlowCaseInline):

  • runtime/JSCell.cpp:

(JSC::JSCell::put):
(JSC::JSCell::putByIndex):
(JSC::JSCell::toPrimitive const):
(JSC::JSCell::getPrimitiveNumber const):
(JSC::JSCell::toNumber const):
(JSC::JSCell::toObjectSlow const):

  • runtime/JSCell.h:
  • runtime/JSCellInlines.h:

(JSC::JSCell::isBigInt const):

  • runtime/JSType.h:
  • runtime/MathCommon.h:

(JSC::clz64):

  • runtime/NumberPrototype.cpp:
  • runtime/Operations.cpp:

(JSC::jsTypeStringForValue):
(JSC::jsIsObjectTypeOrNull):

  • runtime/Options.h:
  • runtime/ParseInt.h:
  • runtime/SmallStrings.h:

(JSC::SmallStrings::typeString const):

  • runtime/StructureInlines.h:

(JSC::prototypeForLookupPrimitiveImpl):

  • runtime/TypeofType.cpp:

(WTF::printInternal):

  • runtime/TypeofType.h:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:

Source/WTF:

  • wtf/HashFunctions.h:

Tools:

  • Scripts/run-jsc-stress-tests:
1:01 PM Changeset in webkit [225798] by commit-queue@webkit.org
  • 7 edits in trunk/Source

[WK2] Expose image via WKBundleHitTestResult API.
https://bugs.webkit.org/show_bug.cgi?id=180552.
rdar://problem/23951521

Patch by Zach Li <zachli@apple.com> on 2017-12-12
Reviewed by Simon Fraser.

Source/WebCore:

  • platform/graphics/ImageSource.h:

This method will be used by clients outside WebCore, so
add WEBCORE_EXPORT.

Source/WebKit:

  • WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.cpp:

(WKBundleHitTestResultGetImage):

  • WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.h:
  • WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:

(WebKit::InjectedBundleHitTestResult::image const):
Convert from WebCore::Image to WebImage by creating a WebImage
and paint the WebCore::Image into its graphics context. For now,
only handle bitmap images.

  • WebProcess/InjectedBundle/InjectedBundleHitTestResult.h:
1:00 PM Changeset in webkit [225797] by Simon Fraser
  • 19 edits in trunk/Source

Remove ColorSpaceDeviceRGB and most users of the obsolete deviceRGB colorspace
https://bugs.webkit.org/show_bug.cgi?id=180689

Reviewed by Tim Horton.

Source/WebCore:

Remove the ColorSpaceDeviceRGB enum and users.

ImageBuffer now uses sRGB instead of deviceRGB in the few cases that used the latter.

Switch Windows CG code to use sRGBColorSpaceRef() instead of deviceRGBColorSpaceRef().

Have linearRGBColorSpaceRef() use kCGColorSpaceLinearSRGB, which is present in iOS 9 and 10.11 and later.

  • page/win/FrameCGWin.cpp:

(WebCore::imageFromRect):

  • platform/graphics/Color.cpp:

(WebCore::operator<<):

  • platform/graphics/ColorSpace.h:
  • platform/graphics/ImageBuffer.cpp:

(WebCore::ImageBuffer::transformColorSpace):

  • platform/graphics/cg/ColorCG.cpp:

(WebCore::Color::Color):
(WebCore::leakCGColor):
(WebCore::createCGColorWithDeviceRGBA): Deleted.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::sRGBColorSpaceRef):
(WebCore::linearRGBColorSpaceRef):
(WebCore::extendedSRGBColorSpaceRef):
(WebCore::displayP3ColorSpaceRef):
(WebCore::deviceRGBColorSpaceRef): Deleted.

  • platform/graphics/cg/GraphicsContextCG.h:

(WebCore::cachedCGColorSpace):

  • platform/graphics/cocoa/GraphicsContextCocoa.mm:
  • platform/graphics/win/GraphicsContextCGWin.cpp:

(WebCore::CGContextWithHDC):
(WebCore::GraphicsContext::releaseWindowsContext):
(WebCore::GraphicsContext::drawWindowsBitmap):

  • platform/graphics/win/ImageCGWin.cpp:

(WebCore::BitmapImage::create):
(WebCore::BitmapImage::getHBITMAPOfSize):

  • platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:

(WebCore::MockRealtimeVideoSourceMac::pixelBufferFromCGImage const):

  • platform/win/DragImageCGWin.cpp:

(WebCore::allocImage):
(WebCore::createCgContextFromBitmap):

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::postApplyResource):

  • rendering/svg/RenderSVGResourceMasker.cpp:

(WebCore::RenderSVGResourceMasker::drawContentIntoMaskImage):

Source/WebKit:

Remove encoding of ColorSpaceDeviceRGB.

  • Shared/WebCoreArgumentCoders.h:

Source/WebKitLegacy/mac:

Use sRGBColorSpaceRef() from WebCore.

  • WebView/WebHTMLView.mm:

(imageFromRect):

12:43 PM Changeset in webkit [225796] by commit-queue@webkit.org
  • 11 edits in trunk

Navigation requests should use navigate fetch mode
https://bugs.webkit.org/show_bug.cgi?id=179808

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-12
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/fetch-request-redirect.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/navigation-redirect.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/register-same-scope-different-script-url.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/request-end-to-end.https-expected.txt:

This is a progression since test is failing at a later point. Test might need being updated to match latest fetch spec.

  • web-platform-tests/service-workers/service-worker/resources/clients-get-worker.js:

(self.onfetch): Change upstreamed at https://github.com/w3c/web-platform-tests/pull/8289.

Source/WebCore:

Covered by existing tests.

  • Modules/fetch/FetchRequest.cpp:

(WebCore::buildOptions): Update to throw only if init.mode is Navigate.

  • Modules/fetch/FetchRequestInit.h:

(WebCore::FetchRequestInit::hasMembers const): If init is present, set default values as per spec.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::loadMainResource): Set fetch mode to navigate.

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::DocumentThreadableLoader): Bypass preflight in case fetch mode is navigate.

LayoutTests:

  • http/tests/workers/service/basic-fetch.https-expected.txt:
  • http/tests/workers/service/resources/basic-fetch-worker.js:
  • http/tests/workers/service/resources/basic-fetch.js:

(async.test):

11:52 AM Changeset in webkit [225795] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit

REGRESSION(r216941): Plugin Process can't access AppStore Plugin Service
https://bugs.webkit.org/show_bug.cgi?id=180701
<rdar://problem/35940948>

Reviewed by Daniel Bates.

The PluginProcess needs access to the AppStore Plugin XPC service.

  • PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:
11:40 AM Changeset in webkit [225794] by commit-queue@webkit.org
  • 6 edits in trunk/LayoutTests

Rebasing/unskipping some WPT service worker tests
https://bugs.webkit.org/show_bug.cgi?id=180705

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-12

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/service-worker-csp-default.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/service-worker-csp-script.https-expected.txt:

LayoutTests:

11:20 AM Changeset in webkit [225793] by jmarcell@apple.com
  • 6 edits
    1 add in tags/Safari-605.1.17

Cherry-pick r225768. rdar://problem/34657871

11:19 AM Changeset in webkit [225792] by Joseph Pecoraro
  • 2 edits in trunk/Source/WTF

Symbol not found: ZN3WTF8LockBase10unlockSlowEv
https://bugs.webkit.org/show_bug.cgi?id=180691

Reviewed by Yusuke Suzuki.

  • wtf/mac/DeprecatedSymbolsUsedBySafari.mm:

(WTF::LockBase::lockSlow):
(WTF::LockBase::unlockSlow):
Add back LockBase Symbols used by System Safari on 10.13.

11:15 AM Changeset in webkit [225791] by Simon Fraser
  • 6 edits
    2 adds in trunk

HTML-page with <object type="image/svg+xml" data="foo.svg"> often is blank
https://bugs.webkit.org/show_bug.cgi?id=180524
<rdar://problem/35920554>

Reviewed by Antti Koivisto.

Source/WebCore:

The test case has script that conditionalizes behavior on whether window.innerWidth/Height
are zero during the load event. We didn't force layout in innerWidth/Height, so whether
they would zero depended on whether the parent frame had laid out, which was timing-sensitive.

Fix by triggering enough layout in the parent document so that the FrameView is resized before
fetching its dimensions in innerWidth/Height. This causes our behavior to match Chrome and Firefox.

Test: fast/dom/iframe-innerWidth.html

  • dom/EventDispatcher.cpp:

(WebCore::EventDispatcher::dispatchEvent): Add some logging that helped me diagnose this.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::innerHeight const):
(WebCore::DOMWindow::innerWidth const):

LayoutTests:

Adjust a test where the new layout is triggering scrollbar creation.

  • fast/dom/iframe-inner-size-scaling-expected.txt:
  • fast/dom/iframe-inner-size-scaling.html:
  • fast/dom/iframe-innerWidth-expected.txt: Added.
  • fast/dom/iframe-innerWidth.html: Added.
11:01 AM Changeset in webkit [225790] by graouts@webkit.org
  • 9 edits in trunk

[Web Animations] Enqueue and dispatch animation events
https://bugs.webkit.org/show_bug.cgi?id=180657
<rdar://problem/35970103>

Reviewed by Chris Dumez.

Source/WebCore:

Now that we have support for the AnimationPlaybackEvent interface, we need a way to enqueue
such events for dispatch at the opportune time. The Web Animations spec defines two ways
to queue and dispatch events.

If the animation has a "document for timing", it should enqueue events on this document.
In our implementation, if the animation timeline is set to a DocumentTimeline, that means
it has a document for timing, and we let the DocumentTimeline enqueue those events, which
will be dispatched through a dedicated GenericTaskQueue<Timer>. These events will be sorted
by their respective timeline time before being dispatched.

If there is no document for timing, events should be dispatched as a standalone task.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::~DocumentTimeline): Close the event dispatch task queue when the
document timeline is torn down.
(WebCore::DocumentTimeline::enqueueAnimationPlaybackEvent): Add the provided event to the
pending animation events queue and, if one hasn't been registered yet, enqueue a task to
dispatch events using a GenericTaskQueue<Timer>.
(WebCore::compareAnimationPlaybackEvents): Comparator used to sort events in performEventDispatchTask()
where events are sorted such that unresolved timeline times come first, and then from the
earlier resolved timeline times to the later resolved timeline times. Events with unresolved
timeline times and equal resolved timeline times are sorted in the order they were enqueued.
(WebCore::DocumentTimeline::performEventDispatchTask): Run a stable sort on a copy of the pending list
of events to dispatch and dispatch the events individually on their respective animations.

  • animation/DocumentTimeline.h:
  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::create): Pass in the document to the constructor.
(WebCore::WebAnimation::WebAnimation): Use the provided document to initialize ActiveDOMObject.
(WebCore::WebAnimation::enqueueAnimationPlaybackEvent): Create an AnimationPlaybackEvent with
the provided type, timeline time and animation time and enqueue it on the document timeline,
if one is available, or dispatch on this animation as a standalone task.
(WebCore::WebAnimation::acceleratedRunningStateDidChange):
(WebCore::WebAnimation::activeDOMObjectName const):
(WebCore::WebAnimation::canSuspendForDocumentSuspension const):
(WebCore::WebAnimation::stop):

  • animation/WebAnimation.h: Define WebAnimation to be an EventTarget and an ActiveDOMObject.
  • animation/WebAnimation.idl: Define WebAnimation to be an EventTarget and an ActiveDOMObject.
  • dom/EventTargetFactory.in:

LayoutTests:

Rebase Web Platform Tests with some progressions based on the IDL changes. Progressions due
to dispatching events will become apparent when the next patch, where we dispatch actual
animation playback events, lands.

  • http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:
10:48 AM Changeset in webkit [225789] by beidson@apple.com
  • 3 edits in trunk/Source/WebKit

Make ServiceWorkers follow the DEFAULT_EXPERIMENTAL_FEATURES_ENABLED flag on Mac.
<rdar://problem/35978311> and https://bugs.webkit.org/show_bug.cgi?id=180697

Reviewed by Chris Dumez.

  • Shared/WebPreferences.yaml:
  • Shared/WebPreferencesDefaultValues.h:
10:40 AM Changeset in webkit [225788] by guijemont@igalia.com
  • 2 edits in trunk/Source/JavaScriptCore

LLInt: reserve 16 bytes of stack on MIPS for native calls
https://bugs.webkit.org/show_bug.cgi?id=180653

Reviewed by Carlos Alberto Lopez Perez.

  • llint/LowLevelInterpreter32_64.asm:

On MIPS, substract 24 from the stack pointer (16 for calling
convention + 8 to be 16-aligned) instead of the 8 on other platforms
(for alignment).

10:08 AM Changeset in webkit [225787] by Chris Dumez
  • 18 edits in trunk/Source

Simplify IPC code between WebProcess and StorageProcess for serviceWorker.postMessage()
https://bugs.webkit.org/show_bug.cgi?id=180683

Reviewed by Brady Eidson.

Merge the 2 code paths from calling postMessage() from a ServiceWorkerClient and from
a ServiceWorker. Also, postMessage() now only IPCs an identifier from the WebContent
process to the StorageProcess. The ServiceWorkerClientData is looked up on Storage
process side from the identifier before being sent to the context process.

Source/WebCore:

  • workers/service/SWClientConnection.h:
  • workers/service/ServiceWorker.cpp:

(WebCore::ServiceWorker::postMessage):

  • workers/service/ServiceWorkerTypes.h:
  • workers/service/server/SWServer.cpp:

(WebCore::SWServer::clientByID const):
(WebCore::SWServer::matchAll):
(WebCore::SWServer::forEachClientForOrigin):
(WebCore::SWServer::claim):
(WebCore::SWServer::registerServiceWorkerClient):
(WebCore::SWServer::unregisterServiceWorkerClient):

  • workers/service/server/SWServer.h:
  • workers/service/server/SWServerWorker.cpp:

(WebCore::SWServerWorker::findClientByIdentifier):

  • workers/service/server/SWServerWorker.h:

Source/WebKit:

  • Scripts/webkit/messages.py:

(forward_declarations_and_headers):
(headers_for_type):

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<ServiceWorkerOrClientIdentifier>::encode):
(IPC::ArgumentCoder<ServiceWorkerOrClientIdentifier>::decode):

  • Shared/WebCoreArgumentCoders.h:
  • StorageProcess/ServiceWorker/WebSWServerConnection.cpp:

(WebKit::WebSWServerConnection::postMessageToServiceWorker):

  • StorageProcess/ServiceWorker/WebSWServerConnection.h:
  • StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
  • WebProcess/Storage/WebSWClientConnection.cpp:

(WebKit::WebSWClientConnection::postMessageToServiceWorker):

  • WebProcess/Storage/WebSWClientConnection.h:
10:02 AM Changeset in webkit [225786] by Michael Catanzaro
  • 2 edits in trunk/Source/WebInspectorUI

Unreviewed, don't print empty error message when copying resource fails

Unsurprisingly, when system() fails, there is not any useful error to be printed, so don't.

  • Scripts/copy-user-interface-resources.pl:

(ditto):

9:26 AM Changeset in webkit [225785] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Allow AudioContext to start when getUserMedia is on
https://bugs.webkit.org/show_bug.cgi?id=180680

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-12
Reviewed by Eric Carlson.

Source/WebCore:

Test: webrtc/getUserMedia-webaudio-autoplay.html

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::willBeginPlayback):

LayoutTests:

  • webrtc/getUserMedia-webaudio-autoplay-expected.txt: Added.
  • webrtc/getUserMedia-webaudio-autoplay.html: Added.
8:51 AM Changeset in webkit [225784] by romain.bellessort@crf.canon.fr
  • 7 edits in trunk

[Readable Streams API] Throw RangeError if a size is provided when creating a readable byte stream
https://bugs.webkit.org/show_bug.cgi?id=180470

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

One new test imported from WPT to check that RangeError is thrown if a size is provided.

  • web-platform-tests/streams/readable-byte-streams/general-expected.txt: Updated expectations.
  • web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt: Updated expectations.
  • web-platform-tests/streams/readable-byte-streams/general.js: Imported one test case from WPT.
  • web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt: Updated expectations.

Source/WebCore:

Throw a RangeError if a ReadableStream is created with type 'bytes' and with a
non-undefined strategy size, as per latest spec:

One new test imported from WPT to check that RangeError is thrown.

  • Modules/streams/ReadableStream.js:

(initializeReadableStream): Check strategy size and throw RangeError if needed.

8:46 AM Changeset in webkit [225783] by clopez@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK][WebRTC] Stop warning with so much verbosity about not implemented RealtimeMediaSourceCenter
https://bugs.webkit.org/show_bug.cgi?id=180694

Reviewed by Youenn Fablet.

No new tests -- no change in functionality.

  • platform/mediastream/RealtimeMediaSourceCenter.cpp:

(WebCore::RealtimeMediaSourceCenter::singleton):

8:12 AM Changeset in webkit [225782] by Ms2ger@igalia.com
  • 2 edits in trunk/LayoutTests

[WPE] Enable some wpt tests.
https://bugs.webkit.org/show_bug.cgi?id=180695

Unreviewed test gardening.

  • platform/wpe/TestExpectations:
7:01 AM Changeset in webkit [225781] by Ms2ger@igalia.com
  • 9 edits
    10 adds
    1 delete in trunk/LayoutTests

[GTK] Update some test expectations.
https://bugs.webkit.org/show_bug.cgi?id=180655

Unreviewed test gardening.

LayoutTests/imported/w3c:

Update tests from upstream, and update test expectations.

  • web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt:
  • web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub.htm:
  • web-platform-tests/common/media.js:
  • web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-video-expected.txt:
  • web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-video.html:
  • web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html:

LayoutTests:

  • platform/gtk/TestExpectations:
    • Add bug numbers.
    • Remove failure expectations in favour of accurate baselines.
  • platform/gtk/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt: Added to account for the fact that libsoup is more lenient about data URLs.
  • platform/gtk/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-video-expected.txt: Added to account for video codec support depending on the platform.
  • platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-autocomplete-expected.txt: Added to account for whitespace differences in the dumped output.
  • platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-elements-filter-expected.txt: Added to account for whitespace differences in the dumped output.
  • platform/gtk/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/telephone-expected.txt: Added to account for whitespace differences in the dumped output.
  • platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt: Removed; the platform-neutral expectation now matches.
6:58 AM Changeset in webkit [225780] by clopez@igalia.com
  • 6 edits
    1 delete in trunk/Tools

[GTK][WPE] Bump GStreamer version to 1.12 in jhbuild
https://bugs.webkit.org/show_bug.cgi?id=171677

Reviewed by Carlos Garcia Campos.

Bump gstreamer related modules and rebase patches still needed and not merged

  • gstreamer/jhbuild.modules:
  • gstreamer/patches/gst-plugins-good-0003-rtpbin-receive-bundle-support.patch: Removed. This was needed for OpenWebRTC. Not longer supported.
  • gstreamer/patches/gst-plugins-good-0005-souphttpsrc-cookie-jar-and-context-query-support.patch: Rebased.
  • gstreamer/patches/gst-plugins-good-0006-qtdemux-add-context-for-a-preferred-protection.patch: Rebased.
  • gstreamer/patches/gst-plugins-good-0008-qtdemux-also-push-buffers-without-encryption-info-in.patch: Rebased.
  • gstreamer/patches/gst-plugins-good-0009-qtdemux-fix-assert-when-moof-contains-one-sample.patch: Added a note about merge commit not still in 1.12.4.
6:29 AM Changeset in webkit [225779] by Ms2ger@igalia.com
  • 7 edits in trunk

Implement {DOMMimeTypeArray, DOMPluginArray}::supportedPropertyNames().
https://bugs.webkit.org/show_bug.cgi?id=180471

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update test expectation. It will now work better if "WebKit built-in PDF"
is not present or not the only available plugin.

  • web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray-expected.txt:

Source/WebCore:

Test: imported/w3c/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray.html

  • plugins/DOMMimeTypeArray.cpp:

(WebCore::DOMMimeTypeArray::supportedPropertyNames):

  • plugins/DOMPluginArray.cpp:

(WebCore::DOMPluginArray::supportedPropertyNames):

LayoutTests:

Remove failure expectation for test that now matches the expectation file.

  • platform/gtk/TestExpectations:
2:35 AM Changeset in webkit [225778] by Yusuke Suzuki
  • 28 edits in trunk

[WTF] Thread::create should have Thread::tryCreate
https://bugs.webkit.org/show_bug.cgi?id=180333

Reviewed by Darin Adler.

Source/JavaScriptCore:

  • assembler/testmasm.cpp:

(JSC::run):

  • b3/air/testair.cpp:
  • b3/testb3.cpp:

(JSC::B3::run):

  • jsc.cpp:

(functionDollarAgentStart):

Source/WebCore:

No behavior change.

  • bindings/js/GCController.cpp:

(WebCore::GCController::garbageCollectOnAlternateThreadForDebugging):

  • platform/audio/ReverbConvolver.cpp:

(WebCore::ReverbConvolver::ReverbConvolver):

  • platform/audio/ReverbConvolver.h:
  • workers/WorkerThread.cpp:

(WebCore::WorkerThread::start):

Source/WebKit:

  • UIProcess/API/glib/IconDatabase.cpp:

(WebKit::IconDatabase::open):

  • UIProcess/linux/MemoryPressureMonitor.cpp:

(WebKit::MemoryPressureMonitor::MemoryPressureMonitor):

Source/WebKitLegacy:

  • Storage/StorageThread.cpp:

(WebCore::StorageThread::start):

Source/WebKitLegacy/win:

  • WebKitQuartzCoreAdditions/CVDisplayLink.cpp:

(WKQCA::CVDisplayLink::start):

Source/WTF:

Many callers of Thread::create assume that it returns non-nullptr Thread.
But if the number of threads hits the limit in the system, creating Thread
would fail. In that case, it is really difficult to keep WebKit working.

We introduce Thread::tryCreate, and change the returned value from Thread::create
from RefPtr<Thread> to Ref<Thread>. In Thread::create, we ensure thread creation
succeeds by RELEASE_ASSERT. And we use Thread::create intentionally if the
caller assumes that thread should be created.

  • wtf/AutomaticThread.cpp:

(WTF::AutomaticThread::start):

  • wtf/ParallelJobsGeneric.cpp:

(WTF::ParallelEnvironment::ThreadPrivate::tryLockFor):

  • wtf/Threading.cpp:

(WTF::Thread::tryCreate):
(WTF::Thread::create): Deleted.

  • wtf/Threading.h:

(WTF::Thread::create):

  • wtf/WorkQueue.cpp:

(WTF::WorkQueue::concurrentApply):

Tools:

  • TestWebKitAPI/Tests/WTF/Condition.cpp:
  • TestWebKitAPI/Tests/WTF/ParkingLot.cpp:
  • TestWebKitAPI/Tests/WTF/Signals.cpp:

(TEST):

  • TestWebKitAPI/Tests/WTF/ThreadGroup.cpp:

(TestWebKitAPI::testThreadGroup):
(TestWebKitAPI::TEST):

Note: See TracTimeline for information about the timeline view.