WebKit-https.git
3 years ago[iOS] Don't import 'UIKit-apps.sb' to the WebContent process sandbox
bfulgham@apple.com [Mon, 11 Dec 2017 21:25:51 +0000 (21:25 +0000)]
[iOS] Don't import 'UIKit-apps.sb' to the WebContent process sandbox
https://bugs.webkit.org/show_bug.cgi?id=180610
<rdar://problem/18899506>

Reviewed by Dean Jackson.

Stop including 'system.sb', and just include the portions of that sandbox that we
actually use in WebContent Process. This is the first step in some further sandbox
tightening.

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

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

3 years agoStop using deprecated target conditional for simulator builds
timothy_horton@apple.com [Mon, 11 Dec 2017 20:10:03 +0000 (20:10 +0000)]
Stop using deprecated target conditional for simulator builds
https://bugs.webkit.org/show_bug.cgi?id=180662
<rdar://problem/35136156>

Reviewed by Simon Fraser.

PerformanceTests:

* StitchMarker/wtf/Platform.h:
* StitchMarker/wtf/dependencies/bmalloc/BPlatform.h:

Source/bmalloc:

* bmalloc/BPlatform.h:

Source/ThirdParty/libwebrtc:

* Source/third_party/libyuv/source/mjpeg_decoder.cc:
* Source/webrtc/examples/objc/AppRTCMobile/ARDAppClient.m:
(-[ARDAppClient createLocalVideoTrack]):
* Source/webrtc/examples/objc/AppRTCMobile/tests/ARDAppClient_xctest.mm:
* Source/webrtc/modules/audio_device/ios/audio_device_ios.mm:
(webrtc::LogDeviceInfo):

Source/WebKitLegacy/mac:

* postprocess-headers.sh:

Source/WTF:

* wtf/Platform.h:

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

3 years agoStyleBench improvements
antti@apple.com [Mon, 11 Dec 2017 19:41:46 +0000 (19:41 +0000)]
StyleBench improvements
https://bugs.webkit.org/show_bug.cgi?id=180646

Reviewed by Geoffrey Garen.

- Remove :empty rule from global stylesheet. It caused all tests to hit positional pseudo-class code paths.
- Instead use min-width to create easy flexible layout. Use it for ::before/::after too.
- Add :empty to positional pseudo-class test.
- Include some id attributes and id selectors
- Chance to have more than 1 classes per compound selector
- Change distribution of elements and classes to be non-uniform
- Other bug fixes

* StyleBench/resources/style-bench.js:
(Random.prototype.numberSquareWeightedToLow):
(Random):
(defaultConfiguration):
(prototype.randomElementName):
(prototype.randomId):
(prototype.makeCompoundSelector):
(prototype.makeSelector):
(prototype.makeElement):

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

3 years ago[WTF] Add Converter traits to StringHasher instead of function pointer
utatane.tea@gmail.com [Mon, 11 Dec 2017 19:22:01 +0000 (19:22 +0000)]
[WTF] Add Converter traits to StringHasher instead of function pointer
https://bugs.webkit.org/show_bug.cgi?id=180656

Reviewed by JF Bastien.

Source/WebKit:

* WebProcess/WebProcess.cpp:
(WebKit::addCaseFoldedCharacters):

Source/WTF:

In the latest ICU, UChar is char16_t. So defining defaultConverter(UChar)
and defaultConverter(char16_t) causes duplicate definitions.
Instead of passing a funtion pointer, we pass a trait class DefaultConveter
which has `convert` static function. And we make this `convert` function
generic. This avoids defining convert function for UChar and char16_t.

* wtf/text/StringHash.h:
(WTF::ASCIICaseInsensitiveHash::FoldCase::convert):
(WTF::ASCIICaseInsensitiveHash::hash):
(WTF::ASCIICaseInsensitiveHash::foldCase): Deleted.
* wtf/text/StringHasher.h:
(WTF::StringHasher::DefaultConverter::convert):
(WTF::StringHasher::addCharactersAssumingAligned):
(WTF::StringHasher::addCharacters):
(WTF::StringHasher::computeHashAndMaskTop8Bits):
(WTF::StringHasher::computeHash):
(WTF::StringHasher::computeLiteralHash):
(WTF::StringHasher::computeLiteralHashAndMaskTop8Bits):
(WTF::StringHasher::computeHashImpl):
(WTF::StringHasher::Converter): Deleted.
(WTF::StringHasher::defaultConverter): Deleted.

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

3 years ago[Web Animations] Implement AnimationPlaybackEvent and AnimationPlaybackEventInit
graouts@webkit.org [Mon, 11 Dec 2017 19:19:35 +0000 (19:19 +0000)]
[Web Animations] Implement AnimationPlaybackEvent and AnimationPlaybackEventInit
https://bugs.webkit.org/show_bug.cgi?id=180647

Reviewed by Dean Jackson.

Actually fix Windows build this time.

* animation/AnimationPlaybackEventInit.h:

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

3 years ago[Web Animations] Implement AnimationPlaybackEvent and AnimationPlaybackEventInit
graouts@webkit.org [Mon, 11 Dec 2017 18:56:56 +0000 (18:56 +0000)]
[Web Animations] Implement AnimationPlaybackEvent and AnimationPlaybackEventInit
https://bugs.webkit.org/show_bug.cgi?id=180647
<rdar://problem/35966325>

Reviewed by Dean Jackson.

Unreviewed, fix Windows build.

* animation/AnimationPlaybackEventInit.h:

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

3 years agoFloatingObjects/FloatingObject classes should hold weak references to renderers
zalan@apple.com [Mon, 11 Dec 2017 18:23:48 +0000 (18:23 +0000)]
FloatingObjects/FloatingObject classes should hold weak references to renderers
https://bugs.webkit.org/show_bug.cgi?id=180627
<rdar://problem/35954069>

Reviewed by Antti Koivisto.

* rendering/FloatingObjects.cpp:
(WebCore::FloatingObject::FloatingObject):
(WebCore::ComputeFloatOffsetAdapter::ComputeFloatOffsetAdapter):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter::ComputeFloatOffsetForFloatLayoutAdapter):
(WebCore::ComputeFloatOffsetForLineLayoutAdapter::ComputeFloatOffsetForLineLayoutAdapter):
(WebCore::FindNextFloatLogicalBottomAdapter::FindNextFloatLogicalBottomAdapter):
(WebCore::FindNextFloatLogicalBottomAdapter::collectIfNeeded):
(WebCore::FloatingObjects::findNextFloatLogicalBottomBelow):
(WebCore::FloatingObjects::findNextFloatLogicalBottomBelowForBlock):
(WebCore::FloatingObjects::FloatingObjects):
(WebCore::FloatingObjects::clearLineBoxTreePointers):
(WebCore::FloatingObjects::logicalLeftOffsetForPositioningFloat):
(WebCore::FloatingObjects::logicalRightOffsetForPositioningFloat):
(WebCore::FloatingObjects::logicalLeftOffset):
(WebCore::FloatingObjects::logicalRightOffset):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter<FloatingObject::FloatRight>::updateOffsetIfNeeded):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter<FloatTypeValue>::heightRemaining const):
(WebCore::ComputeFloatOffsetAdapter<FloatTypeValue>::collectIfNeeded):
(WebCore::ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatLeft>::updateOffsetIfNeeded):
(WebCore::ComputeFloatOffsetForLineLayoutAdapter<FloatingObject::FloatRight>::updateOffsetIfNeeded):
* rendering/FloatingObjects.h:
(WebCore::FloatingObject::renderer const):
(WebCore::FloatingObjects::renderer const):

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

3 years agoTurn on ENABLE_APPLICATION_MANIFEST
commit-queue@webkit.org [Mon, 11 Dec 2017 18:09:32 +0000 (18:09 +0000)]
Turn on ENABLE_APPLICATION_MANIFEST
https://bugs.webkit.org/show_bug.cgi?id=180562
rdar://problem/35924737

Patch by David Quesada <david_quesada@apple.com> on 2017-12-11
Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:
* loader/LinkLoader.cpp:
(WebCore::createLinkPreloadResourceClient):
* loader/cached/CachedResourceRequest.cpp:
    Add a missing #include that was implicitly added in the unified source when
    the feature is disabled.

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

* Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:

Tools:

* Configurations/FeatureDefines.xcconfig:

LayoutTests:

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

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

3 years agoAdd a runtime feature flag for ImageBitmap and OffscreenCanvas
dino@apple.com [Mon, 11 Dec 2017 18:07:48 +0000 (18:07 +0000)]
Add a runtime feature flag for ImageBitmap and OffscreenCanvas
https://bugs.webkit.org/show_bug.cgi?id=180652
<rdar://problem/35969611>

Reviewed by Antoine Quint.

Source/WebCore:

Add a RuntimeEnabledFeature for these interfaces, and link the bindings
to the feature.

Test: fast/canvas/offscreen-enabled.html

* bindings/js/WebCoreBuiltinNames.h:
* html/ImageBitmap.idl:
* html/OffscreenCanvas.idl:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setImageBitmapOffscreenCanvasEnabled):
(WebCore::RuntimeEnabledFeatures::imageBitmapOffscreenCanvasEnabled const):
* page/WindowOrWorkerGlobalScope.idl:

Source/WebKit:

Add an experimental feature flag for these interfaces.

* Shared/WebPreferences.yaml:

Websites/webkit.org:

Simple test to validate if these interfaces are enabled.

* experimental-features.html:

LayoutTests:

* fast/canvas/offscreen-enabled-expected.txt: Added.
* fast/canvas/offscreen-enabled.html: Added.

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

3 years ago[Web Animations] Implement AnimationPlaybackEvent and AnimationPlaybackEventInit
graouts@webkit.org [Mon, 11 Dec 2017 18:02:37 +0000 (18:02 +0000)]
[Web Animations] Implement AnimationPlaybackEvent and AnimationPlaybackEventInit
https://bugs.webkit.org/show_bug.cgi?id=180647
<rdar://problem/35966325>

Reviewed by Dean Jackson.

We implement the AnimationPlaybackEvent interface and AnimationPlaybackEventInit dictionary
as the first step towards dispatching animation "finish" and "cancel" events.

Animation playback events will be dispatched on Animation objects and expose the timeline time
and animation current time at the time they were constructed. Dispatch itself, which will be
the focus of the next patch, is not synchronous, so it's important to track those values
at creation time.

No new tests yet, followup patches will enable event dispatch and existing Web Platform Tests
will show progressions.

* CMakeLists.txt:
* DerivedSources.make:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* animation/AnimationPlaybackEvent.cpp: Added.
(WebCore::AnimationPlaybackEvent::AnimationPlaybackEvent):
(WebCore::AnimationPlaybackEvent::bindingsCurrentTime const):
(WebCore::AnimationPlaybackEvent::bindingsTimelineTime const):
* animation/AnimationPlaybackEvent.h: Added.
* animation/AnimationPlaybackEvent.idl: Added.
* animation/AnimationPlaybackEventInit.h: Added.
* animation/AnimationPlaybackEventInit.idl: Added.
* bindings/js/WebCoreBuiltinNames.h:
* dom/EventNames.in:

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

3 years ago[WPE] Enable most wpt html tests.
Ms2ger@igalia.com [Mon, 11 Dec 2017 17:46:26 +0000 (17:46 +0000)]
[WPE] Enable most wpt html tests.
https://bugs.webkit.org/show_bug.cgi?id=180650

Unreviewed test gardening.

* platform/wpe/TestExpectations:
* platform/wpe/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-showModal-expected.txt:
  Added: same as GTK; whitespace-only difference with the generic expectation file.
* platform/wpe/imported/w3c/web-platform-tests/html/semantics/selectors/pseudo-classes/inrange-outofrange-expected.txt:
  Added: whitespace-only difference with the generic expectation file.
* platform/wpe/imported/w3c/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator-pluginarray-expected.txt:
  Added: some subtests pass because the plugin array does not contain any
  plugins on WPE, and issues with the actual elements of the array can
  not be detected.

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

3 years ago[WinCairo] DumpRenderTree times out for all non-http tests
commit-queue@webkit.org [Mon, 11 Dec 2017 17:38:57 +0000 (17:38 +0000)]
[WinCairo] DumpRenderTree times out for all non-http tests
https://bugs.webkit.org/show_bug.cgi?id=180571

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2017-12-11
Reviewed by Alex Christensen.

Bug fix on processing the curl event for file protocol.

No new tests. This fix is to run existing tests.

* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::completeDidReceiveResponse):
* platform/network/curl/CurlRequest.h:
(WebCore::CurlRequest::isCompleted const):
(WebCore::CurlRequest::isCancelled const):
(WebCore::CurlRequest::isCompletedOrCancelled const):

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

3 years agoUnreviewed, rolling out r225737.
zandobersek@gmail.com [Mon, 11 Dec 2017 10:16:55 +0000 (10:16 +0000)]
Unreviewed, rolling out r225737.

Breaks Git clones of the repository, including EWSs and webkitbot.

Reverted changeset:

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

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

3 years agoREGRESSION(r221931): Row stretch doesn't work for grid container with min-height
rego@igalia.com [Mon, 11 Dec 2017 09:11:19 +0000 (09:11 +0000)]
REGRESSION(r221931): Row stretch doesn't work for grid container with min-height
https://bugs.webkit.org/show_bug.cgi?id=180287

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

* web-platform-tests/css/css-grid/grid-model/grid-box-sizing-001-expected.txt:
Update expectations as the test is now passing.

Source/WebCore:

In r221931 we moved the stretch phase as the last step of
the track sizing algorithm.
However this introduced a regression as we were no longer
taking into account the grid container min-width|height constraints
during this step.

The CSS WG modified the spec so it now defines what to do
in these situations (https://drafts.csswg.org/css-grid/#algo-stretch):
  "If the free space is indefinite, but the grid container
   has a definite min-width/height, use that size to calculate
   the free space for this step instead."

This patch adds a new method
GridTrackSizingAlgorithmStrategy::freeSpaceForStretchAutoTracksStep().
When we're in the DefiniteSizeStrategy it just returns the current
free space.
For the IndefiniteSizeStrategy in the columns case we don't need
any special computation (the same that happens in
recomputeUsedFlexFractionIfNeeded()); for rows it uses the min size
of the grid container (respecting min-width|height properties)
to calculate the free space.

Test: imported/w3c/web-platform-tests/css/css-grid/layout-algorithm/grid-stretch-respects-min-size-001.html

* rendering/GridTrackSizingAlgorithm.cpp:
(WebCore::IndefiniteSizeStrategy::freeSpaceForStretchAutoTracksStep const):
(WebCore::DefiniteSizeStrategy::freeSpaceForStretchAutoTracksStep const):
(WebCore::GridTrackSizingAlgorithm::stretchAutoTracks):
* rendering/GridTrackSizingAlgorithm.h:

LayoutTests:

* TestExpectations: Now layout-algorithm/grid-stretch-respects-min-size-001.html
from WPT is passing, so this patch removes it from TestExpectations file.

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

3 years ago[GTK] WebDriver: run-webdriver-tests is leaking a DumpRenderTree directory in tmp
carlosgc@webkit.org [Mon, 11 Dec 2017 08:31:38 +0000 (08:31 +0000)]
[GTK] WebDriver: run-webdriver-tests is leaking a DumpRenderTree directory in tmp
https://bugs.webkit.org/show_bug.cgi?id=180426

Reviewed by Michael Catanzaro.

This happens when running the tests with Xvfb driver, because _setup_environ_for_test() is called twice and the
DTR temp directory is created there every time. Only the last directory created is cleaned up by the driver
destructor. The DRT temp directory is only needed for layout tests, so we could even avoid its creation by
moving it to the start() method like other drivers do (included the base driver implementation). Since API and
WebDriver tests don't call start(), the directory is not even created, and the required env vars are not set
either in that case. Weston driver was behaving differently for some reason, it's now consistent with all other
drivers.

* Scripts/webkitpy/port/headlessdriver.py:
(HeadlessDriver._setup_environ_for_test): Do not set DUMPRENDERTREE_TEMP and XDG_CACHE_HOME if _driver_tempdir is None.
(HeadlessDriver._start): Use Port._driver_tempdir() to create the driver temp directory.
* Scripts/webkitpy/port/waylanddriver.py:
(WaylandDriver._setup_environ_for_test): Do not set DUMPRENDERTREE_TEMP and XDG_CACHE_HOME if _driver_tempdir is None.
(WaylandDriver._start): Use Port._driver_tempdir() to create the driver temp directory.
* Scripts/webkitpy/port/westondriver.py:
(WestonDriver._setup_environ_for_test): Do not set DUMPRENDERTREE_TEMP and XDG_CACHE_HOME if _driver_tempdir is None.
(WestonDriver._start): Use Port._driver_tempdir() to create the driver temp directory.
(WestonDriver.stop): Do not delete the temp directory, it's done by the parent class.
(WestonDriver._ensure_driver_tmpdir_subdirectory): Deleted.
* Scripts/webkitpy/port/westondriver_unittest.py:
(WestonDriverTest.make_driver):
(WestonDriverTest.test_stop):
* Scripts/webkitpy/port/xorgdriver.py:
(XorgDriver._setup_environ_for_test): Do not set DUMPRENDERTREE_TEMP and XDG_CACHE_HOME if _driver_tempdir is None.
(XorgDriver._start): Use Port._driver_tempdir() to create the driver temp directory.
* Scripts/webkitpy/port/xvfbdriver.py:
(XvfbDriver._setup_environ_for_test): Do not set DUMPRENDERTREE_TEMP and XDG_CACHE_HOME if _driver_tempdir is None.
(XvfbDriver._start): Use Port._driver_tempdir() to create the driver temp directory.

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

3 years agoWebDriver: get active element should return no such element error when there isn...
carlosgc@webkit.org [Mon, 11 Dec 2017 08:30:25 +0000 (08:30 +0000)]
WebDriver: get active element should return no such element error when there isn't an active element
https://bugs.webkit.org/show_bug.cgi?id=180421

Reviewed by Brian Burg.

We currently return unknown error.

Fixes: imported/w3c/webdriver/tests/element_retrieval/get_active_element.py::test_missing_document_element

* Session.cpp:
(WebDriver::Session::getActiveElement):

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

3 years agoUnreviewed webkitpy fix on Linux platforms after r225721.
zandobersek@gmail.com [Mon, 11 Dec 2017 07:55:10 +0000 (07:55 +0000)]
Unreviewed webkitpy fix on Linux platforms after r225721.

Add an empty 'linux' entry to the PUBLIC_TABLE mapping in the
VersionNameMap class. This avoids asserting in this class's
mapping_for_platform() method when the code is evaluated on a Linux
system, which happens when the static VERSION_FALLBACK_ORDER member in
the WinCairoPort class is constructed. This can occur during a
test-webkitpy run or when trying to construct a WPEPort instance in
PortFactory, which isn't possible because again the WinCairoPort
instance is constructed first, leading to the same assert in both cases.

* Scripts/webkitpy/common/version_name_map.py:
(VersionNameMap.__init__):

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

3 years agoAdd a script to automate W3c web-platform-tests pull request creations from WebKit...
commit-queue@webkit.org [Mon, 11 Dec 2017 05:04:33 +0000 (05:04 +0000)]
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-10
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.

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

3 years agoIncorrect bounds inside <mover>/<munder> when a stretchy operator is present
commit-queue@webkit.org [Mon, 11 Dec 2017 03:10:41 +0000 (03:10 +0000)]
Incorrect bounds inside <mover>/<munder> when a stretchy operator is present
https://bugs.webkit.org/show_bug.cgi?id=179682

Patch by Minsheng Liu <lambda@liu.ms> on 2017-12-10
Reviewed by Frédéric Wang.

Source/WebCore:

Currently a stretchy operator inside <mover>/<munder>/<munderover> is stretched
during paint() rather than layout(), which leads to both end user confusion
and many unexpected behaviors. This patch rewrites
RenderMathMLUnderOver::stretchHorizontalOperatorsAndLayoutChildren()
to both eliminate the issue and make operator stretching more standard
conforming.

A test is added to check the stretch width of stretchy operators in various
scenarios:
mathml/opentype/munderover-stretch-width.html

A previous test is updated:
mathml/opentype/opentype-stretchy-horizontal.html

* rendering/mathml/RenderMathMLOperator.cpp:
(WebCore::RenderMathMLOperator::stretchTo):
(WebCore::RenderMathMLOperator::resetStretchSize):
(WebCore::RenderMathMLOperator::paint):
* rendering/mathml/RenderMathMLOperator.h:
(WebCore::RenderMathMLOperator::setStretchWidthLocked):
(WebCore::RenderMathMLOperator::isStretchWidthLocked const):
* rendering/mathml/RenderMathMLUnderOver.cpp:
(WebCore::toHorizontalStretchyOperator):
(WebCore::fixLayoutAfterStretch):
(WebCore::RenderMathMLUnderOver::stretchHorizontalOperatorsAndLayoutChildren):

LayoutTests:

Added test case: mathml/opentype/munderover-stretch-width.html

Updated test case: mathml/opentype/opentype-stretchy-horizontal
We update the test file to make sure the stretchy <mo> has zero lspace/rspace.
Expected results for macOS and iOS are included.

* mathml/opentype/munderover-stretch-width-expected.txt: Added.
* mathml/opentype/munderover-stretch-width.html: Added.
* mathml/opentype/opentype-stretchy-horizontal.html:
* platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.txt: Removed.
* platform/ios/mathml/opentype/opentype-stretchy-horizontal-expected.png:
* platform/ios/mathml/opentype/opentype-stretchy-horizontal-expected.txt:
* platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.png:
* platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.txt:
* platform/win/mathml/opentype/opentype-stretchy-horizontal-expected.txt: Removed.

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

3 years ago[WTF] Reduce sizeof(Thread) by adjusting alignment
utatane.tea@gmail.com [Mon, 11 Dec 2017 01:32:19 +0000 (01:32 +0000)]
[WTF] Reduce sizeof(Thread) by adjusting alignment
https://bugs.webkit.org/show_bug.cgi?id=180630

Reviewed by Saam Barati.

Reduce sizeof(Thread) slightly by adjusting alignment.

* wtf/Threading.h:

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

3 years agoHarden a few assertions in GC sweep
fpizlo@apple.com [Mon, 11 Dec 2017 01:10:32 +0000 (01:10 +0000)]
Harden a few assertions in GC sweep
https://bugs.webkit.org/show_bug.cgi?id=180634

Reviewed by Saam Barati.

This turns one dynamic check into a release assertion and upgrades another assertion to a release
assertion.

* heap/MarkedBlock.cpp:
(JSC::MarkedBlock::Handle::sweep):

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

3 years ago[python] Modernize "except" usage for python3 compatibility
annulen@yandex.ru [Sun, 10 Dec 2017 21:11:18 +0000 (21:11 +0000)]
[python] Modernize "except" usage for python3 compatibility
https://bugs.webkit.org/show_bug.cgi?id=180612

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

* inspector/scripts/generate-inspector-protocol-bindings.py:

Tools:

* BuildSlaveSupport/build.webkit.org-config/committer_auth.py:
(CommitterAuth.auth_json):
(CommitterAuth.authenticate):
(CommitterAuth.is_webkit_committer):
(CommitterAuth.is_webkit_trac_user):
* BuildSlaveSupport/wait-for-SVN-server.py:
(getLatestSVNRevision):
* QueueStatusServer/handlers/updatebase.py:
(UpdateBase._int_from_request):
* Scripts/webkitpy/bindings/main.py:
(BindingsTests.generate_from_idl):
(BindingsTests.generate_supplemental_dependency):
(BindingsTests.detect_changes):
* Scripts/webkitpy/codegen/main.py:
(BuiltinsGeneratorTests.generate_from_js_builtins):
(BuiltinsGeneratorTests.detect_changes):
* Scripts/webkitpy/common/checkout/changelog.py:
(ChangeLog.parse_latest_entry_from_file):
* Scripts/webkitpy/common/checkout/checkout.py:
(Checkout.bug_id_for_this_commit):
* Scripts/webkitpy/common/checkout/scm/git.py:
(Git.in_working_directory):
(Git.clone):
(Git._string_to_int_or_none):
(Git._commit_on_branch):
* Scripts/webkitpy/common/checkout/scm/svn.py:
(SVN.revisions_changing_file):
* Scripts/webkitpy/common/config/committers.py:
(CommitterList.load_json):
* Scripts/webkitpy/common/message_pool.py:
(_Worker.run):
* Scripts/webkitpy/common/net/buildbot/buildbot.py:
(Builder.force_build.predicate):
(Builder._fetch_revision_to_build_map):
(BuildBot._fetch_build_dictionary):
* Scripts/webkitpy/common/net/credentials.py:
(Credentials._credentials_from_git):
* Scripts/webkitpy/common/net/networktransaction.py:
(NetworkTransaction.run):
* Scripts/webkitpy/common/net/networktransaction_unittest.py:
(NetworkTransactionTest.test_exception):
(NetworkTransactionTest.test_timeout):
* Scripts/webkitpy/common/net/statusserver.py:
(StatusServer._fetch_url):
* Scripts/webkitpy/common/net/unittestresults.py:
(UnitTestResults.results_from_string):
* Scripts/webkitpy/common/prettypatch.py:
(PrettyPatch.check_pretty_patch):
(PrettyPatch.pretty_patch_text):
* Scripts/webkitpy/common/prettypatch_unittest.py:
(PrettyPatchTest.check_ruby):
* Scripts/webkitpy/common/system/autoinstall.py:
(AutoInstaller._extract_tar):
(AutoInstaller._unzip):
(AutoInstaller._replace_domain_with_next_mirror):
(AutoInstaller._download_to_stream):
(AutoInstaller.install):
* Scripts/webkitpy/common/system/crashlogs.py:
(CrashLogs._find_newest_log_darwin):
(CrashLogs._find_newest_log_win):
(CrashLogs._find_all_logs_darwin):
* Scripts/webkitpy/common/system/executive.py:
(Executive.kill_process):
(Executive.running_pids):
* Scripts/webkitpy/common/system/filesystem.py:
(FileSystem.maybe_make_directory):
(FileSystem.remove):
* Scripts/webkitpy/common/system/user.py:
(User._wait_on_list_response):
(User.edit):
(User.page):
(User.can_open_url):
* Scripts/webkitpy/common/system/workspace.py:
(Workspace.create_zip):
* Scripts/webkitpy/common/watchlist/watchlistparser.py:
(WatchListParser._parse_definition_section):
* Scripts/webkitpy/common/webkitunittest.py:
(TestCase._assertRaisesRegexp):
* Scripts/webkitpy/inspector/main.py:
(InspectorGeneratorTests.generate_from_json):
(InspectorGeneratorTests.detect_changes):
* Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py:
(LayoutTestFinder._read_test_names_from_file):
* Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
(LayoutTestRunner.run_tests):
* Scripts/webkitpy/layout_tests/controllers/manager.py:
(Manager.upload_results):
* Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
(JSONResultsGenerator.upload_json_files):
(JSONResultsGenerator._get_archived_json_results):
* Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
(MiscTests.test_parse_warning):
(SemanticTests.test_bad_bugid):
* Scripts/webkitpy/layout_tests/models/test_run_results.py:
(summarize_results):
* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(main):
* Scripts/webkitpy/layout_tests/servers/http_server.py:
(Lighttpd._remove_stale_logs):
* Scripts/webkitpy/layout_tests/servers/http_server_base.py:
(HttpServerBase._is_running_on_port):
(HttpServerBase._check_that_all_ports_are_available):
* Scripts/webkitpy/layout_tests/servers/http_server_integrationtest.py:
(BaseTest.assert_servers_are_down):
(BaseTest.assert_servers_are_up):
(BaseTest.integration_test_server__fails):
(BaseTest.maybe_make_dir):
* Scripts/webkitpy/layout_tests/servers/run_webkit_httpd.py:
(run_server):
* Scripts/webkitpy/layout_tests/servers/web_platform_test_launcher.py:
* Scripts/webkitpy/layout_tests/servers/websocket_server.py:
(PyWebSocket.is_running):
(PyWebSocket._remove_stale_logs):
* Scripts/webkitpy/performance_tests/perftestsrunner.py:
(_merge_slave_config_json):
(_merge_outputs_if_needed):
(_upload_json):
* Scripts/webkitpy/port/base.py:
(Port._build_driver):
(Port._build_image_diff):
(Port._symbols_string):
* Scripts/webkitpy/port/leakdetector.py:
(LeakDetector.count_total_bytes_and_unique_leaks):
(LeakDetector.check_for_leaks):
* Scripts/webkitpy/port/leakdetector_valgrind.py:
(LeakDetectorValgrind._parse_leaks_output):
* Scripts/webkitpy/port/mac.py:
(MacPort.reset_preferences):
(MacPort.stop_helper):
* Scripts/webkitpy/port/port_testcase.py:
(PortTestCase.assert_servers_are_down):
(PortTestCase.assert_servers_are_up):
(PortTestCase.integration_test_http_server__fails):
(PortTestCase.integration_test_websocket_server__fails):
* Scripts/webkitpy/port/server_process.py:
(ServerProcess.write):
(ServerProcess._wait_for_data_and_update_buffers_using_select):
(ServerProcess._non_blocking_read_win32):
* Scripts/webkitpy/port/win.py:
(WinPort._runtime_feature_list):
* Scripts/webkitpy/port/xvfbdriver.py:
(XvfbDriver._xvfb_read_display_id):
* Scripts/webkitpy/style/checkers/jsonchecker.py:
(JSONChecker.check):
* Scripts/webkitpy/style/checkers/xml.py:
(XMLChecker.check):
* Scripts/webkitpy/style/filereader.py:
(TextFileReader.process_file):
* Scripts/webkitpy/style/filereader_unittest.py:
(TextFileReaderTest.test_process_file__does_not_exist):
* Scripts/webkitpy/style/optparser.py:
(ArgumentParser.parse):
* Scripts/webkitpy/tool/bot/irc_command.py:
(CreateBug.execute):
(Rollout.execute):
* Scripts/webkitpy/tool/bot/ircbot.py:
(IRCBot.process_message):
* Scripts/webkitpy/tool/bot/layouttestresultsreader.py:
(LayoutTestResultsReader._read_file_contents):
* Scripts/webkitpy/tool/bot/patchanalysistask.py:
(PatchAnalysisTask._run_command):
* Scripts/webkitpy/tool/bot/queueengine.py:
(QueueEngine.run):
* Scripts/webkitpy/tool/commands/abstractsequencedcommand.py:
(AbstractSequencedCommand.execute):
* Scripts/webkitpy/tool/commands/download.py:
(AbstractPatchSequencingCommand._prepare_to_process):
* Scripts/webkitpy/tool/commands/earlywarningsystem.py:
(AbstractEarlyWarningSystem.review_patch):
* Scripts/webkitpy/tool/commands/queries.py:
(FailureReason._blame_line_for_revision):
* Scripts/webkitpy/tool/commands/queues.py:
(AbstractQueue._cc_watchers):
(AbstractQueue.run_webkit_patch):
(CommitQueue.process_work_item):
(StyleQueue.review_patch):
* Scripts/webkitpy/tool/commands/rebaseline.py:
(AbstractParallelRebaselineCommand._run_webkit_patch):
* Scripts/webkitpy/tool/commands/stepsequence.py:
(StepSequence.run_and_handle_errors):
* Scripts/webkitpy/tool/commands/suggestnominations.py:
(SuggestNominations._count_recent_patches):
* Scripts/webkitpy/tool/multicommandtool.py:
(MultiCommandTool.main):
* Scripts/webkitpy/tool/servers/rebaselineserver.py:
(_rebaseline_test):
(_move_test_baselines):
* Scripts/webkitpy/tool/steps/addsvnmimetypeforpng_unittest.py:
(AddSvnMimetypeForPngTest.test_run):
* Scripts/webkitpy/tool/steps/checkstyle.py:
(CheckStyle.run):
* Scripts/webkitpy/tool/steps/commit.py:
(Commit._check_test_expectations):
(Commit.run):
* Scripts/webkitpy/tool/steps/confirmdiff.py:
(ConfirmDiff._show_pretty_diff):
* Scripts/webkitpy/tool/steps/haslanded.py:
(HasLanded.diff_diff):
* Scripts/webkitpy/tool/steps/preparechangelog.py:
(PrepareChangeLog.run):
* Scripts/webkitpy/tool/steps/promptforbugortitle.py:
(PromptForBugOrTitle.run):
* Scripts/webkitpy/tool/steps/sortxcodeprojectfiles.py:
(SortXcodeProjectFiles.run):
* Scripts/webkitpy/webdriver_tests/webdriver_w3c_web_server.py:
(WebDriverW3CWebServer._wait_for_server.check_port):
* TestResultServer/model/datastorefile.py:
(DataStoreFile.save_data):
* jhbuild/jhbuildutils.py:
(enter_jhbuild_environment_if_available):

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

3 years agoAPIClient.h uses things from <tuple> without including it explicitly
commit-queue@webkit.org [Sun, 10 Dec 2017 16:47:24 +0000 (16:47 +0000)]
APIClient.h uses things from <tuple> without including it explicitly
https://bugs.webkit.org/show_bug.cgi?id=180609

Patch by Stephan Szabo <stephan.szabo@sony.com> on 2017-12-10
Reviewed by Darin Adler.

* Shared/API/APIClient.h:

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

3 years agoUnreviewed, follow-up patch after r225470
utatane.tea@gmail.com [Sun, 10 Dec 2017 13:14:27 +0000 (13:14 +0000)]
Unreviewed, follow-up patch after r225470
https://bugs.webkit.org/show_bug.cgi?id=180308

* Modules/webdatabase/SQLTransaction.cpp:
(WebCore::SQLTransaction::checkAndHandleClosedDatabase):
Use consistent operands.

* bindings/js/JSCallbackData.h:
(WebCore::JSCallbackData::JSCallbackData):
Use class field initializer.

* xml/parser/XMLDocumentParserLibxml2.cpp:
(WebCore::openFunc):
Use consistent operands.

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

3 years agoUnreviewed, follow-up patch after r225726
utatane.tea@gmail.com [Sun, 10 Dec 2017 13:00:24 +0000 (13:00 +0000)]
Unreviewed, follow-up patch after r225726
https://bugs.webkit.org/show_bug.cgi?id=180622

Suggested by Darin. We should take care of signed-extension of `char`.

* wtf/text/StringHasher.h:
(WTF::StringHasher::defaultConverter):

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

3 years agoAdd test demonstrating leaks that happen when we create reference cycles with DOM...
darin@apple.com [Sun, 10 Dec 2017 02:53:29 +0000 (02:53 +0000)]
Add test demonstrating leaks that happen when we create reference cycles with DOM objects
https://bugs.webkit.org/show_bug.cgi?id=180323

Reviewed by Filip Pizlo.

* fast/dom/reference-cycle-leaks-expected.txt: Added.
* fast/dom/reference-cycle-leaks.html: Added.

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

3 years ago[WTF] Remove RELAXED_CONSTEXPR
utatane.tea@gmail.com [Sat, 9 Dec 2017 21:42:02 +0000 (21:42 +0000)]
[WTF] Remove RELAXED_CONSTEXPR
https://bugs.webkit.org/show_bug.cgi?id=180624

Reviewed by JF Bastien.

All of our required compilers support relaxed constexpr in C++14.
We can drop RELAXED_CONSTEXPR macro in our tree.

* wtf/Compiler.h:
* wtf/Expected.h:
(std::experimental::fundamentals_v3::expected::operator*):
(std::experimental::fundamentals_v3::expected::value):
(std::experimental::fundamentals_v3::expected::error):
* wtf/Unexpected.h:
(std::experimental::fundamentals_v3::unexpected::value):
(std::experimental::fundamentals_v3::unexpected::value const):

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

3 years agoFix WTF::Hasher tuple expansion with variadic args
utatane.tea@gmail.com [Sat, 9 Dec 2017 20:34:45 +0000 (20:34 +0000)]
Fix WTF::Hasher tuple expansion with variadic args
https://bugs.webkit.org/show_bug.cgi?id=180623

Reviewed by JF Bastien.

Source/WTF:

We expand a tuple with `...`, and use this in a function's argument list.
And in this argument list, we call `add()` for each value. This will be
expanded as follows.

    [] (...) { }((add(hasher, std::get<i>(values)), 0)...);

will become,

    [] (...) { }((add(hasher, std::get<0>(values)), 0), (add(hasher, std::get<1>(values)), 0), ...);

However, the evaluation order of the C++ argument is unspecified. Actually,
in GCC environment, this `add()` is not called in our expected order. As a
result, currently we have test failures in TestWTF.

This patch just uses variadic templates to expand tuples, and call add() in
our expected order. This patch fixes an existing failure of TestWTF in GCC environment.

* wtf/Hasher.h:
(WTF::Hasher::computeHash):
(WTF::addArgs):
(WTF::addTupleHelper):
(WTF::add):

Tools:

* TestWebKitAPI/Tests/WTF/Hasher.cpp:
(TestWebKitAPI::TEST):

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

3 years agoUse relaxed constexpr for StringHasher
utatane.tea@gmail.com [Sat, 9 Dec 2017 20:11:56 +0000 (20:11 +0000)]
Use relaxed constexpr for StringHasher
https://bugs.webkit.org/show_bug.cgi?id=180622

Reviewed by JF Bastien.

Now VC++ is updated and all the WebKit compilers support C++14 relaxed constexpr.
This patch uses relaxed constexpr for StringHasher constexpr implementation

* wtf/text/StringHasher.h:
(WTF::StringHasher::addCharactersAssumingAligned):
(WTF::StringHasher::Converter):
(WTF::StringHasher::computeHashAndMaskTop8Bits):
(WTF::StringHasher::computeHash):
(WTF::StringHasher::computeLiteralHash):
(WTF::StringHasher::computeLiteralHashAndMaskTop8Bits):
(WTF::StringHasher::defaultConverter):
(WTF::StringHasher::avalancheBits):
(WTF::StringHasher::finalize):
(WTF::StringHasher::finalizeAndMaskTop8Bits):
(WTF::StringHasher::avoidZero):
(WTF::StringHasher::calculateWithRemainingLastCharacter):
(WTF::StringHasher::calculateWithTwoCharacters):
(WTF::StringHasher::processPendingCharacter const):
(WTF::StringHasher::StringHasher): Deleted.
(WTF::StringHasher::avalancheBits3): Deleted.
(WTF::StringHasher::avalancheBits2): Deleted.
(WTF::StringHasher::avalancheBits1): Deleted.
(WTF::StringHasher::avalancheBits0): Deleted.
(WTF::StringHasher::calculateWithRemainingLastCharacter1): Deleted.
(WTF::StringHasher::calculateWithRemainingLastCharacter0): Deleted.
(WTF::StringHasher::calculate1): Deleted.
(WTF::StringHasher::calculate0): Deleted.
(WTF::StringHasher::calculate): Deleted.
(WTF::StringHasher::computeLiteralHashImpl): Deleted.

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

3 years agoInferredType should not use UnconditionalFinalizer
fpizlo@apple.com [Sat, 9 Dec 2017 19:48:04 +0000 (19:48 +0000)]
InferredType should not use UnconditionalFinalizer
https://bugs.webkit.org/show_bug.cgi?id=180456

Reviewed by Saam Barati.

This turns InferredStructure into a cell so that we can unconditionally finalize them without
having to add things to the UnconditionalFinalizer list. I'm removing all uses of
UnconditionalFinalizers and WeakReferenceHarvesters because the data structures used to manage
them are a top cause of lock contention in the parallel GC. Also, we don't need those data
structures if we use IsoSubspaces, subspace iteration, and marking constraints.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* heap/Heap.cpp:
(JSC::Heap::finalizeUnconditionalFinalizers):
* heap/Heap.h:
* runtime/InferredStructure.cpp: Added.
(JSC::InferredStructure::create):
(JSC::InferredStructure::destroy):
(JSC::InferredStructure::createStructure):
(JSC::InferredStructure::visitChildren):
(JSC::InferredStructure::finalizeUnconditionally):
(JSC::InferredStructure::InferredStructure):
(JSC::InferredStructure::finishCreation):
* runtime/InferredStructure.h: Added.
* runtime/InferredStructureWatchpoint.cpp: Added.
(JSC::InferredStructureWatchpoint::fireInternal):
* runtime/InferredStructureWatchpoint.h: Added.
* runtime/InferredType.cpp:
(JSC::InferredType::visitChildren):
(JSC::InferredType::willStoreValueSlow):
(JSC::InferredType::makeTopSlow):
(JSC::InferredType::set):
(JSC::InferredType::removeStructure):
(JSC::InferredType::InferredStructureWatchpoint::fireInternal): Deleted.
(JSC::InferredType::InferredStructureFinalizer::finalizeUnconditionally): Deleted.
(JSC::InferredType::InferredStructure::InferredStructure): Deleted.
* runtime/InferredType.h:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

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

3 years ago[python] Replace print >> operator with print() function for python3 compatibility
annulen@yandex.ru [Sat, 9 Dec 2017 16:58:36 +0000 (16:58 +0000)]
[python] Replace print >> operator with print() function for python3 compatibility
https://bugs.webkit.org/show_bug.cgi?id=180611

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

* Scripts/make-js-file-arrays.py:
(main):

Tools:

* CygwinDownloader/cygwin-downloader.py:
(download_url_to_file):
* Scripts/webkitpy/common/system/profiler.py:
(Perf.profile_after_exit):
* Scripts/webkitpy/common/version_check.py:
* Scripts/webkitpy/layout_tests/lint_test_expectations.py:
(main):
* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(main):
* Scripts/webkitpy/layout_tests/servers/run_webkit_httpd.py:
(run_server):
* Scripts/webkitpy/tool/commands/analyzechangelog.py:
(ChangeLogAnalyzer._print_status):
* Scripts/webkitpy/tool/commands/queries.py:
(BugsToCommit.execute):
(PatchesInCommitQueue.execute):
(PatchesToCommitQueue.execute):
(PatchesToReview._print_report):
(WhatBroke._print_builder_line):
(WhatBroke._print_blame_information_for_builder):
(WhatBroke.execute):
(ResultsFor._print_layout_test_results):
(ResultsFor.execute):
(FailureReason._print_blame_information_for_transition):
(FailureReason._explain_failures_for_builder):
(FailureReason._builder_to_explain):
(FailureReason.execute):
(FindFlakyTests._find_failures):
(FindFlakyTests._print_statistics):
(FindFlakyTests._walk_backwards_from):
(execute):
(PrintExpectations.execute):
(PrintBaselines.execute):
(PrintBaselines._print_baselines):
(FindResolvedBugs.execute):
* Scripts/webkitpy/tool/commands/rebaseline.py:
(AbstractParallelRebaselineCommand._run_webkit_patch):
(AbstractParallelRebaselineCommand._rebaseline):
* Scripts/webkitpy/tool/servers/gardeningserver.py:
(GardeningHTTPRequestHandler.rebaselineall):
* Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
(GardeningServerTest.disabled_test_rebaselineall.run_command):
(GardeningServerTest):

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

3 years agoiOS: Crash in Document::updateLayout() via Document::processViewport
rniwa@webkit.org [Sat, 9 Dec 2017 10:41:32 +0000 (10:41 +0000)]
iOS: Crash in Document::updateLayout() via Document::processViewport
https://bugs.webkit.org/show_bug.cgi?id=180619
<rdar://problem/35717575>

Reviewed by Zalan Bujtas.

Source/WebCore:

The crash is caused by modern media controls updating the layout in the middle of insertedIntoAncestor
via HTMLMediaElement::setControllerJSProperty inside Document::pageScaleFactorChangedAndStable.

Fixed the crash by delaying the work to update the viewport configuration until didFinishInsertingNode
since updating the viewport configuration results in a lot of related code running in response,
and making sure all that code never tries to execute an author script is not attainable in the short term,
and a maintenance nightmare in the long term.

Test: media/ios/viewport-change-with-video.html

* html/HTMLMetaElement.cpp:
(WebCore::HTMLMetaElement::insertedIntoAncestor):
(WebCore::HTMLMetaElement::didFinishInsertingNode): Added.
* html/HTMLMetaElement.h:

LayoutTests:

Added a regression test for the crash.

* media/ios/viewport-change-with-video-expected.txt: Added.
* media/ios/viewport-change-with-video.html: Added.

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

3 years ago[Win] The way to detect Windows 10 is wrong
commit-queue@webkit.org [Sat, 9 Dec 2017 07:39:47 +0000 (07:39 +0000)]
[Win] The way to detect Windows 10 is wrong
https://bugs.webkit.org/show_bug.cgi?id=179344
<rdar://problem/35562264>

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2017-12-08
Reviewed by Alex Christensen.

Python2.7 doesn't return correct information on Windows 10.
Use platform.win32_ver() instead of sys.getwindowsversion().

* Scripts/webkitpy/common/system/platforminfo.py:
(PlatformInfo._win_version):
(PlatformInfo._win_version_str):
* Scripts/webkitpy/common/system/platforminfo_unittest.py:
(fake_sys):
(fake_sys.FakeSysModule):
(fake_platform):
(fake_platform.FakePlatformModule.win32_ver):
(TestPlatformInfo.test_os_name_and_wrappers):
(TestPlatformInfo.test_os_version):
(TestPlatformInfo.test_display_name):
(TestPlatformInfo.test_total_bytes_memory):

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

3 years ago[WinCairo] Fix runtime error after r225229
commit-queue@webkit.org [Sat, 9 Dec 2017 05:40:02 +0000 (05:40 +0000)]
[WinCairo] Fix runtime error after r225229
https://bugs.webkit.org/show_bug.cgi?id=180614

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2017-12-08
Reviewed by Alex Christensen.

The list of fallback versions doesn't match with version name mapping introduced recently.
It should be safe by creating the list automatically from the name map for consistency.

* Scripts/webkitpy/common/version_name_map.py:
(VersionNameMap.__init__):
(VersionNameMap.to_name):
(VersionNameMap.from_name):
(VersionNameMap):
(VersionNameMap.names):
(VersionNameMap.mapping_for_platform):
* Scripts/webkitpy/port/win.py:
(WinCairoPort):
(WinCairoPort.default_baseline_search_path):

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

3 years agoService Worker should use a correct user agent
commit-queue@webkit.org [Sat, 9 Dec 2017 05:36:37 +0000 (05:36 +0000)]
Service Worker should use a correct user agent
https://bugs.webkit.org/show_bug.cgi?id=180566
<rdar://problem/35926295>

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

Addendum to landed patch.
This change was removed from the last version of the patch but proves to be needed by Safari.

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
Added back setting the user agent at start of service worker in case a page is already created.

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

3 years agoDocument::updateLayout() could destroy current frame.
zalan@apple.com [Sat, 9 Dec 2017 03:51:25 +0000 (03:51 +0000)]
Document::updateLayout() could destroy current frame.
https://bugs.webkit.org/show_bug.cgi?id=180525
<rdar://problem/35906836>

Reviewed by Simon Fraser.

Source/WebCore:

Early return when Document::updateLayout() triggers Frame destruction.

Test: fast/frames/crash-when-iframe-is-remove-in-eventhandler.html

* dom/TreeScope.cpp:
(WebCore::absolutePointIfNotClipped):

LayoutTests:

* fast/frames/crash-when-iframe-is-remove-in-eventhandler-expected.txt: Added.
* fast/frames/crash-when-iframe-is-remove-in-eventhandler.html: Added.

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

3 years agoServiceWorkerGlobalScope is a global object and should be marked as [ImplicitThis...
cdumez@apple.com [Sat, 9 Dec 2017 03:44:33 +0000 (03:44 +0000)]
ServiceWorkerGlobalScope is a global object and should be marked as [ImplicitThis] in the IDL
https://bugs.webkit.org/show_bug.cgi?id=180615

Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

* web-platform-tests/service-workers/service-worker/interfaces-sw.https-expected.txt:
* web-platform-tests/workers/interfaces.worker-expected.txt:

Source/WebCore:

ServiceWorkerGlobalScope is a global object and should be marked as [ImplicitThis] in the IDL, similarly to what we do for Window.
This allows a getter to be fallback to the global object as ThisValue when the cast of the ThisValue to the expected type fails.

No new tests, rebaselined existing test.

* workers/DedicatedWorkerGlobalScope.idl:
* workers/WorkerGlobalScope.idl:
* workers/service/ServiceWorkerGlobalScope.idl:

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

3 years agoDelay some service worker operations until after the database import completes.
beidson@apple.com [Sat, 9 Dec 2017 03:03:06 +0000 (03:03 +0000)]
Delay some service worker operations until after the database import completes.
https://bugs.webkit.org/show_bug.cgi?id=180573

Reviewed by Chris Dumez.

Source/WebCore:

No new tests (Not testable yet).

Right after the storage process launches it starts importing registration records.
During this time, a lot of the decisions we make regarding registrations, fetch, etc.
are invalid, as they rely on those in-memory records being in place.

This patch delays certain things until after the initial origin table import is complete.

* workers/service/server/RegistrationStore.cpp:
(WebCore::RegistrationStore::databaseOpenedAndRecordsImported):

* workers/service/server/SWOriginStore.h:

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::registrationStoreImportComplete): Tell the origin store the initial
  import was completed.
(WebCore::SWServer::addRegistrationFromStore):
* workers/service/server/SWServer.h:

Source/WebKit:

* StorageProcess/ServiceWorker/WebSWOriginStore.cpp:
(WebKit::WebSWOriginStore::importComplete): Tell the Origin Table on all connects that
  the import is complete.
(WebKit::WebSWOriginStore::registerSWServerConnection):
* StorageProcess/ServiceWorker/WebSWOriginStore.h:

* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::mayHaveServiceWorkerRegisteredForOrigin const):
(WebKit::WebSWClientConnection::setSWOriginTableIsImported): Run deferred tasks!
(WebKit::WebSWClientConnection::matchRegistration): If the import isn't complete yet, delay
  the match registration task until later.
(WebKit::WebSWClientConnection::runOrDelayTask): Either send the message now or save off
  the task to wait until the import is complete.
(WebKit::WebSWClientConnection::getRegistrations): If the import isn't complete yet, delay
  the get registrations task until later.
(WebKit::WebSWClientConnection::initializeSWOriginTableAsEmpty): Deleted.
* WebProcess/Storage/WebSWClientConnection.h:
* WebProcess/Storage/WebSWClientConnection.messages.in:

* WebProcess/Storage/WebSWOriginTable.cpp:
(WebKit::WebSWOriginTable::setSharedMemory):
* WebProcess/Storage/WebSWOriginTable.h:
(WebKit::WebSWOriginTable::isImported const):
(WebKit::WebSWOriginTable::setIsImported):
(WebKit::WebSWOriginTable::isInitialized const): Deleted.
(WebKit::WebSWOriginTable::initializeAsEmpty): Deleted.

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

3 years agoService Worker should use a correct user agent
commit-queue@webkit.org [Sat, 9 Dec 2017 01:05:58 +0000 (01:05 +0000)]
Service Worker should use a correct user agent
https://bugs.webkit.org/show_bug.cgi?id=180566
<rdar://problem/35926295>

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

Source/WebCore:

Test: http/wpt/service-workers/useragent.https.html

Make ServiceWorkerFrameLoaderClient return a valid UserAgent.
Pass user agent to ServiceWorkerThread so that navigation.userAgent is correctly initialized.
Allow ServiceWorkerFrameLoaderClient to clean itself when no longer needed.

* loader/EmptyFrameLoaderClient.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::ServiceWorkerThread):
* workers/service/context/ServiceWorkerThread.h:
* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy):
(WebCore::ServiceWorkerThreadProxy::frameLoaderClient):
* workers/service/context/ServiceWorkerThreadProxy.h:

Source/WebKit:

Add support to set service worker user agent from UIProcess to service worker process.
One user agent is currently supported per service worker process and it can be changed at any given time.
Only new service worker will use the new value.
Once a service worker is launched, it will stay with the same user agent value.

This sets both navigator.userAgent and User-Agent header name used for fetch within a service worker.
Compute the service worker process user agent by picking the last user agent set for a web page.

* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::start):
(WebKit::ServiceWorkerProcessProxy::setUserAgent):
* UIProcess/ServiceWorkerProcessProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setApplicationNameForUserAgent):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::updateServiceWorkerUserAgent):
* UIProcess/WebProcessPool.h:
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::installServiceWorker):
(WebKit::WebSWContextManagerConnection::setUserAgent):
(WebKit::WebSWContextManagerConnection::removeFrameLoaderClient):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.messages.in:

LayoutTests:

* http/wpt/service-workers/useragent-worker.js: Added.
(async.doTest):
* http/wpt/service-workers/useragent.https-expected.txt: Added.
* http/wpt/service-workers/useragent.https.html: Added.

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

3 years agoWrong caret position for input field inside a fixed position parent on iOS 11
simon.fraser@apple.com [Sat, 9 Dec 2017 00:00:14 +0000 (00:00 +0000)]
Wrong caret position for input field inside a fixed position parent on iOS 11
https://bugs.webkit.org/show_bug.cgi?id=176896
rdar://problem/33726145

Reviewed by Tim Horton.
Source/WebCore:

In r219668 I added code to compute a layout viewport rect in the web process, so that
after programmatic scrolling, getBoundingClientRect() would return the correct values.
However, that computation sometimes used a different visual viewport than the UI process,
resulting in a different layout viewport being set. This would happen when the keyboard
was visible, and the combination of this and zooming when focusing an input would result
in a state where the scrolling tree contained notes computed with the bad layout viewport.
This could cause apparently offset fixed elements, and bad caret positioning if those fixed
elements contained the focused input.

Fix by passing to the web process the same visual viewport rect that the UI process is using,
namely "unobscuredContentRectRespectingInputViewBounds". This was already being set in
VisibleContentRectUpdateInfo but wasn't encoded/decoded, so fix that. Set it as an optional<>
on FrameView when different from the normal visual viewport, and return it from
visualViewportRect().

Some other minor logging changes.

Test: fast/visual-viewport/ios/caret-after-focus-in-fixed.html

* page/FrameView.cpp:
(WebCore::FrameView::setVisualViewportOverrideRect):
(WebCore::FrameView::updateLayoutViewport):
(WebCore::FrameView::visualViewportRect const):
* page/FrameView.h:
* page/scrolling/mac/ScrollingTreeFixedNode.mm:
(WebCore::ScrollingTreeFixedNode::updateLayersAfterAncestorChange):

Source/WebKit:

In r219668 I added code to compute a layout viewport rect in the web process, so that
after programmatic scrolling, getBoundingClientRect() would return the correct values.
However, that computation sometimes used a different visual viewport than the UI process,
resulting in a different layout viewport being set. This would happen when the keyboard
was visible, and the combination of this and zooming when focusing an input would result
in a state where the scrolling tree contained notes computed with the bad layout viewport.
This could cause apparently offset fixed elements, and bad caret positioning if those fixed
elements contained the focused input.

Fix by passing to the web process the same visual viewport rect that the UI process is using,
namely "unobscuredContentRectRespectingInputViewBounds". This was already being set in
VisibleContentRectUpdateInfo but wasn't encoded/decoded, so fix that. Set it as an optional<>
on FrameView when different from the normal visual viewport, and return it from
visualViewportRect().

Some other minor logging changes.

* Shared/VisibleContentRectUpdateInfo.cpp:
(WebKit::VisibleContentRectUpdateInfo::encode const):
(WebKit::VisibleContentRectUpdateInfo::decode):
(WebKit::operator<<):
* Shared/VisibleContentRectUpdateInfo.h:
(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::updateVisibleContentRects):

LayoutTests:

Test that focuses an input inside position:fixed, then moves focus to the next
input. This was the most reliable way I could find of triggering the bug.
The test dumps the caret rect.

* fast/visual-viewport/ios/caret-after-focus-in-fixed-expected.txt: Added.
* fast/visual-viewport/ios/caret-after-focus-in-fixed.html: Added.

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

3 years agoWhen the iPhone keyboard is up, sometimes we never commit a stable update and re...
simon.fraser@apple.com [Sat, 9 Dec 2017 00:00:09 +0000 (00:00 +0000)]
When the iPhone keyboard is up, sometimes we never commit a stable update and re-show the caret
https://bugs.webkit.org/show_bug.cgi?id=180498

Reviewed by Tim Horton.

Source/WebKit:

When the keyboard is showing, we would think that the page was in a rubber-banding state
because contentOffsetBoundedInValidRange() would always clamp the content offset to a different
value.

This happened because scrollView.contentInset don't change when the keyboard is showing,
but UIKit actually consults scrollView.adjustedContentInset, which does. If we use
scrollView.adjustedContentInset in this computation, we'll get a correct answer.

Also rewrote the clamping logic to be more similar to what UIKit does internally when computing
min/max content offset.

* UIProcess/API/Cocoa/WKWebView.mm:
(contentOffsetBoundedInValidRange):

LayoutTests:

Test that completes once a stable update is received after showing the keyboard.

* fast/visual-viewport/ios/stable-update-with-keyboard-expected.txt: Added.
* fast/visual-viewport/ios/stable-update-with-keyboard.html: Added.

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

3 years agoHopefully fix Windows build
dino@apple.com [Fri, 8 Dec 2017 23:53:45 +0000 (23:53 +0000)]
Hopefully fix Windows build

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

3 years agoMake inline box objects IsoHeap allocated.
zalan@apple.com [Fri, 8 Dec 2017 23:32:16 +0000 (23:32 +0000)]
Make inline box objects IsoHeap allocated.
https://bugs.webkit.org/show_bug.cgi?id=180556
<rdar://problem/35923629>

Reviewed by Filip Pizlo.

* rendering/EllipsisBox.cpp:
* rendering/EllipsisBox.h:
* rendering/InlineBox.cpp:
* rendering/InlineBox.h:
* rendering/InlineElementBox.cpp:
* rendering/InlineElementBox.h:
* rendering/InlineFlowBox.cpp:
* rendering/InlineFlowBox.h:
* rendering/InlineTextBox.cpp:
* rendering/InlineTextBox.h:
* rendering/RootInlineBox.cpp:
* rendering/RootInlineBox.h:
* rendering/TrailingFloatsRootInlineBox.h:
* rendering/svg/SVGInlineFlowBox.cpp:
* rendering/svg/SVGInlineFlowBox.h:
* rendering/svg/SVGInlineTextBox.cpp:
* rendering/svg/SVGInlineTextBox.h:
* rendering/svg/SVGRootInlineBox.cpp:
* rendering/svg/SVGRootInlineBox.h:

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

3 years agoClearing all Website Data should remove service worker registrations on disk
cdumez@apple.com [Fri, 8 Dec 2017 23:13:49 +0000 (23:13 +0000)]
Clearing all Website Data should remove service worker registrations on disk
https://bugs.webkit.org/show_bug.cgi?id=180558

Reviewed by Youenn Fablet.

Source/WebCore:

Clear service worker registrations on disk in addition to the ones in memory.

* workers/service/server/RegistrationDatabase.cpp:
(WebCore::v1RecordsTableSchema):
(WebCore::v1RecordsTableSchemaAlternate):
(WebCore::databaseFilename):
Make sure these always get called from the background thread since they use
a static string.

(WebCore::RegistrationDatabase::RegistrationDatabase):
Call importRecordsIfNecessary() instead of openSQLiteDatabase(). importRecordsIfNecessary()
only calls openSQLiteDatabase() if the database file exists, to avoid creating a database
file unnecessarily.

(WebCore::RegistrationDatabase::databasePath const):
New method which returns the database file path.

(WebCore::RegistrationDatabase::openSQLiteDatabase):

(WebCore::RegistrationDatabase::importRecordsIfNecessary):
New methods which imports records if the database file exist. It the database file does
not exist, it does not create it.

(WebCore::RegistrationDatabase::pushChanges):
Call completion handler when changes are pushed.

(WebCore::RegistrationDatabase::clearAll):
Close the database if it is open, then remove the database files.

(WebCore::RegistrationDatabase::doPushChanges):
If the database is not already open, we now open it when trying to write changes for
the first time.

* workers/service/server/RegistrationDatabase.h:
* workers/service/server/RegistrationStore.cpp:
(WebCore::RegistrationStore::clearAll):
(WebCore::RegistrationStore::flushChanges):
* workers/service/server/RegistrationStore.h:

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::clearAll):
(WebCore::SWServer::clear):
Also clear the database.

* workers/service/server/SWServer.h:

* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::terminate):
Only call SWServer::terminateWorker() if the worker is running. Otherwise, we hit
an assertion when clearing a registration would worker was already terminated.

Source/WebKit:

* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::deleteWebsiteData):
(WebKit::StorageProcess::deleteWebsiteDataForOrigins):

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

3 years agoAttempted build fix.
dino@apple.com [Fri, 8 Dec 2017 23:11:12 +0000 (23:11 +0000)]
Attempted build fix.

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

3 years agoServiceWorker Inspector: Various issues inspecting service worker on mobile.twitter.com
joepeck@webkit.org [Fri, 8 Dec 2017 23:03:58 +0000 (23:03 +0000)]
ServiceWorker Inspector: Various issues inspecting service worker on mobile.twitter.com
https://bugs.webkit.org/show_bug.cgi?id=180520
<rdar://problem/35900764>

Reviewed by Brian Burg.

Source/JavaScriptCore:

* inspector/protocol/ServiceWorker.json:
Include content script content in the initialization info.

Source/WebCore:

* inspector/agents/worker/ServiceWorkerAgent.cpp:
(WebCore::ServiceWorkerAgent::getInitializationInfo):
* inspector/agents/worker/ServiceWorkerAgent.h:
Add initial script content to initialization so we always at least have main resource content.

Source/WebInspectorUI:

* UserInterface/Main.html:
* UserInterface/Test.html:
New files.

* UserInterface/Controllers/SourceMapManager.js:
(WI.SourceMapManager.prototype._loadAndParseSourceMap):
* UserInterface/Models/SourceMapResource.js:
(WI.SourceMapResource.prototype.requestContentFromBackend):
A ServiceWorker inspector doesn't have a main frame, fall back to an
empty frameIdentifier, it is ignored by the Service Worker network agent.

* UserInterface/Base/Main.js:
Handle a Service Worker inspector where there is no frame. This can
search the main resource's resource collection.

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

* UserInterface/Controllers/FrameResourceManager.js:
(WI.FrameResourceManager.prototype.resourceRequestDidFailLoading):
In Service Workers the resources won't have a parent frame.

(WI.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
(WI.FrameResourceManager.prototype._processServiceWorkerInitializationInfo):
In service worker initialization fallback to using the script content
as the main resource if we didn't get a Script that actually includes it.

* UserInterface/Models/LocalScript.js:
(WI.LocalScript):
(WI.LocalScript.prototype.requestContentFromBackend):
A way to create a local Script with content.

* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype.get _supportsDebugging):
Disallow breakpoints in a LocalScript since we have no way to tell the
backend where to set breakpoints.

* UserInterface/Models/TextRange.js:
(WI.TextRange.fromText):
Add a way to get a TextRange from static text.

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

3 years agoServiceWorker Inspector: Should be able to see image content from CacheStorage.add...
joepeck@webkit.org [Fri, 8 Dec 2017 22:57:30 +0000 (22:57 +0000)]
ServiceWorker Inspector: Should be able to see image content from CacheStorage.add(url) network request
https://bugs.webkit.org/show_bug.cgi?id=180506

Reviewed by Brian Burg.

No test as this only happens inside a ServiceWorker inspector which
we don't yet have a way to test. In a Page Inspector, the
CacheStorage.add network request already behaves as expected.

* inspector/NetworkResourcesData.cpp:
(WebCore::NetworkResourcesData::responseReceived):
(WebCore::shouldBufferResourceData):
* inspector/NetworkResourcesData.h:
(WebCore::NetworkResourcesData::ResourceData::forceBufferData const):
(WebCore::NetworkResourcesData::ResourceData::setForceBufferData):
Provide a way to force buffering in NetworkResourceData.

* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::didReceiveResponse):
* inspector/agents/InspectorNetworkAgent.h:
* inspector/agents/page/PageNetworkAgent.h:
* inspector/agents/worker/WorkerNetworkAgent.h:
Enable force buffering in a Worker Network Agent.

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

3 years agoRemove unnecessary prefix from AutoFillButtonType enumerators
dbates@webkit.org [Fri, 8 Dec 2017 22:51:26 +0000 (22:51 +0000)]
Remove unnecessary prefix from AutoFillButtonType enumerators
https://bugs.webkit.org/show_bug.cgi?id=180512

Reviewed by Tim Horton.

Source/WebCore:

* testing/Internals.cpp:
(WebCore::toAutoFillButtonType):
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

* accessibility/auto-fill-crash.html:
* accessibility/auto-fill-types.html:
* fast/forms/auto-fill-button/hide-auto-fill-button-when-input-becomes-disabled.html:
* fast/forms/auto-fill-button/hide-auto-fill-button-when-input-becomes-readonly.html:
* fast/forms/auto-fill-button/input-auto-fill-button.html:
* fast/forms/auto-fill-button/input-contacts-auto-fill-button.html:
* fast/forms/auto-fill-button/input-disabled-auto-fill-button.html:
* fast/forms/auto-fill-button/input-readonly-auto-fill-button.html:
* fast/forms/auto-fill-button/input-readonly-non-empty-auto-fill-button.html:
* fast/forms/auto-fill-button/mouse-down-input-mouse-release-auto-fill-button.html:
* fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes-expected.html:
* fast/forms/auto-fill-button/show-correct-auto-fill-button-when-auto-fill-button-type-changes.html:

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

3 years agoImplement transferToImageBitmap for WebGL offscreen canvas objects
dino@apple.com [Fri, 8 Dec 2017 22:46:50 +0000 (22:46 +0000)]
Implement transferToImageBitmap for WebGL offscreen canvas objects
https://bugs.webkit.org/show_bug.cgi?id=180603
<rdar://problem/34147143>

Reviewed by Sam Weinig.

Source/WebCore:

Implement the basic version of creating an ImageBitmap from an
OffscreenCanvas that is using a WebGL context.

Tests: http/wpt/offscreen-canvas/transferToImageBitmap-empty.html
       http/wpt/offscreen-canvas/transferToImageBitmap-webgl.html

* html/ImageBitmap.cpp:
(WebCore::ImageBitmap::create): Add a new constructor to be used by OffscreenCanvas.
Creates a blank ImageBitmap.
* html/ImageBitmap.h:

* html/OffscreenCanvas.cpp:
(WebCore::OffscreenCanvas::transferToImageBitmap): Create a new ImageBitmap
and paint the current canvas into it.

LayoutTests:

* http/wpt/offscreen-canvas/transferToImageBitmap-empty-expected.txt: Renamed from LayoutTests/http/wpt/offscreen-canvas/transferToImageBitmap-expected.txt.
* http/wpt/offscreen-canvas/transferToImageBitmap-empty.html: Renamed from LayoutTests/http/wpt/offscreen-canvas/transferToImageBitmap.html.
* http/wpt/offscreen-canvas/transferToImageBitmap-webgl-expected.html: Added.
* http/wpt/offscreen-canvas/transferToImageBitmap-webgl.html: Added.

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

3 years agoWebServiceWorkerProvider should use Cancellation error to notify DTL that it cannot...
commit-queue@webkit.org [Fri, 8 Dec 2017 22:45:21 +0000 (22:45 +0000)]
WebServiceWorkerProvider should use Cancellation error to notify DTL that it cannot handle a fetch
https://bugs.webkit.org/show_bug.cgi?id=180584

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-08
Reviewed by Alex Christensen.

Source/WebCore:

Previously, for each cross origin fetch that is going through a service worker and service worker is not handling the fetch,
we return an AccessControl error so that DocumentThreadableLoader will do preflight and regular load through the network.
This error is wrongly logged in the Inspector.
Change error type to Cancellation so that the Inspector does not log it.

* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::didFail):

Source/WebKit:

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

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

3 years agoDon't require perl(File::Copy::Recursive)
mcatanzaro@igalia.com [Fri, 8 Dec 2017 22:44:47 +0000 (22:44 +0000)]
Don't require perl(File::Copy::Recursive)
https://bugs.webkit.org/show_bug.cgi?id=180479

Reviewed by Konstantin Tokarev.

If File::Copy::Recursive is not installed, there is currently a Darwin
fallback to the ditto command. That doesn't exist on Linux, but we can
emulate it by running 'cp -R' on everything in the source directory.
This should probably work everywhere except Windows.

* Scripts/copy-user-interface-resources.pl:
(ditto):

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

3 years agoService Worker should use a correct SessionID
commit-queue@webkit.org [Fri, 8 Dec 2017 22:44:26 +0000 (22:44 +0000)]
Service Worker should use a correct SessionID
https://bugs.webkit.org/show_bug.cgi?id=180585

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-08
Reviewed by Alex Christensen.

Source/WebCore:

Test: http/tests/workers/service/serviceworker-private-browsing.https.html

Store SessionID in SWServer and send it as part of service worker instantiation.

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::SWServer):
(WebCore::SWServer::installContextData):
(WebCore::SWServer::runServiceWorker):
* workers/service/server/SWServer.h:
* workers/service/server/SWServerToContextConnection.h:

Source/WebKit:

Store SessionID in SWServer and send it as part of service worker instantiation.
Use it when creating service worker thread in service worker process.

* StorageProcess/ServiceWorker/WebSWServerToContextConnection.cpp:
(WebKit::WebSWServerToContextConnection::installServiceWorkerContext):
* StorageProcess/ServiceWorker/WebSWServerToContextConnection.h:
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::swServerForSession):
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::installServiceWorker):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.messages.in:

LayoutTests:

* http/tests/workers/service/serviceworker-private-browsing-worker.js: Added.
(async):
* http/tests/workers/service/serviceworker-private-browsing.https-expected.txt: Added.
* http/tests/workers/service/serviceworker-private-browsing.https.html: Added.

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

3 years agoFetchResponse should keep unfiltered ResourceResponse so that it can be used in Servi...
commit-queue@webkit.org [Fri, 8 Dec 2017 22:41:48 +0000 (22:41 +0000)]
FetchResponse should keep unfiltered ResourceResponse so that it can be used in Service Worker
https://bugs.webkit.org/show_bug.cgi?id=179641
<rdar://problem/35923570>

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-08
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/fetch-request-css-cross-origin-mime-check.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-response-taint.https-expected.txt:

Source/WebCore:

Covered by existing rebased tests.

FetchResponse will now store an unfiltered response.
If it needs to expose it to JavaScript, it will create a filtered response lazily.
This allows service worker to send back to web pages, opaque responses containing every information.

Updating Document::initSecurityContext so that any document loaded with a response whose tainting is Opaque gets a unique origin.
This ensures cross-origin checks to work if service worker returns such a response on a same origin URL.

Updated SubresourceLoader to check cross origin service worker responses based on their tainting.

* Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::create):
(WebCore::FetchResponse::error):
(WebCore::FetchResponse::redirect):
(WebCore::FetchResponse::FetchResponse):
(WebCore::FetchResponse::clone):
(WebCore::FetchResponse::url const):
(WebCore::FetchResponse::filteredResponse const):
(WebCore::FetchResponse::BodyLoader::didReceiveResponse):
(WebCore::FetchResponse::resourceResponse const):
* Modules/fetch/FetchResponse.h:
(WebCore::FetchResponse::create): Deleted.
* dom/Document.cpp:
(WebCore::Document::initSecurityContext):
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::willSendRequestInternal):
(WebCore::SubresourceLoader::checkResponseCrossOriginAccessControl):

Source/WebKit:

* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::didReceiveResponse): In case of opaque redirected response, handle it as a regular response.

LayoutTests:

* TestExpectations:

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

3 years agoEnable gigacage on iOS with a 32GB runway and ensure it doesn't break WasmBench
sbarati@apple.com [Fri, 8 Dec 2017 22:28:31 +0000 (22:28 +0000)]
Enable gigacage on iOS with a 32GB runway and ensure it doesn't break WasmBench
https://bugs.webkit.org/show_bug.cgi?id=178557

Reviewed by Mark Lam.

* bmalloc/Algorithm.h:
(bmalloc::isPowerOfTwo):
* bmalloc/Gigacage.cpp:
* bmalloc/Gigacage.h:

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

3 years agoRemove unused code in WebPageGroup
achristensen@apple.com [Fri, 8 Dec 2017 22:23:22 +0000 (22:23 +0000)]
Remove unused code in WebPageGroup
https://bugs.webkit.org/show_bug.cgi?id=180604

Reviewed by Youenn Fablet.

* UIProcess/WebPageGroup.cpp:
(WebKit::WebPageGroup::userContentController):
(WebKit::WebPageGroup::createNonNull): Deleted.
(WebKit::WebPageGroup::preferencesDidChange): Deleted.
* UIProcess/WebPageGroup.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::WebProcessPool):

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

3 years agoApplicationManifestParser should strip whitespace from the raw input
commit-queue@webkit.org [Fri, 8 Dec 2017 22:05:07 +0000 (22:05 +0000)]
ApplicationManifestParser should strip whitespace from the raw input
https://bugs.webkit.org/show_bug.cgi?id=180539
rdar://problem/35915075

Patch by David Quesada <david_quesada@apple.com> on 2017-12-08
Reviewed by Joseph Pecoraro.

Source/WebCore:

* Modules/applicationmanifest/ApplicationManifestParser.cpp:
(WebCore::ApplicationManifestParser::parseManifest):

Tools:

Added an API test for parsing manifests with surrounding whitespace.

Also drive-by fix ApplicationManifestParserTest.Display. Earlier versions of the
manifest spec explicitly stated that the "display" value should be treated as if
it were run through String.prototype.trim(), which allowed for the really weird
edge case of an array containing one string. This behavior was lost when I changed
ApplicationManifestParser's JSON parsing from using JavaScriptCore to WTF's JSON
parsing. Update the unit test accordingly.

* TestWebKitAPI/Tests/WebCore/ApplicationManifestParser.cpp:
(TEST_F):

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

3 years ago[python] Replace print operator with print() function for python3 compatibility
annulen@yandex.ru [Fri, 8 Dec 2017 21:56:09 +0000 (21:56 +0000)]
[python] Replace print operator with print() function for python3 compatibility
https://bugs.webkit.org/show_bug.cgi?id=180592

Reviewed by Michael Catanzaro.

PerformanceTests:

* JSBench/harness.py:

Source/JavaScriptCore:

* Scripts/generateYarrUnicodePropertyTables.py:
(openOrExit):
(verifyUCDFilesExist):
(Aliases.parsePropertyAliasesFile):
(Aliases.parsePropertyValueAliasesFile):
* Scripts/make-js-file-arrays.py:
(main):
* generate-bytecode-files:

Source/WebCore/PAL:

* AVFoundationSupport.py:

Tools:

* BuildSlaveSupport/wait-for-SVN-server.py:
(getLatestSVNRevision):
(waitForSVNRevision):
* Scripts/download-latest-github-release.py:
(find_latest_release):
(main):
* Scripts/update-wasm-gcc-torture.py:
(update_lkgr):
(untar_torture):
(list_js_files):
(waterfall_known_failures):
* Scripts/update-webkit-wincairo-libs.py:
* Scripts/webkitpy/benchmark_runner/benchmark_runner.py:
(BenchmarkRunner.show_results):
* Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py:
(SimpleHTTPServerDriver.fetch_result):
* Scripts/webkitpy/benchmark_runner/run_benchmark.py:
(list_benchmark_plans):
* Scripts/webkitpy/bindings/main.py:
(BindingsTests.generate_from_idl):
(BindingsTests.generate_supplemental_dependency):
(BindingsTests.detect_changes):
(BindingsTests.run_tests):
(BindingsTests.main):
* Scripts/webkitpy/codegen/main.py:
(BuiltinsGeneratorTests.generate_from_js_builtins):
(BuiltinsGeneratorTests.detect_changes):
(BuiltinsGeneratorTests.single_builtin_test):
(BuiltinsGeneratorTests.run_test):
(BuiltinsGeneratorTests.run_tests):
(BuiltinsGeneratorTests.main):
* Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py:
(MockBugzilla.fetch_attachment):
* Scripts/webkitpy/common/net/buildbot/buildbot.py:
(Builder._fetch_revision_to_build_map):
* Scripts/webkitpy/common/system/crashlogs.py:
(CrashLogs._find_newest_log_win):
* Scripts/webkitpy/common/system/outputcapture_unittest.py:
(OutputCaptureTest.test_output_capture_scope):
* Scripts/webkitpy/common/system/profiler.py:
(GooglePProf.profile_after_exit):
(Perf.profile_after_exit):
* Scripts/webkitpy/common/system/user.py:
(User.prompt_with_multiple_lists):
(User.prompt_with_list):
(User._warn_if_application_is_xcode):
(User.edit_changelog):
* Scripts/webkitpy/inspector/main.py:
(InspectorGeneratorTests.generate_from_json):
(InspectorGeneratorTests.detect_changes):
(InspectorGeneratorTests.run_tests):
(InspectorGeneratorTests.main):
* Scripts/webkitpy/layout_tests/controllers/manager.py:
(Manager._print_expectation_line_for_test):
(Manager._print_expectations_for_subset):
(Manager._print_expectations_for_subset.if):
* Scripts/webkitpy/layout_tests/servers/run_webkit_httpd.py:
(run_server):
* Scripts/webkitpy/port/config_standalone.py:
(main):
* Scripts/webkitpy/port/darwin_testcase.py:
(DarwinTest.test_spindump.logging_run_command):
(DarwinTest.test_sample_process.logging_run_command):
* Scripts/webkitpy/port/ios.py:
(IOSPort.clean_up_test_run):
* Scripts/webkitpy/port/ios_device_unittest.py:
(IOSDeviceTest.test_spindump.logging_run_command):
(IOSDeviceTest.test_sample_process.logging_run_command):
* Scripts/webkitpy/port/ios_simulator_unittest.py:
(IOSSimulatorTest.test_xcrun.throwing_run_command):
* Scripts/webkitpy/port/leakdetector_unittest.py:
(test_count_total_bytes_and_unique_leaks.mock_run_script):
* Scripts/webkitpy/port/mac_unittest.py:
(MacTest.test_xcrun.throwing_run_command):
* Scripts/webkitpy/style/checkers/contributors.py:
(ContributorsChecker.check):
* Scripts/webkitpy/tool/commands/abstractlocalservercommand.py:
(AbstractLocalServerCommand.execute):
* Scripts/webkitpy/tool/commands/adduserstogroups.py:
(AddUsersToGroups.execute):
* Scripts/webkitpy/tool/commands/analyzechangelog.py:
(AnalyzeChangeLog._generate_jsons):
(AnalyzeChangeLog.execute):
(ChangeLogAnalyzer._set_filename):
(ChangeLogAnalyzer.analyze):
* Scripts/webkitpy/tool/commands/bugfortest.py:
(BugForTest.execute):
* Scripts/webkitpy/tool/commands/bugsearch.py:
(execute):
* Scripts/webkitpy/tool/commands/findusers.py:
(FindUsers.execute):
* Scripts/webkitpy/tool/commands/gardenomatic.py:
(GardenOMatic.execute):
* Scripts/webkitpy/tool/commands/rebaseline.py:
(RebaselineTest.execute):
* Scripts/webkitpy/tool/commands/rebaselineserver.py:
(RebaselineServer._prepare_config):
* Scripts/webkitpy/tool/commands/setupgitclone.py:
(SetupGitClone.execute):
(SetupGitClone._get_username_and_email):
* Scripts/webkitpy/tool/commands/suggestnominations.py:
(SuggestNominations._print_nominations):
(SuggestNominations._print_counts):
* Scripts/webkitpy/tool/commands/upload.py:
(CommitMessageForCurrentDiff.execute):
(CreateBug.prompt_for_bug_title_and_comment):
* Scripts/webkitpy/tool/multicommandtool.py:
(HelpCommand.execute):
* Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
(TestGardeningHTTPRequestHandler._serve_text):
(TestGardeningHTTPRequestHandler._serve_json):
* Scripts/webkitpy/tool/steps/addsvnmimetypeforpng.py:
(AddSvnMimetypeForPng.run):
* Scripts/webkitpy/tool/steps/suggestreviewers.py:
(SuggestReviewers.run):
* Scripts/webkitpy/w3c/test_importer.py:
(TestImporter.update_tests_options):
* Scripts/webkitpy/webdriver_tests/webdriver_test_runner_selenium.py:
(WebDriverTestRunnerSelenium.run):
* TestResultServer/model/jsonresults_unittest.py:
* gtk/ycm_extra_conf.py:
(FlagsForFile):
* lldb/lldb_webkit.py:
(btjs):

LayoutTests:

* html5lib/generate-test-wrappers.py:
(_remove_stale_tests):
* http/tests/websocket/tests/hybi/bad-handshake-crash_wsh.py:
(web_socket_do_extra_handshake):
* http/tests/websocket/tests/hybi/handshake-fail-by-more-accept-header_wsh.py:
(web_socket_do_extra_handshake):
* http/tests/websocket/tests/hybi/handshake-fail-by-no-connection-header_wsh.py:
(web_socket_do_extra_handshake):
* http/tests/websocket/tests/hybi/handshake-fail-by-no-cr_wsh.py:
(web_socket_do_extra_handshake):
* http/tests/websocket/tests/hybi/handshake-fail-by-no-upgrade-header_wsh.py:
(web_socket_do_extra_handshake):

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

3 years agoNeed to unpoison native function pointers for CLoop.
mark.lam@apple.com [Fri, 8 Dec 2017 21:38:02 +0000 (21:38 +0000)]
Need to unpoison native function pointers for CLoop.
https://bugs.webkit.org/show_bug.cgi?id=180601
<rdar://problem/35942028>

Reviewed by JF Bastien.

* llint/LowLevelInterpreter64.asm:

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

3 years agoMove Logger from PAL to WTF so it can be used outside of WebCore
eric.carlson@apple.com [Fri, 8 Dec 2017 20:33:53 +0000 (20:33 +0000)]
Move Logger from PAL to WTF so it can be used outside of WebCore
https://bugs.webkit.org/show_bug.cgi?id=180561

Reviewed by Alex Christensen.

Source/WebCore:

No new tests, existing API test updated.

* Modules/mediastream/PeerConnectionBackend.h:
* Modules/mediastream/RTCPeerConnection.h:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
(PAL::LogArgument<webrtc::RTCStats>::toString): Deleted.
* dom/Document.cpp:
* dom/Document.h:
* html/HTMLMediaElement.cpp:
(PAL::LogArgument<WebCore::URL>::toString): Deleted.
* html/HTMLMediaElement.h:
* html/HTMLMediaElementEnums.h:
(PAL::LogArgument<WebCore::HTMLMediaElementEnums::ReadyState>::toString): Deleted.
(PAL::LogArgument<WebCore::HTMLMediaElementEnums::NetworkState>::toString): Deleted.
* html/MediaElementSession.cpp:
(WebCore::MediaElementSession::logger const):
* html/MediaElementSession.h:
* html/track/DataCue.h:
(PAL::LogArgument<WebCore::DataCue>::toString): Deleted.
* html/track/TextTrackCue.h:
(PAL::LogArgument<WebCore::TextTrackCue>::toString): Deleted.
* html/track/TextTrackCueGeneric.h:
(PAL::LogArgument<WebCore::TextTrackCueGeneric>::toString): Deleted.
* html/track/TrackBase.cpp:
(WebCore::nullLogger):
(WebCore::TrackBase::TrackBase):
* html/track/TrackBase.h:
* html/track/VTTCue.h:
(PAL::LogArgument<WebCore::VTTCue>::toString): Deleted.
* platform/graphics/InbandTextTrackPrivate.h:
* platform/graphics/InbandTextTrackPrivateClient.h:
(PAL::LogArgument<WebCore::GenericCueData>::toString): Deleted.
* platform/graphics/MediaPlayer.cpp:
(WebCore::nullLogger):
(WebCore::MediaPlayer::mediaPlayerLogger):
* platform/graphics/MediaPlayer.h:
(WTF::LogArgument<MediaTime>::toString):
(PAL::LogArgument<WTF::MediaTime>::toString): Deleted.
* platform/graphics/MediaPlayerEnums.h:
(PAL::LogArgument<WebCore::MediaPlayerEnums::ReadyState>::toString): Deleted.
(PAL::LogArgument<WebCore::MediaPlayerEnums::NetworkState>::toString): Deleted.
* platform/graphics/TrackPrivateBase.cpp:
(WebCore::TrackPrivateBase::setLogger):
* platform/graphics/TrackPrivateBase.h:
* platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.mm:
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
* platform/mediastream/RTCIceConnectionState.h:
(PAL::LogArgument<WebCore::RTCIceConnectionState>::toString): Deleted.
* platform/mediastream/RTCIceGatheringState.h:
(PAL::LogArgument<WebCore::RTCIceGatheringState>::toString): Deleted.
* platform/mediastream/RTCPeerConnectionState.h:
(PAL::LogArgument<WebCore::RTCPeerConnectionState>::toString): Deleted.
* platform/mediastream/RTCSignalingState.h:
(PAL::LogArgument<WebCore::RTCSignalingState>::toString): Deleted.
* platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:

Source/WebCore/PAL:

* PAL.xcodeproj/project.pbxproj:
* pal/Logger.h: Removed.
* pal/LoggerHelper.h: Removed.

Source/WTF:

* WTF.xcodeproj/project.pbxproj:
* wtf/Logger.h: Copied from Source/WebCore/PAL/pal/Logger.h.
(PAL::LogArgument::toString): Deleted.
(PAL::Logger::create): Deleted.
(PAL::Logger::logAlways const): Deleted.
(PAL::Logger::error const): Deleted.
(PAL::Logger::warning const): Deleted.
(PAL::Logger::info const): Deleted.
(PAL::Logger::debug const): Deleted.
(PAL::Logger::willLog const): Deleted.
(PAL::Logger::enabled const): Deleted.
(PAL::Logger::setEnabled): Deleted.
(PAL::Logger::LogSiteIdentifier::LogSiteIdentifier): Deleted.
(PAL::Logger::addObserver): Deleted.
(PAL::Logger::removeObserver): Deleted.
(PAL::Logger::Logger): Deleted.
(PAL::Logger::log): Deleted.
(PAL::Logger::observers): Deleted.
(PAL::LogArgument<Logger::LogSiteIdentifier>::toString): Deleted.
* wtf/LoggerHelper.h: Copied from Source/WebCore/PAL/pal/LoggerHelper.h.

Tools:

* TestWebKitAPI/Tests/WebCore/Logging.cpp:
(TestWebKitAPI::TEST_F):

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

3 years agoYARR: JIT RegExps with greedy parenthesized sub patterns
msaboff@apple.com [Fri, 8 Dec 2017 20:32:42 +0000 (20:32 +0000)]
YARR: JIT RegExps with greedy parenthesized sub patterns
https://bugs.webkit.org/show_bug.cgi?id=180538

Reviewed by JF Bastien.

This patch adds JIT support for regular expressions containing greedy counted
parenthesis.  An example expression that couldn't be JIT'ed before is /q(a|b)*q/.

Just like in the interpreter, expressions with nested parenthetical subpatterns
require saving the results of previous matches of the parentheses contents along
with any associated state.  This saved state is needed in the case that we need
to backtrack.  This state is called ParenContext within the code space allocated
for this ParenContext is managed using a simple block allocator within the JIT'ed
code.  The raw space managed by this allocator is passed into the JIT'ed function.

Since this fixed sized space may be exceeded, this patch adds a fallback mechanism.
If the JIT'ed code exhausts all its ParenContext space, it returns a new error
JSRegExpJITCodeFailure.  The caller will then bytecompile and interpret the
expression.

Due to increased register usage by the parenthesis handling code, the use of
registers by the JIT engine was restructured, with registers used for Unicode
pattern matching replaced with constants.

Reworked some of the context structures that are used across the interpreter
and JIT implementations to make them a little more uniform and to handle the
needs of JIT'ing the new parentheses forms.

To help with development and debugging of this code, compiled patterns dumping
code was enhanced.  Also added the ability to also dump interpreter ByteCodes.

* 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::subpatternOffset):
(JSC::Yarr::YarrGenerator::ParenContext::savedFrameOffset):
(JSC::Yarr::YarrGenerator::initParenContextFreeList):
(JSC::Yarr::YarrGenerator::allocatePatternContext):
(JSC::Yarr::YarrGenerator::freePatternContext):
(JSC::Yarr::YarrGenerator::savePatternContext):
(JSC::Yarr::YarrGenerator::restorePatternContext):
(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::patternContextHeadIndex):
(JSC::Yarr::BackTrackInfoAlternative::offsetIndex): Deleted.

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

3 years agoModernize APIWebsiteDataStore.h and WebProcessPool.h
achristensen@apple.com [Fri, 8 Dec 2017 20:32:20 +0000 (20:32 +0000)]
Modernize APIWebsiteDataStore.h and WebProcessPool.h
https://bugs.webkit.org/show_bug.cgi?id=180588

Reviewed by Chris Dumez.

pragma once, Ref instead of RefPtr, initializer list in header instead of literals in constructor.

* UIProcess/API/APIWebsiteDataStore.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::WebProcessPool):
* UIProcess/WebProcessPool.h:

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

3 years agoWeb Inspector: CRASH at InspectorConsoleAgent::enable when iterating mutable list...
commit-queue@webkit.org [Fri, 8 Dec 2017 20:21:27 +0000 (20:21 +0000)]
Web Inspector: CRASH at InspectorConsoleAgent::enable when iterating mutable list of buffered console messages
https://bugs.webkit.org/show_bug.cgi?id=180590
<rdar://problem/35882767>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-12-08
Reviewed by Mark Lam.

* inspector/agents/InspectorConsoleAgent.cpp:
(Inspector::InspectorConsoleAgent::enable):
Swap the messages to a Vector that won't change during iteration.

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

3 years agoRemove pthread_once in favor of dispatch_once
utatane.tea@gmail.com [Fri, 8 Dec 2017 20:16:54 +0000 (20:16 +0000)]
Remove pthread_once in favor of dispatch_once
https://bugs.webkit.org/show_bug.cgi?id=180591

Reviewed by Saam Barati.

Source/WebCore:

No behavior change.

* platform/mac/WebCoreNSURLExtras.mm:
(WebCore::allCharactersInIDNScriptWhiteList):
(WebCore::readIDNScriptWhiteList): Deleted.

Source/WebKit:

* PluginProcess/mac/PluginProcessMac.mm:
(WebKit::shouldCallRealDebugger):
(WebKit::initShouldCallRealDebugger): Deleted.

Source/WebKitLegacy/mac:

* Misc/WebKitErrors.m:
(+[NSError _registerWebKitErrors]):
(registerErrors): Deleted.
* Storage/WebStorageManager.mm:
(+[WebStorageManager _storageDirectoryPath]):
(initializeLocalStoragePath): Deleted.

Source/WTF:

Fix the comment.

* wtf/Threading.h:
(WTF::Thread::current):

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

3 years agoProcessPoolConfiguration::copy() fails to copy the service worker path
cdumez@apple.com [Fri, 8 Dec 2017 20:07:30 +0000 (20:07 +0000)]
ProcessPoolConfiguration::copy() fails to copy the service worker path
https://bugs.webkit.org/show_bug.cgi?id=180595

Reviewed by Brady Eidson.

* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):

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

3 years agoDifferent WebKitTestRunner instances should use different service worker registration...
cdumez@apple.com [Fri, 8 Dec 2017 19:36:32 +0000 (19:36 +0000)]
Different WebKitTestRunner instances should use different service worker registrations databases
https://bugs.webkit.org/show_bug.cgi?id=180589

Reviewed by Brady Eidson.

Source/WebKit:

* UIProcess/API/C/WKContextConfigurationRef.cpp:
(WKContextConfigurationCopyServiceWorkerDatabaseDirectory):
(WKContextConfigurationSetServiceWorkerDatabaseDirectory):
* UIProcess/API/C/WKContextConfigurationRef.h:

Tools:

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::generateContextConfiguration const):

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

3 years agoImprove error handling in RegistrationDatabase
cdumez@apple.com [Fri, 8 Dec 2017 19:01:04 +0000 (19:01 +0000)]
Improve error handling in RegistrationDatabase
https://bugs.webkit.org/show_bug.cgi?id=180587

Reviewed by Brady Eidson.

* workers/service/server/RegistrationDatabase.cpp:
(WebCore::RegistrationDatabase::openSQLiteDatabase):
(WebCore::RegistrationDatabase::doPushChanges):

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

3 years ago[WTF][Linux][GTK] Fix a minor bug in generic/WorkQueue when WorkQueue is immediately...
utatane.tea@gmail.com [Fri, 8 Dec 2017 18:37:08 +0000 (18:37 +0000)]
[WTF][Linux][GTK] Fix a minor bug in generic/WorkQueue when WorkQueue is immediately destroyed
https://bugs.webkit.org/show_bug.cgi?id=180586

Reviewed by Darin Adler.

If WorkQueue is created and destroyed immediately, RunLoop::stop can be called
befire calling RunLoop::run(). At that time WorkQueue thread is not stopped.

This patch dispatches a task stopping its own RunLoop to ensure stop is done.
We also clean up WorkQueue implementation not to include unnecessary fields,
lock, condition, and thread.

* wtf/WorkQueue.h:
* wtf/generic/WorkQueueGeneric.cpp:
(WorkQueue::platformInitialize):
(WorkQueue::platformInvalidate):

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

3 years agoYARR: Coalesce constructed character classes
msaboff@apple.com [Fri, 8 Dec 2017 18:27:18 +0000 (18:27 +0000)]
YARR: Coalesce constructed character classes
https://bugs.webkit.org/show_bug.cgi?id=180537

Reviewed by JF Bastien.

When adding characters or character ranges to a character class being constructed,
we now coalesce adjacent characters and character ranges.  When we create a
character class after construction is complete, we do a final coalescing pass
across the character list and ranges to catch any remaining coalescing
opportunities.

Added an optimization for character classes that will match any character.
This is somewhat common in code created before the /s (dotAll) flag was added
to the engine.

* yarr/YarrInterpreter.cpp:
(JSC::Yarr::Interpreter::checkCharacterClass):
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::generateCharacterClassOnce):
(JSC::Yarr::YarrGenerator::generateCharacterClassFixed):
(JSC::Yarr::YarrGenerator::generateCharacterClassGreedy):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassNonGreedy):
* yarr/YarrPattern.cpp:
(JSC::Yarr::CharacterClassConstructor::CharacterClassConstructor):
(JSC::Yarr::CharacterClassConstructor::reset):
(JSC::Yarr::CharacterClassConstructor::charClass):
(JSC::Yarr::CharacterClassConstructor::addSorted):
(JSC::Yarr::CharacterClassConstructor::addSortedRange):
(JSC::Yarr::CharacterClassConstructor::mergeRangesFrom):
(JSC::Yarr::CharacterClassConstructor::coalesceTables):
(JSC::Yarr::CharacterClassConstructor::anyCharacter):
(JSC::Yarr::YarrPatternConstructor::atomCharacterClassEnd):
(JSC::Yarr::PatternTerm::dump):
(JSC::Yarr::anycharCreate):
* yarr/YarrPattern.h:
(JSC::Yarr::CharacterClass::CharacterClass):

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

3 years agoPass std::optional<WebsitePolicies> instead of WebsitePolicies
achristensen@apple.com [Fri, 8 Dec 2017 18:05:21 +0000 (18:05 +0000)]
Pass std::optional<WebsitePolicies> instead of WebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=180563

Reviewed by Andy Estes.

WebsitePolicies are only passed along when a decidePolicyForNavigationAction SPI completion handler
is called with a valid _WKWebsitePolicies object.  In other cases, we don't have one.  Rather than
making WebsitePolicies have a default value for everything that won't change policies, pass
a std::optional<WebsitePolicies> which indicates better when we don't have new policies.

No change in behavior, but this will enable me to add things to WebsitePolicies that have no default value.

* Shared/WebsitePolicies.h:
Make WebsitePolicies a class with public members because the IPC code generators don't understand std::optional<struct type>
* UIProcess/API/C/WKAPICast.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::tryAppLink):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
* UIProcess/WebFrameListenerProxy.cpp:
(WebKit::WebFrameListenerProxy::receivedPolicyDecision):
* UIProcess/WebFrameListenerProxy.h:
* UIProcess/WebFramePolicyListenerProxy.cpp:
(WebKit::WebFramePolicyListenerProxy::use):
* UIProcess/WebFramePolicyListenerProxy.h:
* UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::receivedPolicyDecision):
* UIProcess/WebFrameProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(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):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

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

3 years ago[WTF] Remove remaining use of Mutex
utatane.tea@gmail.com [Fri, 8 Dec 2017 17:48:31 +0000 (17:48 +0000)]
[WTF] Remove remaining use of Mutex
https://bugs.webkit.org/show_bug.cgi?id=180579

Reviewed by Alex Christensen.

Source/WebKit:

Remove unused "BinarySemaphore.h".

* Platform/IPC/win/ConnectionWin.cpp:

Source/WTF:

Mutex should be only used in low-level Locking and Threading.
Other ones should use WTF::Lock and WTF::Condition instead.
This patch replaces WTF::Mutex with WTF::Lock in WTF if it
is not related to threading or locking implementation.

And we also use WTF::Lock and WTF::Condition in WTF::BinarySemaphore.

* wtf/RunLoop.cpp:
(WTF::RunLoop::performWork):
(WTF::RunLoop::dispatch):
* wtf/RunLoop.h:
* wtf/WorkQueue.cpp:
* wtf/WorkQueue.h:
* wtf/threads/BinarySemaphore.cpp:
(WTF::BinarySemaphore::signal):
(WTF::BinarySemaphore::wait):
(WTF::BinarySemaphore::BinarySemaphore): Deleted.
(WTF::BinarySemaphore::~BinarySemaphore): Deleted.
* wtf/threads/BinarySemaphore.h:
* wtf/win/WorkQueueWin.cpp:
(WTF::WorkQueue::registerHandle):
(WTF::WorkQueue::unregisterAndCloseHandle):
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::timerCallback):
(WTF::WorkQueue::dispatchAfter):
(WTF::TimerContext::TimerContext): Deleted.

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

3 years agoSimplify and streamline some Color-related code to prepare for some Color/ExtendedCol...
darin@apple.com [Fri, 8 Dec 2017 17:26:58 +0000 (17:26 +0000)]
Simplify and streamline some Color-related code to prepare for some Color/ExtendedColor work
https://bugs.webkit.org/show_bug.cgi?id=180569

Reviewed by Sam Weinig.

* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::colorValue const): Use valueAsColor instead of
having custom code here to parse the color string.

* css/CSSGradientValue.cpp:
(WebCore::interpolate): Deleted.
(WebCore::CSSGradientValue::computeStops): Call blend instead of interpolate. The only
difference is that the interpolate function truncated when converting from floating point
to integer, and the blend function rounds instead.

* css/StyleResolver.cpp:
(WebCore::StyleResolver::colorFromPrimitiveValue const): Removed unneeded special case
for identifier of 0, since StyleColor::colorFromKeyword already handles that correctly.
Also got rid of unneded local variable "state".

* html/ColorInputType.cpp:
(WebCore::isValidSimpleColor): Rewrote to take a StringView instead of a String and
to stay with a single loop since this does not need the extra efficiency of a separate
8-bit and 16-bit character version. Renamed to more closely match what the specification
calls this algorithm.
(WebCore::parseSimpleColorValue): Added. To be used instead of relying on the behavior of
the Color constructor that takes a String, so we can remove that later.
(WebCore::ColorInputType::sanitizeValue const): Updated for name change.
(WebCore::ColorInputType::valueAsColor const): Use parseSimpleColorValue instead of the
Color constructor that takes a string.
(WebCore::ColorInputType::typeMismatchFor const): Updated for name change.
(WebCore::ColorInputType::selectColor): Updated to take a StringView instead of a Color.
Note that this function is used for testing only.

* html/ColorInputType.h: Marked everything final instead of override. Updated the
selectColor function to take a StringView instead of a Color.

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::selectColor): Take a StringView instead of a Color.
* html/HTMLInputElement.h: Ditto.

* html/InputType.cpp:
(WebCore::InputType::selectColor): Take a StringView instead of a Color.
* html/InputType.h: Ditto.

* testing/Internals.cpp:
(WebCore::Internals::selectColorInColorChooser): Pass the string directly instead of
constructing a Color with it.
(WebCore::Internals::setViewBaseBackgroundColor): Instead of pasring the passed in string
with the Color constructor, implemented the two names that are actually used with this
function in tests: "transparent" and "white".

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

3 years agoRemove some unused code from WebKitLegacy
darin@apple.com [Fri, 8 Dec 2017 17:26:27 +0000 (17:26 +0000)]
Remove some unused code from WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=180567

Reviewed by Anders Carlsson.

* Misc/WebKitNSStringExtras.h: Researched which of these functions are used in
macOS (back a few versions) and iOS and removed unused
_web_drawAtPoint:font:textColor:allowingFontSmoothing:,
_web_drawDoubledAtPoint:withTopColor:bottomColor:font:,
_web_stringByStrippingReturnCharacters, _webkit_hasCaseInsensitiveSubstring:,
_webkit_stringByCollapsingNonPrintingCharacters,
_webkit_stringByCollapsingWhitespaceCharacters,
_web_stringWithData:textEncodingName:, and
_webkit_localStorageDirectoryWithBundleIdentifier:.

* Misc/WebKitNSStringExtras.mm: Made WebKitLocalCacheDefaultsKey private to
this source file.
(canUseFastRenderer): Made this faster by not calling u_charDirection for
Latin-1 characters, and also added special cases for U_DIR_NON_SPACING_MARK
and U_BOUNDARY_NEUTRAL, which should not prevent use of the fast renderer.
(-[NSString _web_drawAtPoint:font:textColor:allowingFontSmoothing:]): Deleted.
(-[NSString _web_drawAtPoint:font:textColor:]): Removed unneeded code to
handle font smoothing options.
(-[NSString _web_drawDoubledAtPoint:withTopColor:bottomColor:font:]): Deleted.
(-[NSString _web_stringByAbbreviatingWithTildeInPath]): Moved comment here
from header and made it a little clearer.
(-[NSString _web_stringByStrippingReturnCharacters]): Deleted.
(-[NSString _webkit_hasCaseInsensitiveSubstring:]): Deleted.
(-[NSString _webkit_stringByCollapsingNonPrintingCharacters]): Deleted.
(-[NSString _webkit_stringByCollapsingWhitespaceCharacters]): Deleted.
(+[NSString _web_stringWithData:textEncodingName:]): Deleted.
(+[NSString _webkit_localCacheDirectoryWithBundleIdentifier:]): Streamlined
implementation a bit and used whole words instead of abbreviations.
(+[NSString _webkit_localStorageDirectoryWithBundleIdentifier:]): Deleted.

* Misc/WebNSFileManagerExtras.mm:
(-[NSFileManager _webkit_pathWithUniqueFilenameForPath:]): Use the
filenameByFixingIllegalCharacters function from WebCore directly instead of
indirectly through the method _webkit_filenameByFixingIllegalCharacters.

* Plugins/WebBaseNetscapePluginView.mm:
(-[WebBaseNetscapePluginView URLWithCString:]): Rewrote to use simple
string replacements instead of _web_stringByStrippingReturnCharacters
and to use NSString methods instead of CFString functions.

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

3 years ago[GTK] Rebaseline tables/mozilla/bugs/bug32205-5.html.
Ms2ger@igalia.com [Fri, 8 Dec 2017 16:45:51 +0000 (16:45 +0000)]
[GTK] Rebaseline tables/mozilla/bugs/bug32205-5.html.
https://bugs.webkit.org/show_bug.cgi?id=169010

Unreviewed test gardening.

The numbers changed by a few pixels in r213149.

* platform/gtk/TestExpectations:
* platform/gtk/tables/mozilla/bugs/bug32205-5-expected.txt:

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

3 years ago[WinCairo][Ninja] Incremental build failure of WTF
commit-queue@webkit.org [Fri, 8 Dec 2017 16:31:47 +0000 (16:31 +0000)]
[WinCairo][Ninja] Incremental build failure of WTF
https://bugs.webkit.org/show_bug.cgi?id=180521

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2017-12-08
Reviewed by Konstantin Tokarev.

WTF included its forwarding headers in Windows ports. The
directory DerivedSources/ForwardingHeaders shouldn't be a include
path for WTF.

* Source/cmake/OptionsWin.cmake:
Removed DerivedSources/ForwardingHeaders and DerivedSources from include paths.

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

3 years ago[GTK] WebInspectorProxyClient needs a virtual destructor
mcatanzaro@igalia.com [Fri, 8 Dec 2017 16:28:48 +0000 (16:28 +0000)]
[GTK] WebInspectorProxyClient needs a virtual destructor
https://bugs.webkit.org/show_bug.cgi?id=180533

Reviewed by Carlos Garcia Campos.

Otherwise the derived class portion of the object, WebKitInspectorClient, is not destroyed.

* UIProcess/gtk/WebInspectorProxyClient.h:

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

3 years agoUnreviewed, fix wrong letter case in #import HTMLIframeElement.h
annulen@yandex.ru [Fri, 8 Dec 2017 15:00:27 +0000 (15:00 +0000)]
Unreviewed, fix wrong letter case in #import HTMLIframeElement.h

* editing/cocoa/WebContentReaderCocoa.mm:

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

3 years agoTools/ImageDiff/cg/PlatformImageCG.cpp doesn't need to include <wtf/MathExtras.h>
commit-queue@webkit.org [Fri, 8 Dec 2017 14:00:16 +0000 (14:00 +0000)]
Tools/ImageDiff/cg/PlatformImageCG.cpp doesn't need to include <wtf/MathExtras.h>
https://bugs.webkit.org/show_bug.cgi?id=180578

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2017-12-08
Reviewed by Konstantin Tokarev.

* ImageDiff/cg/PlatformImageCG.cpp: Removed unnecessary #include <wtf/MathExtras.h>.

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

3 years agoUnreviewed WPE build fix after r225671.
zandobersek@gmail.com [Fri, 8 Dec 2017 13:07:41 +0000 (13:07 +0000)]
Unreviewed WPE build fix after r225671.

* WebKitTestRunner/InjectedBundle/wpe/TestRunnerWPE.cpp:
Include the ActivateFonts.h header to have a usable
WTR::installFakeHelvetica() function declaration.

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

3 years agoUse StaticLock and Lock instead of Mutex in Windows WebKitLegacy
utatane.tea@gmail.com [Fri, 8 Dec 2017 12:09:31 +0000 (12:09 +0000)]
Use StaticLock and Lock instead of Mutex in Windows WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=180572

Reviewed by Mark Lam.

Source/WebKitLegacy/win:

Use StaticLock and drop DEPRECATED_DEFINE_STATIC_LOCAL.
Also we use Lock instead of Mutex.

* WebKitQuartzCoreAdditions/CAD3DRenderer.cpp:
(WKQCA::CAD3DRenderer::swapChain):
(WKQCA::CAD3DRenderer::renderAndPresent):
(WKQCA::CAD3DRenderer::renderToImage):
(WKQCA::CAD3DRenderer::setDeviceIsLost):
(WKQCA::CAD3DRenderer::renderInternal):
* WebKitQuartzCoreAdditions/CAD3DRenderer.h:
* WebKitQuartzCoreAdditions/CAView.cpp:
(WKQCA::CAView::Handle::create):
Return Ref<Handle> instead of RefPtr<>.

(WKQCA::CAView::Handle::lock):
(WKQCA::CAView::Handle::view const):
(WKQCA::CAView::Handle::clear):
(WKQCA::views):
(WKQCA::viewsNeedingUpdate):
(WKQCA::CAView::releaseAllD3DResources):
(WKQCA::CAView::CAView):
(WKQCA::CAView::~CAView):
(WKQCA::CAView::setLayer):
(WKQCA::CAView::update):
(WKQCA::CAView::drawToWindow):
(WKQCA::CAView::drawToWindowInternal):
(WKQCA::CAView::drawToImage):
(WKQCA::CAView::willDraw):
(WKQCA::CAView::drawIntoDC):
(WKQCA::CAView::setShouldInvertColors):
(WKQCA::CAView::scheduleNextDraw):
(WKQCA::CAView::displayLinkReachedCAMediaTime):
(WKQCA::CAView::contextDidChange):
(WKQCA::CAView::updateSoon):
(WKQCA::CAView::updateViewsNow):
(WKQCA::CAView::d3dDevice9):
(WKQCA::CAView::Handle::mutex): Deleted.
(WKQCA::globalStateMutex): Deleted.
(): Deleted.
* WebKitQuartzCoreAdditions/CAView.h:

Source/WTF:

Remove DEPRECATED_DEFINE_STATIC_LOCAL since it's no longer used.

* wtf/StdLibExtras.h:

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

3 years agoUnreviewed GTK+ and WPE build fix.
zandobersek@gmail.com [Fri, 8 Dec 2017 07:47:18 +0000 (07:47 +0000)]
Unreviewed GTK+ and WPE build fix.

Add TestRunner::installFakeHelvetica(), WTR::installFakeHelvetica()
and WTF::uninstallFakeHelvetica() definitions, filling out the
declarations added in r225641. This fills up missing symbols in the
WKTR's InjectedBundle library, unbreaking layout tests for both
configurations.

* WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
(WTR::installFakeHelvetica):
(WTR::uninstallFakeHelvetica):
* WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp:
(WTR::TestRunner::inspectorTestStubURL):
(WTR::TestRunner::installFakeHelvetica):
* WebKitTestRunner/InjectedBundle/wpe/ActivateFontsWPE.cpp:
(WTR::installFakeHelvetica):
(WTR::uninstallFakeHelvetica):
* WebKitTestRunner/InjectedBundle/wpe/TestRunnerWPE.cpp:
(WTR::TestRunner::installFakeHelvetica):

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

3 years agoiOS: Many AMP pages hit a release assertion inside Document::updateStyleIfNeeded
rniwa@webkit.org [Fri, 8 Dec 2017 04:50:48 +0000 (04:50 +0000)]
iOS: Many AMP pages hit a release assertion inside Document::updateStyleIfNeeded
https://bugs.webkit.org/show_bug.cgi?id=180550

Reviewed by Simon Fraser.

Add a test for r225647.

* fast/frames/flattening/non-flattening-frame-inside-flattening-iframe-crash-expected.txt: Added.
* fast/frames/flattening/non-flattening-frame-inside-flattening-iframe-crash.html: Added.

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

3 years agoIgnore deprecation warnings.
jberlin@webkit.org [Fri, 8 Dec 2017 04:22:47 +0000 (04:22 +0000)]
Ignore deprecation warnings.

* WebView/WebHTMLView.mm:
(-[NSWindow _web_borderView]):
(-[WebHTMLView _setAsideSubviews]):
* WebView/WebView.mm:
(-[WebView encodeWithCoder:]):

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

3 years ago[Win] [64-bit] Resolve Microsoft warning C4319 on BitVector.cpp
commit-queue@webkit.org [Fri, 8 Dec 2017 03:03:19 +0000 (03:03 +0000)]
[Win] [64-bit] Resolve Microsoft warning C4319 on BitVector.cpp
https://bugs.webkit.org/show_bug.cgi?id=180490

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2017-12-07
Reviewed by Alex Christensen.

bitsInPointer() returns unsigned which is smaller than size_t.
"~"(negate) operator is applied before extending its size which result filled with zero.
This may be potentially a bug if numBits is greater than max value of unsigned long
(which is not practical).

* wtf/BitVector.cpp:
(WTF::BitVector::OutOfLineBits::create):

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

3 years agoUse WTF::RecursiveLockAdapter instead of using pthread_mutex_t with recursive lock...
utatane.tea@gmail.com [Fri, 8 Dec 2017 03:02:26 +0000 (03:02 +0000)]
Use WTF::RecursiveLockAdapter instead of using pthread_mutex_t with recursive lock option
https://bugs.webkit.org/show_bug.cgi?id=180449

Reviewed by Mark Lam.

Use WTF::RecursiveLockAdapter<StaticLock> instead. We can remove pthread_mutex_xxx,
pthread_once and FontLocker wrapper.

* platform/graphics/FontCache.cpp:
(WebCore::FontCache::getCachedFontPlatformData):
(WebCore::FontCache::fontForPlatformData):
(WebCore::FontCache::purgeInactiveFontData):
(WebCore::FontCache::inactiveFontCount):
(initFontCacheLockOnce): Deleted.
(FontLocker::FontLocker): Deleted.
(FontLocker::~FontLocker): Deleted.

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

3 years ago[WinCairo] Fix ResourceError handling in ArgumentCoder for wincairo webkit
commit-queue@webkit.org [Fri, 8 Dec 2017 03:00:42 +0000 (03:00 +0000)]
[WinCairo] Fix ResourceError handling in ArgumentCoder for wincairo webkit
https://bugs.webkit.org/show_bug.cgi?id=180483

Patch by Yousuke Kimoto <yousuke.kimoto@sony.com> on 2017-12-07
Reviewed by Alex Christensen.

* Shared/curl/WebCoreArgumentCodersCurl.cpp:
(IPC::ArgumentCoder<ResourceError>::encodePlatformData):
(IPC::ArgumentCoder<ResourceError>::decodePlatformData):

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

3 years agoStartFetch should take a ServiceWorkerIdentifier
commit-queue@webkit.org [Fri, 8 Dec 2017 02:33:36 +0000 (02:33 +0000)]
StartFetch should take a ServiceWorkerIdentifier
https://bugs.webkit.org/show_bug.cgi?id=180478

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-07
Reviewed by Brady Eidson.

Before the patch, StartFetch was taking an optional ServiceWorkerIdentifier.
Now that every navigation fetch is querying its matching registration, it can no longer be optional.

In the case there is a problem in running the service worker at start fetch time,
answer to the WebProcess to go to network so that the request does not get stalled.

* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::startFetch):
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::startFetch):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.messages.in:

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

3 years agoModify our dollar VM clflush intrinsic to aid in some perf testing
sbarati@apple.com [Fri, 8 Dec 2017 02:08:03 +0000 (02:08 +0000)]
Modify our dollar VM clflush intrinsic to aid in some perf testing
https://bugs.webkit.org/show_bug.cgi?id=180559

Reviewed by Mark Lam.

* tools/JSDollarVM.cpp:
(JSC::functionCpuClflush):
(JSC::functionDeltaBetweenButterflies):
(JSC::JSDollarVM::finishCreation):

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

3 years agoSimplify log channel configuration UI
eric.carlson@apple.com [Fri, 8 Dec 2017 01:53:31 +0000 (01:53 +0000)]
Simplify log channel configuration UI
https://bugs.webkit.org/show_bug.cgi?id=180527
<rdar://problem/35908382>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/protocol/Console.json:

Source/WebCore:

No new tests, updated existing test.

* inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::getLoggingChannels):
(WebCore::channelConfigurationForString):

Source/WebInspectorUI:

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/LoggingChannel.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):

LayoutTests:

* inspector/console/webcore-logging.html: Updated test for new results.

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

3 years agoUse StaticLock instead of NeverDestroyed<Lock>
utatane.tea@gmail.com [Fri, 8 Dec 2017 01:31:10 +0000 (01:31 +0000)]
Use StaticLock instead of NeverDestroyed<Lock>
https://bugs.webkit.org/show_bug.cgi?id=180507

Reviewed by Saam Barati.

Source/WebCore:

StaticLock can be used instead of using NeverDestroyed<Lock>.

No behavior change.

* Modules/webdatabase/Database.cpp:
(WebCore::Database::performOpenAndVerify):
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::DatabaseTracker::openDatabaseMutex):
(WebCore::DatabaseTracker::emptyDatabaseFilesRemovalTaskWillBeScheduled):
(WebCore::DatabaseTracker::emptyDatabaseFilesRemovalTaskDidFinish):
(WebCore::DatabaseTracker::scheduleNotifyDatabaseChanged):
(WebCore::DatabaseTracker::scheduleForNotification):
(WebCore::DatabaseTracker::notifyDatabasesChanged):
(WebCore::notificationMutex): Deleted.
* Modules/webdatabase/DatabaseTracker.h:
* platform/URL.cpp:
(WebCore::registerDefaultPortForProtocolForTesting):
(WebCore::clearDefaultPortForProtocolMapForTesting):
(WebCore::defaultPortForProtocol):
(WebCore::defaultPortForProtocolMapForTestingLock): Deleted.
* platform/graphics/MediaPlayer.cpp:
(WebCore::buildMediaEnginesVector):
(WebCore::installedMediaEngines):
(WebCore::MediaPlayer::resetMediaEngines):
(WebCore::mediaEngineVectorLock): Deleted.
* platform/ios/QuickLook.mm:
(WebCore::removeQLPreviewConverterForURL):
(WebCore::addQLPreviewConverterWithFileForURL):
(WebCore::qlPreviewConverterDictionaryMutex): Deleted.
* platform/ios/WebSQLiteDatabaseTrackerClient.mm:
(+[WebDatabaseTransactionBackgroundTaskController startBackgroundTask]):
(+[WebDatabaseTransactionBackgroundTaskController endBackgroundTask]):
(transactionBackgroundTaskIdentifierLock): Deleted.
* platform/network/curl/CurlContext.cpp:
(WebCore::CurlShareHandle::lockCallback):
(WebCore::CurlShareHandle::unlockCallback):
(WebCore::CurlShareHandle::mutexFor):
* platform/network/curl/CurlContext.h:

Source/WebKitLegacy/ios:

* WebCoreSupport/WebFixedPositionContent.mm:
(-[WebFixedPositionContent scrollOrZoomChanged:]):
(-[WebFixedPositionContent overflowScrollPositionForLayer:changedTo:]):
(-[WebFixedPositionContent setViewportConstrainedLayers:stickyContainerMap:]):
(-[WebFixedPositionContent hasFixedOrStickyPositionLayers]):
(WebFixedPositionContentDataLock): Deleted.

Source/WebKitLegacy/win:

* WebLocalizableStrings.cpp:
(findCachedString):
(cacheString):
(mainBundleLocStrings): Deleted.
(frameworkLocStringsMutex): Deleted.

Tools:

* DumpRenderTree/JavaScriptThreading.cpp:
(javaScriptThreads):
(runJavaScriptThread):
(startJavaScriptThreads):
(stopJavaScriptThreads):
(javaScriptThreadsMutex): Deleted.

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

3 years agoRead registrations in from disk.
beidson@apple.com [Fri, 8 Dec 2017 01:27:00 +0000 (01:27 +0000)]
Read registrations in from disk.
https://bugs.webkit.org/show_bug.cgi?id=180543

Reviewed by Andy Estes.

No new tests (Not testable quite yet)

On launch, read through the database.

Set up enough objects in the SWServer necessary to cause fetches and postMessages to
go to a worker that has never run before.

* workers/service/ServiceWorkerContextData.cpp:
(WebCore::ServiceWorkerContextData::isolatedCopy const):
* workers/service/ServiceWorkerContextData.h:
(WebCore::ServiceWorkerContextData::encode const):
(WebCore::ServiceWorkerContextData::decode):

* workers/service/ServiceWorkerRegistrationKey.cpp:
(WebCore::ServiceWorkerRegistrationKey::toDatabaseKey const):
(WebCore::ServiceWorkerRegistrationKey::fromDatabaseKey):
* workers/service/ServiceWorkerRegistrationKey.h:

* workers/service/server/RegistrationDatabase.cpp:
(WebCore::stringToUpdateViaCache):
(WebCore::stringToWorkerType):
(WebCore::RegistrationDatabase::doPushChanges):
(WebCore::RegistrationDatabase::importRecords):
(WebCore::RegistrationDatabase::addRegistrationToStore):
* workers/service/server/RegistrationDatabase.h:

* workers/service/server/RegistrationStore.cpp:
(WebCore::RegistrationStore::RegistrationStore):
(WebCore::RegistrationStore::addRegistrationFromDatabase):
* workers/service/server/RegistrationStore.h:

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::addRegistrationFromStore):
(WebCore::SWServer::SWServer):
(WebCore::SWServer::updateWorker):
(WebCore::SWServer::tryInstallContextData):
(WebCore::SWServer::installContextData):
(WebCore::generateServiceWorkerIdentifier): Deleted.
* workers/service/server/SWServer.h:

* workers/service/server/SWServerRegistration.h:

* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::contextData const):

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

3 years agoUse WTF Locking primitives in WebThread and drop pthread_xxx use
utatane.tea@gmail.com [Fri, 8 Dec 2017 01:26:27 +0000 (01:26 +0000)]
Use WTF Locking primitives in WebThread and drop pthread_xxx use
https://bugs.webkit.org/show_bug.cgi?id=180445

Reviewed by Saam Barati.

Source/WebCore:

We remove use of pthread locking primitives from WebThread implementation,
and use WTF Lock and Condition instead.

No behavior change.

* platform/ios/wak/WebCoreThread.mm:
(HandleDelegateSource):
(SendDelegateMessage):
(WebThreadRunOnMainThread):
(WebThreadAdoptAndRelease):
(WebCoreObjCDeallocOnWebThreadImpl):
(WebCoreObjCDeallocWithWebThreadLockImpl):
(HandleWebThreadReleaseSource):
(_WebThreadAutoLock):
(WebRunLoopLockInternal):
(CurrentThreadContext):
Use WTF::ThreadSpecific.

(StartWebThread):
(_WebThreadLock):
Remove `shouldTry` parameter since it is always `false`. We clean up code based on `shouldTry = false`,
and rename it from _WebTryThreadLock to _WebThreadLock since it does not try now.

(_WebThreadLockFromAnyThread):
(WebThreadUnlockFromAnyThread):
(_WebThreadUnlock):
(lockWebCoreReleaseLock): Deleted.
(unlockWebCoreReleaseLock): Deleted.
(WebTimedConditionLock): Deleted.
(_WebTryThreadLock): Deleted.

Source/WTF:

Add initializer form to fill struct with zero if struct does not have any default initializers.

* wtf/ThreadSpecific.h:
(WTF::ThreadSpecific::Data::Data):

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

3 years agoApply poisoning to some native code pointers.
mark.lam@apple.com [Fri, 8 Dec 2017 01:22:06 +0000 (01:22 +0000)]
Apply poisoning to some native code pointers.
https://bugs.webkit.org/show_bug.cgi?id=180541
<rdar://problem/35916875>

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Renamed g_classInfoPoison to g_globalDataPoison.
Renamed g_masmPoison to g_jitCodePoison.
Introduced g_nativeCodePoison.
Applied g_nativeCodePoison to poisoning some native code pointers.

Introduced non-random Int32 poison values (in JSCPoison.h) for use with pointers
to malloc allocated data structures (where needed).

* API/JSCallbackFunction.h:
(JSC::JSCallbackFunction::functionCallback):
* JavaScriptCore.xcodeproj/project.pbxproj:
* jit/ThunkGenerators.cpp:
(JSC::nativeForGenerator):
* llint/LowLevelInterpreter64.asm:
* runtime/CustomGetterSetter.h:
(JSC::CustomGetterSetter::getter const):
(JSC::CustomGetterSetter::setter const):
* runtime/InternalFunction.cpp:
(JSC::InternalFunction::getCallData):
(JSC::InternalFunction::getConstructData):
* runtime/InternalFunction.h:
(JSC::InternalFunction::nativeFunctionFor):
* runtime/JSCPoison.h: Added.
* runtime/JSCPoisonedPtr.cpp:
(JSC::initializePoison):
* runtime/JSCPoisonedPtr.h:
* runtime/Lookup.h:
* runtime/NativeExecutable.cpp:
(JSC::NativeExecutable::hashFor const):
* runtime/NativeExecutable.h:
* runtime/Structure.cpp:
(JSC::StructureTransitionTable::setSingleTransition):
* runtime/StructureTransitionTable.h:
(JSC::StructureTransitionTable::StructureTransitionTable):
(JSC::StructureTransitionTable::isUsingSingleSlot const):
(JSC::StructureTransitionTable::map const):
(JSC::StructureTransitionTable::weakImpl const):
(JSC::StructureTransitionTable::setMap):

Source/WTF:

Ensure that the resultant poisoned bits still looks like a pointer in that its
bottom bits are 0, just like the alignment bits of a pointer.  This allows the
client to use the bottom bits of the poisoned bits as flag bits just like the
client was previously able to do with pointer values.

Note: we only ensure that the bottom alignment bits of the generated poison
value is 0.  We're not masking out the poisoned bits.  This means that the bottom
bits of the poisoned bits will only be null if the original pointer is aligned.
Hence, if the client applies the poison to an unaligned pointer, we do not lose
any information on the low bits.

Also removed 2 wrong assertions in PoisonedImpl's constructors.  We were
asserting that Poisoned will never be used with a null value, but that's invalid.
We do want to allow a null value so that we don't have to constantly do null
checks in the clients.  This was uncovered by some layout tests.

* wtf/Poisoned.cpp:
(WTF::makePoison):
* wtf/Poisoned.h:
(WTF::PoisonedImpl::PoisonedImpl):

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

3 years agoWe need to grab the JSLock in InjectedBundle::createWebDataFromUint8Array
sbarati@apple.com [Fri, 8 Dec 2017 01:12:18 +0000 (01:12 +0000)]
We need to grab the JSLock in InjectedBundle::createWebDataFromUint8Array
https://bugs.webkit.org/show_bug.cgi?id=180492

Reviewed by Alex Christensen.

InjectedBundle::createWebDataFromUint8Array calls into WebCore APIs that allocate
out of the JS heap. It's only legal to allocate out of the JS heap when holding the JS lock.

* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::createWebDataFromUint8Array):

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

3 years agoFix API test after r225645.
achristensen@apple.com [Fri, 8 Dec 2017 00:59:02 +0000 (00:59 +0000)]
Fix API test after r225645.
https://bugs.webkit.org/show_bug.cgi?id=180544

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::loadWithDocumentLoader):
The API test WebKitLegacy.FragmentNavigation started failing after r225645.
It does call the completion handler with ignore to cancel fragment navigation.
To make this work and increase compatibility, only synchronously continue with
fragment navigations if we haven't received a synchronous answer to the
decidePolicyForNavigationAction callback.

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

3 years agoWebAssembly: sending module to iframe fails
gskachkov@gmail.com [Fri, 8 Dec 2017 00:56:18 +0000 (00:56 +0000)]
WebAssembly: sending module to iframe fails
https://bugs.webkit.org/show_bug.cgi?id=179263

Reviewed by JF Bastien.

Source/WebCore:

Allow use WebAssembly.Module as input parameters for postMessage
in window and iframe object.

Tests: wasm/iframe-postmessage.html
       wasm/window-postmessage.html

* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::dumpIfTerminal):
* bindings/js/SerializedScriptValue.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::postMessage):

LayoutTests:

* platform/ios-simulator/TestExpectations:
* platform/win/TestExpectations:
* resources/wasm-builder.js: Renamed from LayoutTests/workers/wasm-resources/builder.js.
* wasm/iframe-parent-postmessage-expected.txt: Added.
* wasm/iframe-parent-postmessage.html: Added.
* wasm/iframe-postmessage-expected.txt: Added.
* wasm/iframe-postmessage.html: Added.
* wasm/resources/frame-parent.html: Added.
* wasm/resources/frame.html: Added.
* wasm/resources/load_wasm.js: Added.
(createWasmModule):
* wasm/window-postmessage-expected.txt: Added.
* wasm/window-postmessage.html: Added.
* workers/wasm-mem-post-message.html:

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

3 years agoPropagate WebKit2Logging channels to the Web Process
simon.fraser@apple.com [Fri, 8 Dec 2017 00:54:51 +0000 (00:54 +0000)]
Propagate WebKit2Logging channels to the Web Process
https://bugs.webkit.org/show_bug.cgi?id=180517

Reviewed by Tim Horton.

If you set WebKit2Logging, you want those channels active in both the UI process and
the web process, but without tricky 'defaults' gyrations, setting them in the web process
was hard.

Instead, send them through to the process via WebProcessCreationParameters, as we do
for WebCoreLogging channels.

* Platform/LogInitialization.h:
* Platform/Logging.cpp:
(WebKit::initializeLogChannelsIfNecessary):
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):

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

3 years agoWeb Inspector: Fix style in remote inspector classes
commit-queue@webkit.org [Fri, 8 Dec 2017 00:22:55 +0000 (00:22 +0000)]
Web Inspector: Fix style in remote inspector classes
https://bugs.webkit.org/show_bug.cgi?id=180545

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-12-07
Reviewed by Youenn Fablet.

Source/JavaScriptCore:

* inspector/remote/RemoteControllableTarget.h:
* inspector/remote/RemoteInspectionTarget.h:
* runtime/JSGlobalObjectDebuggable.h:

Source/WebCore:

* page/PageDebuggable.h:
* workers/service/context/ServiceWorkerDebuggable.h:

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

3 years agoSkipped imported/w3c/web-platform-tests/XMLHttpRequest/event-upload-progress-crossori...
jlewis3@apple.com [Fri, 8 Dec 2017 00:19:17 +0000 (00:19 +0000)]
Skipped imported/w3c/web-platform-tests/XMLHttpRequest/event-upload-progress-crossorigin.htm on macOS WK1
https://bugs.webkit.org/show_bug.cgi?id=180554
https://bugs.webkit.org/show_bug.cgi?id=180553

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

3 years agoUse fastAlignedFree to free aligned memory.
pvollan@apple.com [Fri, 8 Dec 2017 00:18:00 +0000 (00:18 +0000)]
Use fastAlignedFree to free aligned memory.
https://bugs.webkit.org/show_bug.cgi?id=180540

Reviewed by Saam Barati.

* heap/IsoAlignedMemoryAllocator.cpp:
(JSC::IsoAlignedMemoryAllocator::~IsoAlignedMemoryAllocator):

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

3 years agoAdd logging for EditorState in RemoteLayerTree transactions
simon.fraser@apple.com [Fri, 8 Dec 2017 00:15:29 +0000 (00:15 +0000)]
Add logging for EditorState in RemoteLayerTree transactions
https://bugs.webkit.org/show_bug.cgi?id=180515

Reviewed by Wenson Hsieh.

Make EditorState TextStream-able, and dump it in layer tree transactions.

* Shared/EditorState.cpp:
(WebKit::operator<<):
* Shared/EditorState.h:
* Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::description const):

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