WebKit-https.git
21 months agoUse protectedThis for the 'updatePrevalentDomainsToPartitionOrBlockCookies' lambda
bfulgham@apple.com [Thu, 11 Jan 2018 00:06:55 +0000 (00:06 +0000)]
Use protectedThis for the 'updatePrevalentDomainsToPartitionOrBlockCookies' lambda
https://bugs.webkit.org/show_bug.cgi?id=181452
<rdar://problem/36416912>

Reviewed by Chris Dumez.

We forgot to use a 'protectedThis' back in r225006 for one of the lambdas used by
the WebsiteDataStore for processing.

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

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

21 months agoMark accessibility/table-header-calculation-for-header-rows.html as failure on Windows.
pvollan@apple.com [Wed, 10 Jan 2018 23:29:37 +0000 (23:29 +0000)]
Mark accessibility/table-header-calculation-for-header-rows.html as failure on Windows.
https://bugs.webkit.org/show_bug.cgi?id=181501

Unreviewed test gardening.

* platform/win/TestExpectations:

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

21 months agoVersioning.
jmarcell@apple.com [Wed, 10 Jan 2018 23:19:56 +0000 (23:19 +0000)]
Versioning.

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

21 months agoAdjusted expectations for webrtc/video-unmute.html.
jlewis3@apple.com [Wed, 10 Jan 2018 22:51:22 +0000 (22:51 +0000)]
Adjusted expectations for webrtc/video-unmute.html.
https://bugs.webkit.org/show_bug.cgi?id=172879

Unreviewed test gardening.

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

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

21 months agoREGRESSION (r226715): ignore WARNING output in linter tests
jbedard@apple.com [Wed, 10 Jan 2018 22:46:30 +0000 (22:46 +0000)]
REGRESSION (r226715): ignore WARNING output in linter tests
https://bugs.webkit.org/show_bug.cgi?id=181486
<rdar://problem/36408847>

Reviewed by Aakash Jain.

Linter unit tests should not be interested in logs at the the INFO or WARNING levels.

* Scripts/webkitpy/common/system/outputcapture.py:
(OutputCapture.__init__): Pass logging level to be captured.
* Scripts/webkitpy/style/main_unittest.py:
(ExpectationLinterInStyleCheckerTest.test_no_linter_errors): Capture logging at the ERROR level.
(ExpectationLinterInStyleCheckerTest.test_linter_duplicate_line): Ditto.
(ExpectationLinterInStyleCheckerTest.test_linter_duplicate_line_no_edit): Ditto.
(ExpectationLinterInStyleCheckerTest.test_linter_duplicate_line_edit_in_file): Ditto.
(ExpectationLinterInStyleCheckerTest.test_linter_duplicate_line_only_deletes): Ditto.
(ExpectationLinterInStyleCheckerTest.test_linter_added_file_with_error): Ditto.
(ExpectationLinterInStyleCheckerTest.test_linter_deleted_file): Ditto.
(ExpectationLinterInStyleCheckerTest.test_linter_deleted_file_no_edit): Ditto.

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

21 months agoSkip http/wpt/service-workers/fetchEvent.https.html in Debug
commit-queue@webkit.org [Wed, 10 Jan 2018 22:43:52 +0000 (22:43 +0000)]
Skip http/wpt/service-workers/fetchEvent.https.html in Debug
https://bugs.webkit.org/show_bug.cgi?id=181481

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-10

* TestExpectations:

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

21 months agoMarked http/tests/workers/service/service-worker-importScript.html as flaky on macOS...
jlewis3@apple.com [Wed, 10 Jan 2018 21:57:21 +0000 (21:57 +0000)]
Marked http/tests/workers/service/service-worker-importScript.html as flaky on macOS WK2.
https://bugs.webkit.org/show_bug.cgi?id=181097

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

21 months agoMarked imported/w3c/web-platform-tests/service-workers/service-worker/fetch-waits...
jlewis3@apple.com [Wed, 10 Jan 2018 21:53:44 +0000 (21:53 +0000)]
Marked imported/w3c/web-platform-tests/service-workers/service-worker/fetch-waits-for-activate.https.html as flaky on macOS and iOS WK2.
https://bugs.webkit.org/show_bug.cgi?id=181392

Unreviewed test gardening.

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

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

21 months agoAdd a JSCOnly MIPS buildbot
clopez@igalia.com [Wed, 10 Jan 2018 21:00:10 +0000 (21:00 +0000)]
Add a JSCOnly MIPS buildbot
https://bugs.webkit.org/show_bug.cgi?id=181487

Reviewed by Michael Catanzaro.

Add the new bot configs definitions for the master and update the unit tests.

* BuildSlaveSupport/build.webkit.org-config/config.json:
* BuildSlaveSupport/build.webkit.org-config/steps_unittest.py:

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

21 months agoWeb Inspector: Should not try to autocomplete subsections of a string
commit-queue@webkit.org [Wed, 10 Jan 2018 20:19:20 +0000 (20:19 +0000)]
Web Inspector: Should not try to autocomplete subsections of a string
https://bugs.webkit.org/show_bug.cgi?id=181461
<rdar://problem/36369421>

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

* UserInterface/Controllers/CodeMirrorCompletionController.js:
(WI.CodeMirrorCompletionController.prototype._completeAtCurrentPosition):
Disable autocompletion within strings.

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

21 months ago[Win] Rebaseline test after r225366.
pvollan@apple.com [Wed, 10 Jan 2018 20:07:09 +0000 (20:07 +0000)]
[Win] Rebaseline test after r225366.

Unreviewed test gardening.

* platform/win/svg/W3C-SVG-1.1/filters-comptran-01-b-expected.txt:

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

21 months agoREGRESSION (r226715): don't re-check number of simulators in child processes
jbedard@apple.com [Wed, 10 Jan 2018 19:58:25 +0000 (19:58 +0000)]
REGRESSION (r226715): don't re-check number of simulators in child processes
https://bugs.webkit.org/show_bug.cgi?id=181484
<rdar://problem/36407151>

Reviewed by Aakash Jain.

* Scripts/webkitpy/port/ios_simulator.py:
(IOSSimulatorPort.__init__): Skip the number of simulators check if simulators
are already initialized.

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

21 months agoUnreviewed, rolling out r226667 and r226673.
commit-queue@webkit.org [Wed, 10 Jan 2018 19:41:12 +0000 (19:41 +0000)]
Unreviewed, rolling out r226667 and r226673.
https://bugs.webkit.org/show_bug.cgi?id=181488

This caused a flaky crash. (Requested by mlewis13 on #webkit).

Reverted changesets:

"CodeBlocks should be in IsoSubspaces"
https://bugs.webkit.org/show_bug.cgi?id=180884
https://trac.webkit.org/changeset/226667

"REGRESSION (r226667): CodeBlocks should be in IsoSubspaces"
https://bugs.webkit.org/show_bug.cgi?id=180884
https://trac.webkit.org/changeset/226673

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

21 months agoFollow-up fix to r226715
jbedard@apple.com [Wed, 10 Jan 2018 19:03:33 +0000 (19:03 +0000)]
Follow-up fix to r226715
https://bugs.webkit.org/show_bug.cgi?id=180555
<rdar://problem/36131381>

Unreviewed infrastructure fix.

* Scripts/webkitpy/xcode/new_simulated_device.py:
(SimulatedDeviceManager._create_or_find_device_for_request): Use _delete instead
of delete.

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

21 months agoREGRESSION (r224301?): LayoutTest http/tests/workers/service/registration-task-queue...
cdumez@apple.com [Wed, 10 Jan 2018 18:20:30 +0000 (18:20 +0000)]
REGRESSION (r224301?): LayoutTest http/tests/workers/service/registration-task-queue-scheduling-1.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=179342
<rdar://problem/35478161>

Reviewed by Youenn Fablet.

* TestExpectations:
Unmark the test as flaky.

* http/tests/workers/service/registration-task-queue-scheduling-1-expected.txt:
* http/tests/workers/service/resources/registration-task-queue-scheduling-1-second-window.html:
* http/tests/workers/service/resources/registration-task-queue-scheduling-1.js:
Update test to register a scriptURL that actually fails. When registration succeeds, the test
logs lines indicating that registration succeeded unexpectedly. Also, when registration
succeeds, the registration of the top frame are no longer guaranteed to be resolved before
the ones of the subframe (because it involves things like network loads).

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

21 months agoREGRESSION(r225650): The scores of MotionMark tests Multiply and Leaves dropped by 8%
antti@apple.com [Wed, 10 Jan 2018 18:19:37 +0000 (18:19 +0000)]
REGRESSION(r225650): The scores of MotionMark tests Multiply and Leaves dropped by 8%
https://bugs.webkit.org/show_bug.cgi?id=181460
<rdar://problem/36379776>

Reviewed by Ryosuke Niwa.

* css/parser/CSSParser.cpp:
(WebCore::CSSParserContext::CSSParserContext):

Don't do the expensive security origin test if the sheet base URL and document URL are identical.
This is true for inline style and inline stylesheets.

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

21 months agoUnreviewed, skip http/tests/workers/service/other_resources folder.
cdumez@apple.com [Wed, 10 Jan 2018 17:51:45 +0000 (17:51 +0000)]
Unreviewed, skip http/tests/workers/service/other_resources folder.

It is a resources folder and does not contain tests.

* TestExpectations:

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

21 months ago[Win] Rebaseline tests after r225366.
pvollan@apple.com [Wed, 10 Jan 2018 17:29:39 +0000 (17:29 +0000)]
[Win] Rebaseline tests after r225366.

Unreviewed test gardening.

* platform/win/svg/custom/feComponentTransfer-Discrete-expected.txt:
* platform/win/svg/custom/feComponentTransfer-Gamma-expected.txt:
* platform/win/svg/custom/feComponentTransfer-Linear-expected.txt:
* platform/win/svg/custom/feComponentTransfer-Table-expected.txt:

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

21 months agoTry to fix windows build.
antti@apple.com [Wed, 10 Jan 2018 17:01:23 +0000 (17:01 +0000)]
Try to fix windows build.

* css/RuleFeature.cpp:
(WebCore::RuleFeatureSet::computeNextMatchElement):

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

21 months agoUnreviewed GTK gardening
philn@webkit.org [Wed, 10 Jan 2018 16:38:12 +0000 (16:38 +0000)]
Unreviewed GTK gardening

* platform/gtk/TestExpectations: Unflag now-passing test and skip
mediastream tests, useless without any webrtc backend.

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

21 months agoWebDriver: deserializeTimeouts() shouldn't reject double timeout values
zandobersek@gmail.com [Wed, 10 Jan 2018 16:16:22 +0000 (16:16 +0000)]
WebDriver: deserializeTimeouts() shouldn't reject double timeout values
https://bugs.webkit.org/show_bug.cgi?id=181473

Reviewed by Carlos Garcia Campos.

With these changes, the following tests are fixed:
    imported/selenium/py/test/selenium/webdriver/common/executing_async_javascript_tests.py::testShouldTimeoutIfScriptDoesNotInvokeCallbackWithLongTimeout
    imported/selenium/py/test/selenium/webdriver/common/executing_async_javascript_tests.py::testShouldDetectPageLoadsWhileWaitingOnAnAsyncScriptAndReturnAnError
    imported/selenium/py/test/selenium/webdriver/common/executing_async_javascript_tests.py::testShouldBeAbleToExecuteAsynchronousScripts
    imported/selenium/py/test/selenium/webdriver/common/implicit_waits_tests.py::testShouldImplicitlyWaitForASingleElement
    imported/selenium/py/test/selenium/webdriver/common/implicit_waits_tests.py::testShouldStillFailToFindAnElementWhenImplicitWaitsAreEnabled
    imported/selenium/py/test/selenium/webdriver/common/implicit_waits_tests.py::testShouldReturnAfterFirstAttemptToFindOneAfterDisablingImplicitWaits
    imported/selenium/py/test/selenium/webdriver/common/implicit_waits_tests.py::testShouldImplicitlyWaitUntilAtLeastOneElementIsFoundWhenSearchingForMany
    imported/selenium/py/test/selenium/webdriver/common/implicit_waits_tests.py::testShouldStillFailToFindAnElemenstWhenImplicitWaitsAreEnabled
    imported/selenium/py/test/selenium/webdriver/common/implicit_waits_tests.py::testShouldReturnAfterFirstAttemptToFindManyAfterDisablingImplicitWaits
    imported/selenium/py/test/selenium/webdriver/common/page_load_timeout_tests.py::testShouldTimeoutOnPageLoadTakingTooLong
    imported/selenium/py/test/selenium/webdriver/common/page_load_timeout_tests.py::testShouldTimeoutOnPageLoadTakingTooLong
    imported/selenium/py/test/selenium/webdriver/common/webdriverwait_tests.py::testShouldWaitOnlyAsLongAsTimeoutSpecifiedWhenImplicitWaitsAreSet

The following two tests regress, and will be looked into separately:
    imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_merge_invalid
    imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_merge_invalid

* WebDriverService.cpp:
(WebDriver::integerValue): Helper function that retrieves an integer value
from a given JSON::Value object, if possible.
(WebDriver::deserializeTimeouts): Timeout JSON value has to be converted to
an integer, which is allowed if the value is of either Integer or Double type.
Helper integerValue() function retrieves the integer value, in addition to
ensuring that possible double value that we convert to an integer is already
in integer form to begin with.

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

21 months agowebkitpy: Refactor simulator code (Part 2)
jbedard@apple.com [Wed, 10 Jan 2018 16:05:18 +0000 (16:05 +0000)]
webkitpy: Refactor simulator code (Part 2)
https://bugs.webkit.org/show_bug.cgi?id=180555
<rdar://problem/36131381>

Reviewed by Aakash Jain.

The patch leverages the SimulatedDeviceManager when running layout tests.
This patch is primarily code removal, since much of the IOSSimulatorPort
was dedicated to managing simulators. The removed code is either now owned by the
SimulatedDeviceManager (and committed in Part 1) or supported a technique to
boot multiple simulators which was made obsolete in Xcode 9.

* Scripts/webkitpy/layout_tests/controllers/manager.py:
(Manager._custom_device_for_test.in): Device names now have spaces in them,
strip those spaces.
* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(parse_args): Remove '--runtime' flag, this is achieved with the --version flag.
* Scripts/webkitpy/port/ios.py:
(IOSPort.__init__): The _current_device idiom is no longer required since the
SimulatedDeviceManager keeps track of any previously booted devices.
(IOSPort.target_host): Even when only a single device is used, it will be accessed
through the array of managed devices.
(IOSPort.using_multiple_devices): Deleted.
* Scripts/webkitpy/port/ios_device.py:
(IOSDevicePort.using_multiple_devices): Deleted.
* Scripts/webkitpy/port/ios_simulator.py:
(IOSSimulatorPort): Remove constants required to manage simulators, change device
class strings so they can be parsed by the DeviceType class.
(IOSSimulatorPort.__init__): Determine the number of processes to use by checking
the number of simulators currently booted, the number of child processes specified
and the maximum number of simulators supported by this system.
(IOSSimulatorPort._device_for_worker_number_map):Return the array of initialized
devices owned by the SimulatedDeviceManager.
(IOSSimulatorPort.ios_version): Remove support for the --runtime option.
(IOSSimulatorPort.default_child_processes): Use the SimulatedDeviceManager to check
the maximum number of supported simulators on this system.
(IOSSimulatorPort._create_devices): Construct a list of device requests with a
request for each child process and send this list to the SimulatedDeviceManager to
initialize the devices.
(IOSSimulatorPort.clean_up_test_run):
(IOSSimulatorPort.check_sys_deps): Check that there are simulators running the
specified version of iOS.
(IOSSimulatorPort.reset_preferences):
(IOSSimulatorPort.simulator_runtime): Deleted.
(IOSSimulatorPort.simulator_device_type): Deleted.
(IOSSimulatorPort._teardown_managed_simulators): Deleted.
(IOSSimulatorPort.use_multiple_simulator_apps): Deleted.
(IOSSimulatorPort._create_simulators): Deleted.
(IOSSimulatorPort._quit_ios_simulator): Deleted.
(IOSSimulatorPort._using_dedicated_simulators): Deleted.
(IOSSimulatorPort.using_multiple_devices): Deleted.
(IOSSimulatorPort._create_device): Deleted.
(IOSSimulatorPort.get_simulator_path): Deleted.
(IOSSimulatorPort._createSimulatorApps): Deleted.
(IOSSimulatorPort._createSimulatorApp): Deleted.
* Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
(TestRebaseline.test_rebaseline): Filter out commands run when determining the
maximum number of simulators run on this system.
(TestRebaselineExpectations.test_rebaseline_expectations): Ditto.
* Scripts/webkitpy/xcode/new_simulated_device.py:
(SimulatedDeviceManager._does_fulfill_request): Fixed log statement.

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

21 months ago[RenderTreeBuilder] Move RenderRuby's moveChildren logic to RenderTreeBuilder
zalan@apple.com [Wed, 10 Jan 2018 15:54:31 +0000 (15:54 +0000)]
[RenderTreeBuilder] Move RenderRuby's moveChildren logic to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=181470
<rdar://problem/36397683>

Reviewed by Antti Koivisto.

This is about moving code, no cleanup and/or normalization (unfortunately it also means
some temporary changes).

No change in functionality.

* rendering/RenderBlockFlow.h:
* rendering/RenderRubyBase.cpp:
(WebCore::RenderRubyBase::moveChildren): Deleted.
(WebCore::RenderRubyBase::mergeChildrenWithBase): Deleted.
(WebCore::RenderRubyBase::moveInlineChildren): Deleted.
(WebCore::RenderRubyBase::moveBlockChildren): Deleted.
* rendering/RenderRubyBase.h:
* rendering/RenderRubyRun.cpp:
(WebCore::RenderRubyRun::takeChild):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::moveRubyChildren):
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderRuby.cpp:
(WebCore::RenderTreeBuilder::Ruby::moveInlineChildren):
(WebCore::RenderTreeBuilder::Ruby::moveBlockChildren):
(WebCore::RenderTreeBuilder::Ruby::moveChildren):
(WebCore::RenderTreeBuilder::Ruby::moveChildrenInternal):
(WebCore::RenderTreeBuilder::Ruby::insertChild):
* rendering/updating/RenderTreeBuilderRuby.h:

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

21 months ago[GStreamer] fix critical GObject warning
philn@webkit.org [Wed, 10 Jan 2018 15:29:00 +0000 (15:29 +0000)]
[GStreamer] fix critical GObject warning

Rubber-stamped by Carlos Garcia Campos.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::handleMessage): No need to
resort to complicated things to get the element name...

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

21 months ago[GStreamer] REGRESSION(r226629): broke media/video-interruption-with-resume-allowing...
philn@webkit.org [Wed, 10 Jan 2018 15:26:07 +0000 (15:26 +0000)]
[GStreamer] REGRESSION(r226629): broke media/video-interruption-with-resume-allowing-play.html
https://bugs.webkit.org/show_bug.cgi?id=181471
<rdar://problem/36402323>

Reviewed by Carlos Garcia Campos.

Source/WebCore:

This patch mainly reduces the amount of playback state changes
emitted by the GStreamer player to its client. Emitting those
notifications too often has bad side effects.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::paused const): Add debug messages.
(WebCore::MediaPlayerPrivateGStreamer::handleMessage): This debug message appears too much. Demote.
(WebCore::MediaPlayerPrivateGStreamer::maxTimeLoaded const): Ditto.
(WebCore::MediaPlayerPrivateGStreamer::didLoadingProgress const): Ditto.
(WebCore::MediaPlayerPrivateGStreamer::updateStates): Try to emit
playback state change notification only when going to PLAYING.
(WebCore::MediaPlayerPrivateGStreamer::loadingFailed): Add warning message.

LayoutTests:

* platform/gtk/TestExpectations: These 2 tests shall pass now.

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

21 months agoWebDriver: run-webdriver-tests doesn't handle test names with a '/' correctly
carlosgc@webkit.org [Wed, 10 Jan 2018 14:44:53 +0000 (14:44 +0000)]
WebDriver: run-webdriver-tests doesn't handle test names with a '/' correctly
https://bugs.webkit.org/show_bug.cgi?id=181474

Reviewed by Carlos Alberto Lopez Perez.

We use os.path.basename() to get the subtest name. If the test name contains a slash we get part of the subtest
name as the name.

* Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py:
(WebDriverTestRunnerW3C._subtest_name): Helper function to get the subtest name.
(WebDriverTestRunnerW3C.run): Use _subtest_name() instead of os.path.basename().

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

21 months ago[GTK] Enable css2.1/20110323/c541-word-sp-000.htm.
Ms2ger@igalia.com [Wed, 10 Jan 2018 12:29:21 +0000 (12:29 +0000)]
[GTK] Enable css2.1/20110323/c541-word-sp-000.htm.
https://bugs.webkit.org/show_bug.cgi?id=94009

Unreviewed test gardening.

It was fixed in r226404.

* platform/gtk/TestExpectations:

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

21 months agoUnreviewed, updating expectations for media test timing out on GTK
philn@webkit.org [Wed, 10 Jan 2018 12:13:17 +0000 (12:13 +0000)]
Unreviewed, updating expectations for media test timing out on GTK

* platform/gtk/TestExpectations:

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

21 months agoUnreviewed. Update W3C WebDriver imported tests.
carlosgc@webkit.org [Wed, 10 Jan 2018 11:25:51 +0000 (11:25 +0000)]
Unreviewed. Update W3C WebDriver imported tests.

* imported/w3c/importer.json:
* imported/w3c/tools/wptrunner/wptrunner/browsers/firefox.py:
* imported/w3c/tools/wptrunner/wptrunner/browsers/servo.py:
* imported/w3c/tools/wptrunner/wptrunner/environment.py:
* imported/w3c/tools/wptrunner/wptrunner/executors/base.py:
* imported/w3c/tools/wptrunner/wptrunner/executors/executormarionette.py:
* imported/w3c/tools/wptrunner/wptrunner/executors/executorservo.py:
* imported/w3c/tools/wptrunner/wptrunner/executors/pytestrunner/runner.py:
* imported/w3c/tools/wptrunner/wptrunner/testrunner.py:
* imported/w3c/tools/wptrunner/wptrunner/update/update.py:
* imported/w3c/tools/wptrunner/wptrunner/webdriver_server.py:
* imported/w3c/tools/wptrunner/wptrunner/wptlogging.py:
* imported/w3c/tools/wptrunner/wptrunner/wptrunner.py:
* imported/w3c/webdriver/OWNERS:
* imported/w3c/webdriver/interface/interface.html: Removed.
* imported/w3c/webdriver/tests/actions/modifier_click.py:
* imported/w3c/webdriver/tests/actions/mouse.py:
* imported/w3c/webdriver/tests/actions/mouse_dblclick.py: Added.
* imported/w3c/webdriver/tests/actions/sequence.py:
* imported/w3c/webdriver/tests/actions/support/mouse.py: Added.
* imported/w3c/webdriver/tests/cookies/add_cookie.py:
* imported/w3c/webdriver/tests/cookies/get_named_cookie.py:
* imported/w3c/webdriver/tests/element_retrieval/__init__.py: Copied from WebDriverTests/imported/w3c/webdriver/tests/retrieval/__init__.py.
* imported/w3c/webdriver/tests/element_retrieval/find_element.py: Renamed from WebDriverTests/imported/w3c/webdriver/tests/retrieval/find_element.py.
* imported/w3c/webdriver/tests/element_retrieval/find_element_from_element.py: Renamed from WebDriverTests/imported/w3c/webdriver/tests/retrieval/find_element_from_element.py.
* imported/w3c/webdriver/tests/element_retrieval/find_elements.py: Renamed from WebDriverTests/imported/w3c/webdriver/tests/retrieval/find_elements.py.
* imported/w3c/webdriver/tests/element_retrieval/find_elements_from_element.py: Renamed from WebDriverTests/imported/w3c/webdriver/tests/retrieval/find_element_from_elements.py.
* imported/w3c/webdriver/tests/element_send_keys/__init__.py: Renamed from WebDriverTests/imported/w3c/webdriver/tests/retrieval/__init__.py.
* imported/w3c/webdriver/tests/element_send_keys/interactability.py: Added.
* imported/w3c/webdriver/tests/element_send_keys/scroll_into_view.py: Added.
* imported/w3c/webdriver/tests/execute_script/cyclic.py: Added.
* imported/w3c/webdriver/tests/get_window_rect.py:
* imported/w3c/webdriver/tests/interface.html:
* imported/w3c/webdriver/tests/navigation/current_url.py:
* imported/w3c/webdriver/tests/support/asserts.py:
* imported/w3c/webdriver/tests/support/fixtures.py:

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

21 months agoAdd Service Worker CSP persistency
commit-queue@webkit.org [Wed, 10 Jan 2018 10:16:40 +0000 (10:16 +0000)]
Add Service Worker CSP persistency
https://bugs.webkit.org/show_bug.cgi?id=181434

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-10
Reviewed by Alex Christensen.

Covered by manual testing.
Future work on service worker test infrastructure should allow automating such tests.

Add support for service worker CSP data persistency.
Add a version parameter to increment each time the schema is changing.
This allows the same store to be used by multiple WebKits.

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

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

21 months agoUnreviewed, updating expectations for media test timing out on GTK
philn@webkit.org [Wed, 10 Jan 2018 10:15:42 +0000 (10:15 +0000)]
Unreviewed, updating expectations for media test timing out on GTK

* platform/gtk/TestExpectations:

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

21 months agoInvalidate current element style on class change accurately
antti@apple.com [Wed, 10 Jan 2018 09:01:53 +0000 (09:01 +0000)]
Invalidate current element style on class change accurately
https://bugs.webkit.org/show_bug.cgi?id=181210

Reviewed by Zalan Bujtas.

Source/WebCore:

* css/DocumentRuleSets.cpp:
(WebCore::DocumentRuleSets::collectFeatures const):
(WebCore::DocumentRuleSets::subjectClassRules const):

    New rule set containing class rules affecting the subject element.

(WebCore::DocumentRuleSets::ancestorClassRules const):
* css/DocumentRuleSets.h:
* css/RuleFeature.cpp:
(WebCore::RuleFeatureSet::recursivelyCollectFeaturesFromSelector):

    Classify selector components into various buckets based on the elements they match relative to
    the subject element. There are more categories than this patch strictly needs, for future use.

(WebCore::RuleFeatureSet::collectFeatures):
(WebCore::RuleFeatureSet::add):
(WebCore::RuleFeatureSet::clear):
(WebCore::RuleFeatureSet::shrinkToFit):
* css/RuleFeature.h:
* css/StyleResolver.h:
(WebCore::StyleResolver::hasSelectorForClass const): Deleted.
* style/ClassChangeInvalidation.cpp:
(WebCore::Style::elementNeedsInvalidation):
(WebCore::Style::ClassChangeInvalidation::computeInvalidation):

    Don't invalidate current element unconditionally on class change. Instead find the subject rulesets
    that might affect it use them to perform invalidation.

(WebCore::Style::ClassChangeInvalidation::invalidateStyleWithRuleSets):
(WebCore::Style::ClassChangeInvalidation::invalidateStyle): Deleted.
(WebCore::Style::ClassChangeInvalidation::invalidateDescendantStyle): Deleted.
* style/ClassChangeInvalidation.h:
(WebCore::Style::ClassChangeInvalidation::ClassChangeInvalidation):
(WebCore::Style::ClassChangeInvalidation::~ClassChangeInvalidation):
* style/StyleSharingResolver.cpp:
(WebCore::Style::SharingResolver::classNamesAffectedByRules const):

LayoutTests:

* fast/css/set-inline-style-recalc-expected.txt:
* fast/css/set-inline-style-recalc.html:

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

21 months ago[Web Animations] Expose the id property on Animation
graouts@webkit.org [Wed, 10 Jan 2018 06:15:52 +0000 (06:15 +0000)]
[Web Animations] Expose the id property on Animation
https://bugs.webkit.org/show_bug.cgi?id=181450
<rdar://problem/36383600>

Reviewed by Dean Jackson.

Source/WebCore:

Expose the "id" property on Animation and handle the "id" property on the optional KeyframeAnimationOptions object
passed to Element.animate(). All of the WPT tests related to this property are now passing.

* animation/WebAnimation.h:
* animation/WebAnimation.idl:
* dom/Element.cpp:
(WebCore::Element::animate):

LayoutTests:

Mark all tests related to the "id" property as passing.

* http/wpt/web-animations/interfaces/Animatable/animate-expected.txt:
* http/wpt/web-animations/interfaces/Animation/id-expected.txt:
* http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:

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

21 months agoMerge the latest version of Speedometer 2.0 to browserbench.org against at r226694.
rniwa@webkit.org [Wed, 10 Jan 2018 05:02:36 +0000 (05:02 +0000)]
Merge the latest version of Speedometer 2.0 to browserbench.org against at r226694.

Rubber-stamped by Keith Miller.

* Speedometer2.0: Replaced with PerformanceTests/Speedometer.

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

21 months agoSpeedometer 2.0: Update the About page.
rniwa@webkit.org [Wed, 10 Jan 2018 04:51:09 +0000 (04:51 +0000)]
Speedometer 2.0: Update the About page.
https://bugs.webkit.org/show_bug.cgi?id=175918

Reviewed by Keith Miller.

Updated the about page for Speedometer 2.0.

* Speedometer/index.html:

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

21 months agoMake service workers behave correctly with regards to Page Cache
cdumez@apple.com [Wed, 10 Jan 2018 04:08:33 +0000 (04:08 +0000)]
Make service workers behave correctly with regards to Page Cache
https://bugs.webkit.org/show_bug.cgi?id=181446
<rdar://problem/36164291>

Reviewed by Youenn Fablet.

Source/WebCore:

Make service workers behave correctly with regards to Page Cache:
1. If a document has an active service worker, do not let it go into PageCache
2. When a document goes into page cache, unregister it from the list of service worker clients
3. When a document is restored from page cache, add it nack to the list of service worker clients

Tests: http/tests/workers/service/client-added-to-clients-when-restored-from-page-cache.html
       http/tests/workers/service/client-removed-from-clients-while-in-page-cache.html
       http/tests/workers/service/no-page-cache-when-controlled.html
       http/tests/workers/service/other_resources/test.html

* dom/Document.cpp:
(WebCore::Document::suspend):
(WebCore::Document::resume):
* history/PageCache.cpp:
(WebCore::canCacheFrame):
* page/DiagnosticLoggingKeys.cpp:
(WebCore::DiagnosticLoggingKeys::serviceWorkerKey):
* page/DiagnosticLoggingKeys.h:

LayoutTests:

Add layout test coverage.

* http/tests/workers/service/client-added-to-clients-when-restored-from-page-cache-expected.txt: Added.
* http/tests/workers/service/client-added-to-clients-when-restored-from-page-cache.html: Added.
* http/tests/workers/service/client-removed-from-clients-while-in-page-cache-expected.txt: Added.
* http/tests/workers/service/client-removed-from-clients-while-in-page-cache.html: Added.
* http/tests/workers/service/no-page-cache-when-controlled-expected.txt: Added.
* http/tests/workers/service/no-page-cache-when-controlled.html: Added.
* http/tests/workers/service/other_resources/test.html: Added.
* http/tests/workers/service/resources/getClientCount-worker.js: Added.
(event.then):

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

21 months agoWe should not return undefined for most properties of a detached Window
cdumez@apple.com [Wed, 10 Jan 2018 03:31:28 +0000 (03:31 +0000)]
We should not return undefined for most properties of a detached Window
https://bugs.webkit.org/show_bug.cgi?id=181416
<rdar://problem/36162489>

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline several WPT tests now that more checks are passing.

* web-platform-tests/custom-elements/custom-element-registry/per-global-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-append-to-child-document-expected.txt:
* web-platform-tests/service-workers/service-worker/detached-context.https-expected.txt:

Source/WebCore:

We should not return undefined for most properties on a detached Window. WebKit previously only exposed "closed"
and "close" properties on detached / frameless windows. However, this does not match the HTML specification [1]
or the behavior of Firefox and Chrome.

Note that Chrome does not seem to fully follow the HTML specification either, it seems to treat detached windows
the same way as cross-origin ones. As a result, it only exposed properties that are visible cross-origin when
a window is detached / frameless.

[1] https://html.spec.whatwg.org/#windowproxy-get

No new tests, updated existingt tests.

* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess):
(WebCore::JSDOMWindow::getOwnPropertySlot):
(WebCore::JSDOMWindow::getOwnPropertySlotByIndex):

LayoutTests:

Update existing tests to reflect behavior change.

* fast/dom/Window/orphaned-frame-access-expected.txt:
* fast/dom/Window/orphaned-frame-access.html:
* fast/frames/detached-frame-property-expected.txt:
* fast/frames/detached-frame-property.html:

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

21 months agoFurther refinement to list item and counter code after "list-item" counter fix
darin@apple.com [Wed, 10 Jan 2018 03:24:28 +0000 (03:24 +0000)]
Further refinement to list item and counter code after "list-item" counter fix
https://bugs.webkit.org/show_bug.cgi?id=181426

Reviewed by Zalan Bujtas.

Source/WebCore:

* css/StyleBuilderCustom.h:
(WebCore::StyleBuilderCustom::applyInheritCounter): Use auto.
(WebCore::StyleBuilderCustom::applyValueCounter): Use auto, removed unneeded
null checks for things that can never be null, moved the saturated addition
here and got rid of the addIncrementValue function from CounterDirectives.
Use the saturatedAddition function from SaturatedArithmetic.h instead of the
much less efficient one that did the same thing, CounterDirectives::addClamped.

* rendering/RenderCounter.cpp:
(WebCore::listItemCounterDirectives): Use aggregate syntax for the return
statements.
(WebCore::planCounter): Changed to use a struct return value instead of two
out arguments. Use the saturatedAddition function from SaturatedArithmetic.h
instead of the much less efficient one that did the same thing,
CounterDirectives::addClamped.
(WebCore::findPlaceForCounter): Changed to use a struct return value instead
of two out arguments.
(WebCore::makeCounterNode): Updated for the above changes. Changed code to
use add instead of both get and set. Updated to keep the counter maps inside
the values of the "map of maps" instead of using a unique_ptr and allocating
each one on the heap.
(WebCore::destroyCounterNodeWithoutMapRemoval): Changed argument to a reference
instead of a pointer. Updated for changes to the map. Use RefPtr more
consistently.
(WebCore::RenderCounter::destroyCounterNodes): Use iterators less.
(WebCore::RenderCounter::destroyCounterNode): Ditto.
(WebCore::RenderCounter::rendererRemovedFromTree): Add a check of
hasCounterNodeMap here before calling destroyCounterNodes, so that function
can assume the flag is true (both other callers already check it).
(WebCore::updateCounters): Use auto and update for changes above.
(WebCore::RenderCounter::rendererStyleChanged): Use modern for loops instead
of iterators.
(showCounterRendererTree): Use auto and udpate for changes above.

* rendering/RenderListItem.cpp:
(WebCore::enclosingList): Stop referring to elements as "nodes". Changed
the local variable names for clarity.
(WebCore::nextListItemHelper): Renamed from nextListItem since it's not
intended to be called directly and we want to use a function pointer to
nextListItem. Fixed the algorithm to correctly handle ad hoc "lists" that
are not actually HTML list elements, using the definition in the enclosingList
function as the previousListItem function already did.
(WebCore::nextListItem): Updated for name changes.
(WebCore::firstListItem): Renamed from nextListItem for clarity.
(WebCore::previousListItem): Rewrote loop so it doesn't have to do things
so strangely when we find another list.
(WebCore::RenderListItem::updateItemValuesForOrderedList): Use auto and
update local variable names.
(WebCore::RenderListItem::itemCountForOrderedList): Ditto.
(WebCore::RenderListItem::updateValueNow const): Rewrote to use an iterative
algorithm instead of a recursive one. Fixes the FIXME here.
(WebCore::RenderListItem::updateValue): Use m_valueWasSetExplicitly
instead of m_explicitValue.
(WebCore::RenderListItem::explicitValueChanged): Use auto and simplified
the loop a bit.
(WebCore::RenderListItem::setExplicitValue): Set m_valueWasSetExplicitly
instead of m_explicitValue.
(WebCore::previousOrNextItem): Deleted.
(WebCore::RenderListItem::updateListMarkerNumbers): Streamlined the loop
a bit and used a fucntion pointer to handle the two different directions.
(WebCore::RenderListItem::isInReversedOrderedList const): Simplified by
getting rid of an unneeded use of pointers and local variables.

* rendering/RenderListItem.h: Use a boolean, m_valueWasSetExplicitly,
instead of a separate optional m_explicitValue.

* rendering/style/CounterDirectives.h: Since all the code in this file was
rewritten, removed old copyrights. Deleted the addIncrementValue function,
since it is clear enough in the one call site in the style builder.
Deleted the addClamped function because it was just a much slower
version of the saturatedAddition function. Made == and != into constexpr
functions since they are simple enough to be.

* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::getCounterDirectives const): Deleted. Caller can
handle this just fine without a helper function.
* rendering/style/RenderStyle.h: Ditto.

LayoutTests:

* fast/css/counters/counter-list-item.html: Removed an extra newline at the end of
the file.

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

21 months agoREGRESSION(r201855): Web Inspector: Should see "length" autocompletion suggestion...
commit-queue@webkit.org [Wed, 10 Jan 2018 03:17:27 +0000 (03:17 +0000)]
REGRESSION(r201855): Web Inspector: Should see "length" autocompletion suggestion on a string literal
https://bugs.webkit.org/show_bug.cgi?id=181462
<rdar://problem/36390699>

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

* UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
(WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.inspectedPage_evalResult_getCompletions):
This is code that runs on the inspected target, which may have an old version of
WebKit/JavaScriptCore, so don't use new syntax like this.

(WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded):
We intended to return the result by as a JSON value instead of a RemoteObject.

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

21 months agoREGRESSION (r226667): CodeBlocks should be in IsoSubspaces
ddkilzer@apple.com [Wed, 10 Jan 2018 03:04:35 +0000 (03:04 +0000)]
REGRESSION (r226667): CodeBlocks should be in IsoSubspaces
<https://bugs.webkit.org/show_bug.cgi?id=180884>

Fixes the following build error:

    heap/Heap.cpp:2708:10: error: lambda capture 'this' is not used [-Werror,-Wunused-lambda-capture]

* heap/Heap.cpp:
(JSC::Heap::addCoreConstraints): Remove 'this' from lambda to
fix the build.

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

21 months agoand32 with an Address source on ARM64 did not invalidate dataTempRegister
keith_miller@apple.com [Wed, 10 Jan 2018 03:00:11 +0000 (03:00 +0000)]
and32 with an Address source on ARM64 did not invalidate dataTempRegister
https://bugs.webkit.org/show_bug.cgi?id=181467

Reviewed by Michael Saboff.

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

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

21 months agoWeb Inspector: Layers sidebar shows popover on selection even when collapsed
ross.kirsling@sony.com [Wed, 10 Jan 2018 02:43:36 +0000 (02:43 +0000)]
Web Inspector: Layers sidebar shows popover on selection even when collapsed
https://bugs.webkit.org/show_bug.cgi?id=181465

Reviewed by Matt Baker.

* UserInterface/Views/LayerDetailsSidebarPanel.js:
(WI.LayerDetailsSidebarPanel.prototype.selectNodeByLayerId):
Have sidebar show itself if necessary before displaying popover.

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

21 months ago[Xcode] Use the Apple Internal SDK if available when building ImageDiff
aestes@apple.com [Wed, 10 Jan 2018 02:37:05 +0000 (02:37 +0000)]
[Xcode] Use the Apple Internal SDK if available when building ImageDiff
https://bugs.webkit.org/show_bug.cgi?id=181459

Reviewed by Dan Bernstein.

* ImageDiff/cg/Configurations/Base.xcconfig:

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

21 months agoStorage Access API: Turn feature on by default in WebPreferences.yaml
wilander@apple.com [Wed, 10 Jan 2018 01:34:56 +0000 (01:34 +0000)]
Storage Access API: Turn feature on by default in WebPreferences.yaml
https://bugs.webkit.org/show_bug.cgi?id=181458

Reviewed by Brent Fulgham.

* Shared/WebPreferences.yaml:

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

21 months agofont-display:fallback can cause a visual flash (which is supposed to be impossible)
mmaxfield@apple.com [Wed, 10 Jan 2018 00:44:49 +0000 (00:44 +0000)]
font-display:fallback can cause a visual flash (which is supposed to be impossible)
https://bugs.webkit.org/show_bug.cgi?id=181374

Reviewed by Simon Fraser.

Source/WebCore:

A FontCascade represents an entire font-family fallback list, but sometimes we need to pull out a single
representative font from the list to calculate things like line height. Previously, if the first item in
the font-family list was in the middle of being downloaded, this representative font was hardcoded to be
Times. However, when actually laying out and drawing the glyphs, we have logic to skip the interstitial
Times if there are any installed fonts present in the font-family list (so you wouldn't ever actually
see Times). This means that line height (among other things) was being calculated as if Times was used,
but in reality, some other font from the font-family list was being used.

Alone, this isn't a huge problem, but font-display:fallback makes a font transition between "timed out"
and "failed," and when the font hits the failed state, the representative font skips over the cancelled
item and hits the next item in the fallback list. This means that line heights will change, which causes
a visual flash, even when font-display:fallback is specified.

The solution is simply to educate the logic which identifies this representative font so that it
understands what to do for currently-loading fonts.

Tests: fast/text/font-display/swap-flash.html

* platform/graphics/FontCascadeFonts.h:
(WebCore::FontCascadeFonts::primaryFont):
* rendering/line/BreakingContext.h:
(WebCore::textWidth):

Tools:

The test requires Palatino.

* DumpRenderTree/mac/DumpRenderTree.mm:
(allowedFontFamilySet):
* WebKitTestRunner/mac/TestControllerMac.mm:
(WTR::allowedFontFamilySet):

LayoutTests:

Move font-display tests into their common subfolder.

* fast/text/font-display/block-finish-expected.html: Renamed from LayoutTests/fast/text/loading-block-finish-expected.html.
* fast/text/font-display/block-finish.html: Renamed from LayoutTests/fast/text/loading-block-finish.html.
* fast/text/font-display/block-nofinish-expected.html: Renamed from LayoutTests/fast/text/loading-block-nofinish-expected.html.
* fast/text/font-display/block-nofinish.html: Renamed from LayoutTests/fast/text/loading-block-nofinish.html.
* fast/text/font-display/failure-finish-expected.html: Renamed from LayoutTests/fast/text/loading-failure-finish-expected.html.
* fast/text/font-display/failure-finish.html: Renamed from LayoutTests/fast/text/loading-failure-finish.html.
* fast/text/font-display/failure-nofinish-expected.html: Renamed from LayoutTests/fast/text/loading-failure-nofinish-expected.html.
* fast/text/font-display/failure-nofinish.html: Renamed from LayoutTests/fast/text/loading-failure-nofinish.html.
* fast/text/font-display/swap-finish-expected.html: Renamed from LayoutTests/fast/text/loading-swap-finish-expected.html.
* fast/text/font-display/swap-finish.html: Renamed from LayoutTests/fast/text/loading-swap-finish.html.
* fast/text/font-display/swap-nofinish-expected.html: Renamed from LayoutTests/fast/text/loading-swap-nofinish-expected.html.
* fast/text/font-display/swap-nofinish.html: Renamed from LayoutTests/fast/text/loading-swap-nofinish.html.
* fast/text/font-display/swap-flash-expected.html: Added.
* fast/text/font-display/swap-flash.html: Added.
* platform/win/TestExpectations:

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

21 months agoCodeBlocks should be in IsoSubspaces
fpizlo@apple.com [Wed, 10 Jan 2018 00:30:38 +0000 (00:30 +0000)]
CodeBlocks should be in IsoSubspaces
https://bugs.webkit.org/show_bug.cgi?id=180884

Reviewed by Saam Barati.
Source/JavaScriptCore:

This moves CodeBlocks into IsoSubspaces. Doing so means that we no longer need to have the
special CodeBlockSet HashSets of new and old CodeBlocks. We also no longer use
WeakReferenceHarvester or UnconditionalFinalizer. Instead:

- Code block sweeping is now just eager sweeping. This means that it automatically takes
  advantage of our unswept set, which roughly corresponds to what CodeBlockSet used to use
  its eden set for.

- Those idea of Executable "weakly visiting" the CodeBlock is replaced by Executable
  marking a ExecutableToCodeBlockEdge object. That object being marked corresponds to what
  we used to call CodeBlock "having been weakly visited". This means that CodeBlockSet no
  longer has to clear the set of weakly visited code blocks. This also means that
  determining CodeBlock liveness, propagating CodeBlock transitions, and jettisoning
  CodeBlocks during GC are now the edge's job. The edge is also in an IsoSubspace and it
  has IsoCellSets to tell us which edges have output constraints (what we used to call
  CodeBlock's weak reference harvester) and which have unconditional finalizers.

- CodeBlock now uses an IsoCellSet to tell if it has an unconditional finalizer.

- CodeBlockSet still exists!  It has one unified HashSet of CodeBlocks that we use to
  handle requests from the sampler, debugger, and other facilities. They may want to ask
  if some pointer corresponds to a CodeBlock during stages of execution during which the
  GC is unable to answer isLive() queries. The trickiest is the sampling profiler thread.
  There is no way that the GC's isLive could tell us of a CodeBlock that had already been
  allocated has now been full constructed.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::finishCreationCommon):
(JSC::CodeBlock::~CodeBlock):
(JSC::CodeBlock::visitChildren):
(JSC::CodeBlock::propagateTransitions):
(JSC::CodeBlock::determineLiveness):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::stronglyVisitStrongReferences):
(JSC::CodeBlock::hasInstalledVMTrapBreakpoints const):
(JSC::CodeBlock::installVMTrapBreakpoints):
(JSC::CodeBlock::dumpMathICStats):
(JSC::CodeBlock::visitWeakly): Deleted.
(JSC::CodeBlock::WeakReferenceHarvester::visitWeakReferences): Deleted.
(JSC::CodeBlock::UnconditionalFinalizer::finalizeUnconditionally): Deleted.
* bytecode/CodeBlock.h:
(JSC::CodeBlock::subspaceFor):
(JSC::CodeBlock::ownerEdge const):
(JSC::CodeBlock::clearVisitWeaklyHasBeenCalled): Deleted.
* bytecode/EvalCodeBlock.h:
(JSC::EvalCodeBlock::create): Deleted.
(JSC::EvalCodeBlock::createStructure): Deleted.
(JSC::EvalCodeBlock::variable): Deleted.
(JSC::EvalCodeBlock::numVariables): Deleted.
(JSC::EvalCodeBlock::functionHoistingCandidate): Deleted.
(JSC::EvalCodeBlock::numFunctionHoistingCandidates): Deleted.
(JSC::EvalCodeBlock::EvalCodeBlock): Deleted.
(JSC::EvalCodeBlock::unlinkedEvalCodeBlock const): Deleted.
* bytecode/ExecutableToCodeBlockEdge.cpp: Added.
(JSC::ExecutableToCodeBlockEdge::createStructure):
(JSC::ExecutableToCodeBlockEdge::create):
(JSC::ExecutableToCodeBlockEdge::visitChildren):
(JSC::ExecutableToCodeBlockEdge::visitOutputConstraints):
(JSC::ExecutableToCodeBlockEdge::finalizeUnconditionally):
(JSC::ExecutableToCodeBlockEdge::activate):
(JSC::ExecutableToCodeBlockEdge::deactivate):
(JSC::ExecutableToCodeBlockEdge::deactivateAndUnwrap):
(JSC::ExecutableToCodeBlockEdge::wrap):
(JSC::ExecutableToCodeBlockEdge::wrapAndActivate):
(JSC::ExecutableToCodeBlockEdge::ExecutableToCodeBlockEdge):
(JSC::ExecutableToCodeBlockEdge::runConstraint):
* bytecode/ExecutableToCodeBlockEdge.h: Added.
(JSC::ExecutableToCodeBlockEdge::subspaceFor):
(JSC::ExecutableToCodeBlockEdge::codeBlock const):
(JSC::ExecutableToCodeBlockEdge::unwrap):
* bytecode/FunctionCodeBlock.h:
(JSC::FunctionCodeBlock::subspaceFor):
(JSC::FunctionCodeBlock::createStructure):
* bytecode/ModuleProgramCodeBlock.h:
(JSC::ModuleProgramCodeBlock::create): Deleted.
(JSC::ModuleProgramCodeBlock::createStructure): Deleted.
(JSC::ModuleProgramCodeBlock::ModuleProgramCodeBlock): Deleted.
* bytecode/ProgramCodeBlock.h:
(JSC::ProgramCodeBlock::create): Deleted.
(JSC::ProgramCodeBlock::createStructure): Deleted.
(JSC::ProgramCodeBlock::ProgramCodeBlock): Deleted.
* debugger/Debugger.cpp:
(JSC::Debugger::SetSteppingModeFunctor::operator() const):
(JSC::Debugger::ToggleBreakpointFunctor::operator() const):
(JSC::Debugger::ClearCodeBlockDebuggerRequestsFunctor::operator() const):
(JSC::Debugger::ClearDebuggerRequestsFunctor::operator() const):
* heap/CodeBlockSet.cpp:
(JSC::CodeBlockSet::contains):
(JSC::CodeBlockSet::dump const):
(JSC::CodeBlockSet::add):
(JSC::CodeBlockSet::remove):
(JSC::CodeBlockSet::promoteYoungCodeBlocks): Deleted.
(JSC::CodeBlockSet::clearMarksForFullCollection): Deleted.
(JSC::CodeBlockSet::lastChanceToFinalize): Deleted.
(JSC::CodeBlockSet::deleteUnmarkedAndUnreferenced): Deleted.
* heap/CodeBlockSet.h:
* heap/CodeBlockSetInlines.h:
(JSC::CodeBlockSet::iterate):
(JSC::CodeBlockSet::iterateViaSubspaces):
* heap/ConservativeRoots.cpp:
(JSC::ConservativeRoots::genericAddPointer):
(JSC::DummyMarkHook::markKnownJSCell):
(JSC::CompositeMarkHook::mark):
(JSC::CompositeMarkHook::markKnownJSCell):
* heap/ConservativeRoots.h:
* heap/Heap.cpp:
(JSC::Heap::lastChanceToFinalize):
(JSC::Heap::finalizeMarkedUnconditionalFinalizers):
(JSC::Heap::finalizeUnconditionalFinalizers):
(JSC::Heap::beginMarking):
(JSC::Heap::deleteUnmarkedCompiledCode):
(JSC::Heap::sweepInFinalize):
(JSC::Heap::forEachCodeBlockImpl):
(JSC::Heap::forEachCodeBlockIgnoringJITPlansImpl):
(JSC::Heap::addCoreConstraints):
(JSC::Heap::finalizeUnconditionalFinalizersInIsoSubspace): Deleted.
* heap/Heap.h:
* heap/HeapCell.h:
* heap/HeapCellInlines.h:
(JSC::HeapCell::subspace const):
* heap/HeapInlines.h:
(JSC::Heap::forEachCodeBlock):
(JSC::Heap::forEachCodeBlockIgnoringJITPlans):
* heap/HeapUtil.h:
(JSC::HeapUtil::findGCObjectPointersForMarking):
* heap/IsoCellSet.cpp:
(JSC::IsoCellSet::parallelNotEmptyMarkedBlockSource):
* heap/IsoCellSet.h:
* heap/IsoCellSetInlines.h:
(JSC::IsoCellSet::forEachMarkedCellInParallel):
(JSC::IsoCellSet::forEachLiveCell):
* heap/LargeAllocation.h:
(JSC::LargeAllocation::subspace const):
* heap/MarkStackMergingConstraint.cpp:
(JSC::MarkStackMergingConstraint::executeImpl):
* heap/MarkStackMergingConstraint.h:
* heap/MarkedAllocator.cpp:
(JSC::MarkedAllocator::parallelNotEmptyBlockSource):
* heap/MarkedBlock.cpp:
(JSC::MarkedBlock::Handle::didAddToAllocator):
(JSC::MarkedBlock::Handle::didRemoveFromAllocator):
* heap/MarkedBlock.h:
(JSC::MarkedBlock::subspace const):
* heap/MarkedBlockInlines.h:
(JSC::MarkedBlock::Handle::forEachLiveCell):
* heap/MarkedSpaceInlines.h:
(JSC::MarkedSpace::forEachLiveCell):
* heap/MarkingConstraint.cpp:
(JSC::MarkingConstraint::execute):
(JSC::MarkingConstraint::doParallelWork):
(JSC::MarkingConstraint::finishParallelWork): Deleted.
(JSC::MarkingConstraint::doParallelWorkImpl): Deleted.
(JSC::MarkingConstraint::finishParallelWorkImpl): Deleted.
* heap/MarkingConstraint.h:
* heap/MarkingConstraintSet.cpp:
(JSC::MarkingConstraintSet::add):
* heap/MarkingConstraintSet.h:
(JSC::MarkingConstraintSet::add):
* heap/MarkingConstraintSolver.cpp:
(JSC::MarkingConstraintSolver::execute):
(JSC::MarkingConstraintSolver::addParallelTask):
(JSC::MarkingConstraintSolver::runExecutionThread):
(JSC::MarkingConstraintSolver::didExecute): Deleted.
* heap/MarkingConstraintSolver.h:
(JSC::MarkingConstraintSolver::TaskWithConstraint::TaskWithConstraint):
(JSC::MarkingConstraintSolver::TaskWithConstraint::operator== const):
* heap/SimpleMarkingConstraint.cpp:
(JSC::SimpleMarkingConstraint::SimpleMarkingConstraint):
(JSC::SimpleMarkingConstraint::executeImpl):
* heap/SimpleMarkingConstraint.h:
(JSC::SimpleMarkingConstraint::SimpleMarkingConstraint):
* heap/SlotVisitor.cpp:
(JSC::SlotVisitor::addParallelConstraintTask):
* heap/SlotVisitor.h:
* heap/Subspace.cpp:
(JSC::Subspace::sweep):
* heap/Subspace.h:
* heap/SubspaceInlines.h:
(JSC::Subspace::forEachLiveCell):
* llint/LowLevelInterpreter.asm:
* runtime/EvalExecutable.cpp:
(JSC::EvalExecutable::visitChildren):
* runtime/EvalExecutable.h:
(JSC::EvalExecutable::codeBlock):
* runtime/FunctionExecutable.cpp:
(JSC::FunctionExecutable::baselineCodeBlockFor):
(JSC::FunctionExecutable::visitChildren):
* runtime/FunctionExecutable.h:
* runtime/JSType.h:
* runtime/ModuleProgramExecutable.cpp:
(JSC::ModuleProgramExecutable::visitChildren):
* runtime/ModuleProgramExecutable.h:
* runtime/ProgramExecutable.cpp:
(JSC::ProgramExecutable::visitChildren):
* runtime/ProgramExecutable.h:
* runtime/ScriptExecutable.cpp:
(JSC::ScriptExecutable::installCode):
(JSC::ScriptExecutable::newReplacementCodeBlockFor):
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:
(JSC::VM::SpaceAndFinalizerSet::SpaceAndFinalizerSet):
(JSC::VM::SpaceAndFinalizerSet::finalizerSetFor):
(JSC::VM::forEachCodeBlockSpace):
* runtime/VMTraps.cpp:
(JSC::VMTraps::handleTraps):
* tools/VMInspector.cpp:
(JSC::VMInspector::codeBlockForMachinePC):
(JSC::VMInspector::isValidCodeBlock):

Source/WebCore:

No new tests because no new behavior.

Adopting new parallel constraint API, so that more of the logic of doing parallel
constraint solving is shared between the DOM's output constraints and JSC's output
constraints.

* bindings/js/DOMGCOutputConstraint.cpp:
(WebCore::DOMGCOutputConstraint::executeImpl):
(WebCore::DOMGCOutputConstraint::doParallelWorkImpl): Deleted.
(WebCore::DOMGCOutputConstraint::finishParallelWorkImpl): Deleted.
* bindings/js/DOMGCOutputConstraint.h:

Source/WTF:

Deque<>::contains() is helpful for a debug ASSERT.

* wtf/Deque.h:
(WTF::inlineCapacity>::contains):

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

21 months agoClean up Marquee-related enums
simon.fraser@apple.com [Wed, 10 Jan 2018 00:05:46 +0000 (00:05 +0000)]
Clean up Marquee-related enums
https://bugs.webkit.org/show_bug.cgi?id=181347

Reviewed by Anders Carlsson.

Modernize EMarqueeBehavior and EMarqueeDirection enums. Stop using the weird negative
values in the MarqueeDirection and do manual reverse direction mapping.

Make some member functions of RenderMarquee private.

Stop using bitfields in RenderMarquee because the memory saving is not worth it, and doing so
allows us to use modern initialization.

No behavior change.

* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator MarqueeBehavior const):
(WebCore::CSSPrimitiveValue::operator MarqueeDirection const):
(WebCore::CSSPrimitiveValue::operator EMarqueeBehavior const): Deleted.
(WebCore::CSSPrimitiveValue::operator EMarqueeDirection const): Deleted.
* css/StyleResolver.cpp:
(WebCore::StyleResolver::adjustRenderStyle):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::sizesLogicalWidthToFitContent const):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::calculateClipRects const):
* rendering/RenderMarquee.cpp:
(WebCore::RenderMarquee::RenderMarquee):
(WebCore::reverseDirection):
(WebCore::RenderMarquee::direction const):
(WebCore::RenderMarquee::isHorizontal const):
(WebCore::RenderMarquee::computePosition):
(WebCore::RenderMarquee::start):
(WebCore::RenderMarquee::updateMarqueePosition):
(WebCore::RenderMarquee::updateMarqueeStyle):
(WebCore::RenderMarquee::timerFired):
* rendering/RenderMarquee.h:
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::marqueeBehavior const):
(WebCore::RenderStyle::marqueeDirection const):
(WebCore::RenderStyle::setMarqueeDirection):
(WebCore::RenderStyle::setMarqueeBehavior):
(WebCore::RenderStyle::initialMarqueeBehavior):
(WebCore::RenderStyle::initialMarqueeDirection):
* rendering/style/RenderStyleConstants.h:
* rendering/style/StyleMarqueeData.cpp:
(WebCore::StyleMarqueeData::StyleMarqueeData):
* rendering/style/StyleMarqueeData.h:

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

21 months agoWKOpenPanelParameters SPI should return autoreleased objects
achristensen@apple.com [Tue, 9 Jan 2018 23:54:35 +0000 (23:54 +0000)]
WKOpenPanelParameters SPI should return autoreleased objects
https://bugs.webkit.org/show_bug.cgi?id=181457
<rdar://problem/35884960>

Reviewed by Tim Horton.

In r226607 I made a mistake by returning an object that has been released.
I instead follow a pattern of leaking and autoreleasing that we use elsewhere in the ObjC API.

* UIProcess/API/Cocoa/WKOpenPanelParameters.mm:
(-[WKOpenPanelParameters _acceptedMIMETypes]):
(-[WKOpenPanelParameters _acceptedFileExtensions]):

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

21 months agoMany CVDisplayLink threads created and destroyed while watching a YouTube video
jer.noble@apple.com [Tue, 9 Jan 2018 23:47:37 +0000 (23:47 +0000)]
Many CVDisplayLink threads created and destroyed while watching a YouTube video
https://bugs.webkit.org/show_bug.cgi?id=181396

Reviewed by Simon Fraser.

When watching some YouTube videos (or any video with default controls), event handlers for
the "timeupdate" event which use rAF will cause the underlying platform objects to be
destroyed in between "timeupdate" events being fired, since they occur every 250ms, and rAF
objects are destroyed every 166ms (or 10/60hz). Update this constant to destroy the
underlying objects every 333ms (or 20/60hz) so that this common pattern doesn't lead to
excessive rAF platform object turnover.

* platform/Logging.h:
* platform/graphics/DisplayRefreshMonitor.h:
(WebCore::DisplayRefreshMonitor::shouldBeTerminated const):
* platform/graphics/DisplayRefreshMonitor.cpp:
(WebCore::DisplayRefreshMonitor::displayDidRefresh):
* platform/graphics/DisplayRefreshMonitorManager.cpp:
(WebCore::DisplayRefreshMonitorManager::createMonitorForClient):
(WebCore::DisplayRefreshMonitorManager::displayDidRefresh):

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

21 months agoFixed test expectaions.
jlewis3@apple.com [Tue, 9 Jan 2018 23:46:48 +0000 (23:46 +0000)]
Fixed test expectaions.

Unreviewed test gardening.

* platform/ios-wk2/TestExpectations:

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

21 months agoGive some slack in display-profiler-outputs computation of the terminal window's...
sbarati@apple.com [Tue, 9 Jan 2018 23:43:41 +0000 (23:43 +0000)]
Give some slack in display-profiler-outputs computation of the terminal window's number of columns
https://bugs.webkit.org/show_bug.cgi?id=181449

Reviewed by JF Bastien.

This allows me to Cmd+f in my terminal to search for things without
having the results become misaligned.

* Scripts/display-profiler-output:

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

21 months ago[RenderTreeBuilder] Move RenderElement addChild mutation logic to RenderTreeBuilder
zalan@apple.com [Tue, 9 Jan 2018 23:31:57 +0000 (23:31 +0000)]
[RenderTreeBuilder] Move RenderElement addChild mutation logic to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=181451
<rdar://problem/36385562>

Reviewed by Antti Koivisto.

This is about moving code, no cleanup and/or normalization (unfortunately it also means
some temporary changes).

No change in functionality.

* rendering/RenderElement.cpp:
(WebCore::RenderElement::addChild):
(WebCore::RenderElement::childRequiresTable const): Deleted.
* rendering/RenderElement.h:
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::insertChildToRenderElement):
(WebCore::RenderTreeBuilder::childRequiresTable):
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderInline.cpp:
(WebCore::RenderTreeBuilder::Inline::insertChildToContinuation):
(WebCore::RenderTreeBuilder::Inline::insertChildIgnoringContinuation):
(WebCore::RenderTreeBuilder::Inline::newChildIsInline):
(WebCore::newChildIsInline): Deleted.
* rendering/updating/RenderTreeBuilderInline.h:

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

21 months agoUnreviewed, rolling out r226531.
jlewis3@apple.com [Tue, 9 Jan 2018 23:00:48 +0000 (23:00 +0000)]
Unreviewed, rolling out r226531.

This caused test failures on macOS WK2.

Reverted changeset:

"Use no-cache fetch mode when loading main documents with
location.reload()"
https://bugs.webkit.org/show_bug.cgi?id=181285
https://trac.webkit.org/changeset/226531

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

21 months agoUnreviewed, rolling out r226600 and r226603
msaboff@apple.com [Tue, 9 Jan 2018 21:47:22 +0000 (21:47 +0000)]
Unreviewed, rolling out r226600 and r226603
https://bugs.webkit.org/show_bug.cgi?id=181351

Add a DOM gadget for Spectre testing

* runtime/Options.h:

* dom/Comment.cpp:
(WebCore::Comment::Comment):
(WebCore::Comment::setReadLength): Deleted.
(WebCore::Comment::charCodeAt): Deleted.
(WebCore::Comment::clflushReadLength): Deleted.
* dom/Comment.h:
* dom/Comment.idl:
* page/RuntimeEnabledFeatures.cpp:
(WebCore::RuntimeEnabledFeatures::spectreGadgetsEnabled const): Deleted.
* page/RuntimeEnabledFeatures.h:

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

21 months agoAdd additional WEBCORE_EXPORTs
don.olmstead@sony.com [Tue, 9 Jan 2018 21:17:20 +0000 (21:17 +0000)]
Add additional WEBCORE_EXPORTs
https://bugs.webkit.org/show_bug.cgi?id=181414

Reviewed by Alex Christensen.

No new tests. No change in behavior.

* dom/Document.h:
* dom/ViewportArguments.h:
* page/DOMWindow.h:
* page/FrameView.h:
* page/PageOverlayController.h:
* platform/ContextMenuItem.h:
* platform/Pasteboard.h:
* platform/SharedBuffer.h:
* platform/UserAgent.h:
* platform/graphics/GLContext.h:
* platform/graphics/GraphicsContext.h:
* platform/graphics/GraphicsLayerTransform.h:
* platform/graphics/PlatformDisplay.h:
* platform/graphics/cairo/BackingStoreBackendCairoImpl.h:
* platform/graphics/cairo/PlatformContextCairo.h:
* platform/graphics/cairo/RefPtrCairo.h:
* platform/graphics/nicosia/NicosiaBuffer.h:
* platform/graphics/nicosia/NicosiaPaintingEngine.h:
* platform/graphics/texmap/TextureMapper.h:
* platform/graphics/texmap/TextureMapperAnimation.h:
* platform/graphics/texmap/TextureMapperBackingStore.h:
* platform/graphics/texmap/TextureMapperFPSCounter.h:
* platform/graphics/texmap/TextureMapperLayer.h:
(WebCore::TextureMapperLayer::TextureMapperLayer): Deleted.
(WebCore::TextureMapperLayer::setID): Deleted.
(WebCore::TextureMapperLayer::id): Deleted.
(WebCore::TextureMapperLayer:: const): Deleted.
(WebCore::TextureMapperLayer::setScrollClient): Deleted.
(WebCore::TextureMapperLayer::setIsScrollable): Deleted.
(WebCore::TextureMapperLayer::isScrollable const): Deleted.
(WebCore::TextureMapperLayer::textureMapper const): Deleted.
(WebCore::TextureMapperLayer::setTextureMapper): Deleted.
(WebCore::TextureMapperLayer::drawsContent const): Deleted.
(WebCore::TextureMapperLayer::contentsAreVisible const): Deleted.
(WebCore::TextureMapperLayer::size const): Deleted.
(WebCore::TextureMapperLayer::opacity const): Deleted.
(WebCore::TextureMapperLayer::transform const): Deleted.
(WebCore::TextureMapperLayer::hasFilters const): Deleted.
(WebCore::TextureMapperLayer::isShowingRepaintCounter const): Deleted.
(WebCore::TextureMapperLayer::fixedToViewport const): Deleted.
(WebCore::TextureMapperLayer::rootLayer const): Deleted.
(WebCore::TextureMapperLayer::texture): Deleted.
(WebCore::TextureMapperLayer::adjustedPosition const): Deleted.
(WebCore::TextureMapperLayer::layerRect const): Deleted.
(WebCore::TextureMapperLayer::State::State): Deleted.
* platform/graphics/texmap/TextureMapperPlatformLayerProxy.h:
* platform/graphics/texmap/TextureMapperTile.h:
* platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
(WebCore::CoordinatedGraphicsLayer::isScrollable const): Deleted.
(WebCore::CoordinatedGraphicsLayer::id const): Deleted.
(WebCore::CoordinatedGraphicsLayer::coverRect const): Deleted.
(WebCore::CoordinatedGraphicsLayer::fixedToViewport const): Deleted.
* platform/graphics/texmap/coordinated/CoordinatedImageBacking.h:
(WebCore::CoordinatedImageBacking::id const): Deleted.
* platform/graphics/texmap/coordinated/TiledBackingStore.h:
* platform/graphics/texmap/coordinated/UpdateAtlas.h:
* platform/network/AuthenticationChallengeBase.h:
* platform/network/CredentialBase.h:
* platform/network/ProtectionSpaceBase.h:
* platform/network/curl/SocketStreamHandleImpl.h:
* replay/UserInputBridge.h:

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

21 months ago[Curl] Move FormData related tasks into new CurlFormDataStream class.
commit-queue@webkit.org [Tue, 9 Jan 2018 21:15:32 +0000 (21:15 +0000)]
[Curl] Move FormData related tasks into new CurlFormDataStream class.
https://bugs.webkit.org/show_bug.cgi?id=181106

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2018-01-09
Reviewed by Alex Christensen.

No new tests because no behavior change.

* platform/Curl.cmake:
* platform/network/curl/CurlFormDataStream.cpp: Added.
(WebCore::CurlFormDataStream::CurlFormDataStream):
(WebCore::CurlFormDataStream::~CurlFormDataStream):
(WebCore::CurlFormDataStream::clean):
(WebCore::CurlFormDataStream::shouldUseChunkTransfer):
(WebCore::CurlFormDataStream::totalSize):
(WebCore::CurlFormDataStream::computeContentLength):
(WebCore::CurlFormDataStream::read):
(WebCore::CurlFormDataStream::readFromFile):
(WebCore::CurlFormDataStream::readFromData):
* platform/network/curl/CurlFormDataStream.h: Renamed from Source/WebCore/platform/network/curl/FormDataStreamCurl.h.
(WebCore::CurlFormDataStream::elementSize):
(WebCore::CurlFormDataStream::totalReadSize):
* platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::CurlRequest):
(WebCore::CurlRequest::willSendData):
(WebCore::CurlRequest::finalizeTransfer):
(WebCore::CurlRequest::setupPUT):
(WebCore::CurlRequest::setupPOST):
(WebCore::CurlRequest::setupSendData):
(WebCore::CurlRequest::resolveBlobReferences): Deleted.
(WebCore::CurlRequest::setupFormData): Deleted.
* platform/network/curl/CurlRequest.h:
* platform/network/curl/FormDataStreamCurl.cpp: Removed.

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

21 months agoReduce graph size by replacing terminal nodes in blocks that have a ForceOSRExit...
sbarati@apple.com [Tue, 9 Jan 2018 21:13:35 +0000 (21:13 +0000)]
Reduce graph size by replacing terminal nodes in blocks that have a ForceOSRExit with Unreachable
https://bugs.webkit.org/show_bug.cgi?id=181409

Reviewed by Keith Miller.

When I was looking at profiler data for Speedometer, I noticed that one of
the hottest functions in Speedometer is around 1100 bytecode operations long.
Only about 100 of those bytecode ops ever execute. However, we ended up
spending a lot of time compiling basic blocks that never executed. We often
plant ForceOSRExit nodes when we parse bytecodes that have a null value profile.
This is the case when such a node never executes.

This patch makes it so that anytime a block has a ForceOSRExit, we replace its
terminal node with an Unreachable node (and remove all nodes after the
ForceOSRExit). This will cut down on graph size when such a block dominates
other blocks in the CFG. This allows us to get rid of huge chunks of the CFG
in certain programs. When doing this transformation, we also insert
Flushes/PhantomLocals to ensure we can recover values that are bytecode
live-in to the ForceOSRExit.

Using ForceOSRExit as the signal for this is a bit of a hack. It definitely
does not get rid of all the CFG that it could. If we decide it's worth
it, we could use additional inputs into this mechanism. For example, we could
profile if a basic block ever executes inside the LLInt/Baseline, and
remove parts of the CFG based on that.

When running Speedometer with the concurrent JIT turned off, this patch
improves DFG/FTL compile times by around 5%.

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

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

21 months ago[RenderTreeBuilder] Move MathML addChild logic to RenderTreeBuilder
zalan@apple.com [Tue, 9 Jan 2018 20:15:19 +0000 (20:15 +0000)]
[RenderTreeBuilder] Move MathML addChild logic to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=181443
<rdar://problem/36380228>

Reviewed by Antti Koivisto.

This is about moving code, no cleanup and/or normalization (unfortunately it also means
some temporary changes).

No change in functionality.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/mathml/RenderMathMLFenced.cpp:
(WebCore::RenderMathMLFenced::addChild):
(WebCore::RenderMathMLFenced::createMathMLOperator): Deleted.
(WebCore::RenderMathMLFenced::makeFences): Deleted.
* rendering/mathml/RenderMathMLFenced.h:
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::RenderTreeBuilder):
(WebCore::RenderTreeBuilder::insertChildToRenderMathMLFenced):
* rendering/updating/RenderTreeBuilder.h:
(WebCore::RenderTreeBuilder::mathMLBuilder):

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

21 months agoBlank page except for inner iframes because pending stylesheets cause style.isNotFina...
antti@apple.com [Tue, 9 Jan 2018 19:27:34 +0000 (19:27 +0000)]
Blank page except for inner iframes because pending stylesheets cause style.isNotFinal() to be true
https://bugs.webkit.org/show_bug.cgi?id=180940
<rdar://problem/36116507>

Reviewed by Darin Adler.

Source/WebCore:

Test: http/tests/local/loading-stylesheet-import-remove.html

If a <link> referencing a stylesheet containing an @import that was still loading was removed
from the document, the loading state was never cleared. For head stylesheets this blocked
rendering permanently.

Test reduction by Justin Ridgewell.

* html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::removedFromAncestor):

Test if the stylesheet it loading before clearing the pointer.

LayoutTests:

* http/tests/local/loading-stylesheet-import-remove.html: Added.
* http/tests/local/loading-stylesheet-import-remove-expected.html: Added.
* http/tests/local/resources/slow-import.css: Added.

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

21 months ago[webkitpy] PlatformInfo should have default argument for casual use
ddkilzer@apple.com [Tue, 9 Jan 2018 19:14:32 +0000 (19:14 +0000)]
[webkitpy] PlatformInfo should have default argument for casual use
https://bugs.webkit.org/show_bug.cgi?id=180827

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2018-01-09
Reviewed by David Kilzer.

PlatformInfo should be the only way to check platform specific thing instead
of sys.platform or other various checks. If there is something you want to check,
it should be placed in PlatformInfo.

Currently to instantiate PlatformInfo, it requires arguments, which is usually
sys, platform and Executive(). They are straight forward and should be handled
by default arguments. Then we can instantiate PlatformInfo more casual.

* Scripts/webkitpy/common/system/platforminfo.py:
(PlatformInfo): Use relative module path import
(PlatformInfo.__init__):
(PlatformInfo.executive): Lazy instantiation of Executive()
(PlatformInfo.total_bytes_memory): Accessing via above property
(PlatformInfo.xcode_sdk_version): Ditto
(PlatformInfo.xcode_simctl_list): Ditto
(PlatformInfo.xcode_version): Ditto
(PlatformInfo._win_version_str): Ditto
* Scripts/webkitpy/common/system/systemhost.py:
(SystemHost.__init__):
* Scripts/webkitpy/common/system/user.py:
(User.__init__):

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

21 months agoMake imported/w3c/web-platform-tests/service-workers/service-worker/fetch-canvas...
commit-queue@webkit.org [Tue, 9 Jan 2018 19:10:02 +0000 (19:10 +0000)]
Make imported/w3c/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-cache.https.html robust to quota error
https://bugs.webkit.org/show_bug.cgi?id=181404

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-09
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Ensure fetch event promise is resolved in case cache is used.
Ensure each cache entry is deleted to not hit any cache quota error.
Test was previously deleting the whole cache, but in WebKit, the quota
in such a case will only be updated when the cache is garbaged collected, which is not deterministic.
Make tests output more results to improve debugability.

* web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-cache.https.html:
* web-platform-tests/service-workers/service-worker/fetch-canvas-tainting.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-canvas-tainting.https.html:
* web-platform-tests/service-workers/service-worker/resources/fetch-canvas-tainting-iframe.html:

LayoutTests:

* TestExpectations:

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

21 months agoASSERTION FAILED: pair.second->m_type & PropertyNode::Getter
mark.lam@apple.com [Tue, 9 Jan 2018 18:49:25 +0000 (18:49 +0000)]
ASSERTION FAILED: pair.second->m_type & PropertyNode::Getter
https://bugs.webkit.org/show_bug.cgi?id=181388
<rdar://problem/36349351>

Reviewed by Saam Barati.

JSTests:

* stress/regress-181388.js: Added.

Source/JavaScriptCore:

When there are duplicate setters or getters, we may end up overwriting a getter
with a setter, or vice versa.  This patch adds tracking for getters/setters that
have been overwritten with duplicates and ignore them.

* bytecompiler/NodesCodegen.cpp:
(JSC::PropertyListNode::emitBytecode):
* parser/NodeConstructors.h:
(JSC::PropertyNode::PropertyNode):
* parser/Nodes.h:
(JSC::PropertyNode::isOverriddenByDuplicate const):
(JSC::PropertyNode::setIsOverriddenByDuplicate):

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

21 months agoRemoved some empty directories that were left behind
mitz@apple.com [Tue, 9 Jan 2018 18:29:18 +0000 (18:29 +0000)]
Removed some empty directories that were left behind

Source/ThirdParty/ANGLE:

* src/third_party/murmurhash: Removed.
* third_party: Removed.
* third_party/deqp: Removed.

Source/WebCore:

* Modules/indieui: Removed.
* Modules/vibration: Removed.
* platform/graphics/ca/mac: Removed.
* platform/mediastream/gstreamer: Removed.

Source/WebKit:

* WebProcess/Cookies/cf: Removed.
* WebProcess/ios: Removed.

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

21 months ago[iOS Debug WK2] Layout Test imported/w3c/web-platform-tests/service-workers/service...
commit-queue@webkit.org [Tue, 9 Jan 2018 18:24:55 +0000 (18:24 +0000)]
[iOS Debug WK2] Layout Test imported/w3c/web-platform-tests/service-workers/service-worker/register-closed-window.https.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=181087
<rdar://problem/36188109>

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-09
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

Updated test to get a more deterministic output.

* web-platform-tests/service-workers/service-worker/register-closed-window.https-expected.txt:
* web-platform-tests/service-workers/service-worker/resources/register-closed-window-iframe.html:

LayoutTests:

* platform/ios-wk2/TestExpectations: Removed flaky expectation.

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

21 months agoRefactor timing function solving code
graouts@webkit.org [Tue, 9 Jan 2018 17:55:22 +0000 (17:55 +0000)]
Refactor timing function solving code
https://bugs.webkit.org/show_bug.cgi?id=181428

Reviewed by Dean Jackson.

We have duplicated code to solve "cubic" and "steps" timing functions in AnimationBase and TextureMapperAnimation,
and we will soon need similar code to deal with timing functions in Web Animations. We move this code into TimingFunction
with a single transformTime() function that can be called directly on the timing function rather than having callers
figure out what type timing functions are to solve them.

No test as there shouldn't be any behavior change.

* page/animation/AnimationBase.cpp:
(WebCore::AnimationBase::progress const):
(WebCore::solveEpsilon): Deleted.
(WebCore::solveCubicBezierFunction): Deleted.
(WebCore::solveStepsFunction): Deleted.
(WebCore::solveSpringFunction): Deleted.
* platform/animation/TimingFunction.cpp:
(WebCore::TimingFunction::transformTime const):
* platform/animation/TimingFunction.h:
* platform/graphics/texmap/TextureMapperAnimation.cpp:
(WebCore::TextureMapperAnimation::apply):
(WebCore::solveEpsilon): Deleted.
(WebCore::solveCubicBezierFunction): Deleted.
(WebCore::solveStepsFunction): Deleted.
(WebCore::applyTimingFunction): Deleted.

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

21 months agoDon't record dynamic spelling corrections while in an ephemeral browsing session
timothy_horton@apple.com [Tue, 9 Jan 2018 17:54:50 +0000 (17:54 +0000)]
Don't record dynamic spelling corrections while in an ephemeral browsing session
https://bugs.webkit.org/show_bug.cgi?id=181417
<rdar://problem/33309104>

Dynamic spelling correction responses are kept on disk. Avoid recording
these responses when in an ephemeral session.

Reviewed by Tim Horton and Wenson Hsieh.

* UIProcess/mac/CorrectionPanel.h:
* UIProcess/mac/CorrectionPanel.mm:
(WebKit::CorrectionPanel::recordAutocorrectionResponse):
    Add a WebViewImpl parameter so we can query the current session.
    Return early before recording the response if the session is
    ephemeral.
(WebKit::CorrectionPanel::handleAcceptedReplacement):
    Update a caller to include the new parameter.
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::recordAutocorrectionResponse):
    Ditto.

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

21 months agoUnreviewed, silence -Wunused-parameter warning
mcatanzaro@igalia.com [Tue, 9 Jan 2018 17:13:19 +0000 (17:13 +0000)]
Unreviewed, silence -Wunused-parameter warning

* testing/js/WebCoreTestSupport.cpp:
(WebCoreTestSupport::setupNewlyCreatedServiceWorker):

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

21 months ago[EME] Add layout test for clearKey CENC message event
commit-queue@webkit.org [Tue, 9 Jan 2018 16:50:18 +0000 (16:50 +0000)]
[EME] Add layout test for clearKey CENC message event
https://bugs.webkit.org/show_bug.cgi?id=180928

Patch by Yacine Bandou <yacine.bandou_ext@softathome.com> on 2018-01-09
Reviewed by Xabier Rodriguez-Calvar.

Tests the reception of clearKey message event after the encrypted event and checks its KeyID.
There are two tests: one with MSE playback and another with regular playback.

* media/encrypted-media/clearKey/clearKey-message-cenc-event-expected.txt: Added.
* media/encrypted-media/clearKey/clearKey-message-cenc-event-mse-expected.txt: Added.
* media/encrypted-media/clearKey/clearKey-message-cenc-event-mse.html: Added.
    Test with MSE playback.
* media/encrypted-media/clearKey/clearKey-message-cenc-event.html: Added.
    Test with regular playback.
* media/encrypted-media/clearKey/encrypted-media-clearKey-handler.js: Added.
    This JavaScript file provides a simple clearKey EME implementation, checks the EME support, handles the "encrypted", "message" and
    "keystatuseschange" events, and updates the CDM session with the right keys.
    This implementation allows to play an encrypted media (video or audio or both), it is used in this test by overloading the "onMessage" callback
    by an other function that checks the 'message' event and stops the test.
* media/encrypted-media/medias-enc.js:
    I take this opportunity to introduce some fixes:
    Rename "mimetype" field to "mimeType", this field is only used in "clearKey-encrypted-cenc-event-mse.html",
    thus it is easy to change it now.
    Change the KeyID of the encrypted video with the right value, it is used for first time in this test.
* media/media-source/media-source-loader-simple.js:
    Use "mimeType" instead of "mimetype" as it is modified in "medias-enc.js".
* platform/gtk/TestExpectations:
* platform/mac/TestExpectations:
* platform/wpe/TestExpectations:

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

21 months agoCheck Image::m_image is not null in ImageLoader::decode()
commit-queue@webkit.org [Tue, 9 Jan 2018 16:44:44 +0000 (16:44 +0000)]
Check Image::m_image is not null in ImageLoader::decode()
https://bugs.webkit.org/show_bug.cgi?id=180386
<rdar://problem/34634483>

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2018-01-09
Reviewed by Tim Horton.

Source/WebCore:

Ensure ImageLoader::m_image is not null before referencing it.

* loader/ImageLoader.cpp:
(WebCore::ImageLoader::decode):

LayoutTests:

Add a new rejected case for decoding an image with an invalid URL.

* fast/images/decode-static-image-reject-expected.txt:
* fast/images/decode-static-image-reject.html:

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

21 months agoUnreviewed. Update OptionsGTK.cmake and NEWS for 2.19.5 release.
carlosgc@webkit.org [Tue, 9 Jan 2018 16:29:45 +0000 (16:29 +0000)]
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.19.5 release.

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

* gtk/NEWS: Add release notes for 2.19.5.

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

21 months ago[FreeType] Use FastMalloc for FreeType
utatane.tea@gmail.com [Tue, 9 Jan 2018 16:23:54 +0000 (16:23 +0000)]
[FreeType] Use FastMalloc for FreeType
https://bugs.webkit.org/show_bug.cgi?id=181387

Reviewed by Michael Catanzaro.

Add custom memory allocator for FreeType to use FastMalloc.

* platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:
(WebCore::initializeFreeTypeLibrary):
(WebCore::createFontCustomPlatformData):

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

21 months ago[RenderTreeBuilder] Move RenderTable* addChild mutation logic to RenderTreeBuilder
zalan@apple.com [Tue, 9 Jan 2018 16:15:23 +0000 (16:15 +0000)]
[RenderTreeBuilder] Move RenderTable* addChild mutation logic to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=181424
<rdar://problem/36368628>

Reviewed by Antti Koivisto.

This is about moving code, no cleanup and/or normalization (unfortunately it also means
some temporary changes).

Covered by existing tests.

* rendering/RenderTable.cpp:
(WebCore::RenderTable::addChild):
* rendering/RenderTableRow.cpp:
(WebCore::RenderTableRow::addChild):
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::addChild):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::insertChildToRenderTable):
(WebCore::RenderTreeBuilder::insertChildToRenderTableSection):
(WebCore::RenderTreeBuilder::insertChildToRenderTableRow):
* rendering/updating/RenderTreeBuilder.h:
* rendering/updating/RenderTreeBuilderTable.cpp:
(WebCore::RenderTreeBuilder::Table::insertChild):
* rendering/updating/RenderTreeBuilderTable.h:

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

21 months ago[GTK] Missing symbols exported in 2.19.4
carlosgc@webkit.org [Tue, 9 Jan 2018 15:53:38 +0000 (15:53 +0000)]
[GTK] Missing symbols exported in 2.19.4
https://bugs.webkit.org/show_bug.cgi?id=181433

Reviewed by Michael Catanzaro.

Add missing WEBKIT_API to webkit_dom_dom_window_webkit_message_handlers_post_message().

* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.h:
* webkitglib-symbols.map: Remove webkit_media_player_debug from local.

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

21 months ago[RenderTreeBuilder] Transition Render*::addChild() calls to RenderTreeBuilder::insert...
zalan@apple.com [Tue, 9 Jan 2018 15:22:13 +0000 (15:22 +0000)]
[RenderTreeBuilder] Transition Render*::addChild() calls to RenderTreeBuilder::insertChildToRender*()
https://bugs.webkit.org/show_bug.cgi?id=181407
<rdar://problem/36361176>

Reviewed by Antti Koivisto.

Eventually all mutation will be going through the RenderTreeBuilder.

No change in functionality.

* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::addChild):
* rendering/RenderMultiColumnFlow.cpp:
(WebCore::RenderMultiColumnFlow::processPossibleSpannerDescendant):
* rendering/RenderRubyRun.cpp:
(WebCore::RenderRubyRun::rubyBaseSafe):
* rendering/updating/RenderTreeBuilderBlockFlow.cpp:
(WebCore::RenderTreeBuilder::BlockFlow::insertChild):
* rendering/updating/RenderTreeBuilderMultiColumn.cpp:
(WebCore::RenderTreeBuilder::MultiColumn::createFragmentedFlow):
* rendering/updating/RenderTreeBuilderRuby.cpp:
(WebCore::RenderTreeBuilder::Ruby::findOrCreateParentForChild):

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

21 months agoMark imported/w3c/web-platform-tests/viewport/viewport-resize-event-on-load-overflowi...
commit-queue@webkit.org [Tue, 9 Jan 2018 15:05:25 +0000 (15:05 +0000)]
Mark imported/w3c/web-platform-tests/viewport/viewport-resize-event-on-load-overflowing-page.html as flaky
https://bugs.webkit.org/show_bug.cgi?id=181436

Patch by Ali Juma <ajuma@chromium.org> on 2018-01-09
Reviewed by Frédéric Wang.

Test gardening.

* TestExpectations:
Mark test that seems to have timing issues as flaky.

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

21 months ago[GStreamer] Ensure SleepDisabler is not held by pages in page cache
philn@webkit.org [Tue, 9 Jan 2018 14:43:28 +0000 (14:43 +0000)]
[GStreamer] Ensure SleepDisabler is not held by pages in page cache
https://bugs.webkit.org/show_bug.cgi?id=180197

Reviewed by Eric Carlson.

The sleep disabler is now checked again whenever the media player
playback state or other characteristic has changed in the media
engine.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaPlayerPlaybackStateChanged):
Check if the sleep disabler state needs to be updated or not.
(WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged): Ditto.
(WebCore::HTMLMediaElement::shouldDisableSleep const): Enable
sleep disabler for GTK and WPE ports.

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

21 months ago[GStreamer] Missing notifications to player client
philn@webkit.org [Tue, 9 Jan 2018 13:59:47 +0000 (13:59 +0000)]
[GStreamer] Missing notifications to player client
https://bugs.webkit.org/show_bug.cgi?id=181432

Reviewed by Carlos Garcia Campos.

We now properly emit playback state changes and characteristic
updates to the client when the pipeline state changes and when
audio/video tracks changes are detected.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::playbackPosition const):
This debug message appears too often in logs. Demote.
(WebCore::MediaPlayerPrivateGStreamer::durationMediaTime const): Ditto.
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo): Emit
charasteristicChanged notification.
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio): Ditto.
(WebCore::MediaPlayerPrivateGStreamer::updateStates): Keep track
of old and current pipeline state.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

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

21 months agoAdd CSP support to service workers
commit-queue@webkit.org [Tue, 9 Jan 2018 13:57:25 +0000 (13:57 +0000)]
Add CSP support to service workers
https://bugs.webkit.org/show_bug.cgi?id=181385

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-09
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/service-worker-csp-connect.https-expected.txt:
* web-platform-tests/service-workers/service-worker/service-worker-csp-default.https-expected.txt:
* web-platform-tests/service-workers/service-worker/service-worker-csp-script.https-expected.txt:

Source/WebCore:

Covered by rebased tests.

Added recovery of CSP information from WorkerScriptLoader.
Added plumbing to pass the CSP information to Service Workers.
Did not add persistency support for the CSP information as this requires changing the SQL database schema.
This will be done in a follow-up.

* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::loadAsynchronously):
(WebCore::WorkerScriptLoader::didReceiveResponse):
* workers/WorkerScriptLoader.h:
(WebCore::WorkerScriptLoader::contentSecurityPolicy const):
* workers/service/SWClientConnection.cpp:
(WebCore::SWClientConnection::finishedFetchingScript):
(WebCore::SWClientConnection::failedFetchingScript):
* workers/service/SWClientConnection.h:
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::addRegistration):
(WebCore::ServiceWorkerContainer::jobFailedWithException):
(WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):
(WebCore::ServiceWorkerContainer::jobFinishedLoadingScript):
* workers/service/ServiceWorkerContainer.h:
* workers/service/ServiceWorkerContextData.cpp:
(WebCore::ServiceWorkerContextData::isolatedCopy const):
* workers/service/ServiceWorkerContextData.h:
(WebCore::ServiceWorkerContextData::encode const):
(WebCore::ServiceWorkerContextData::decode):
* workers/service/ServiceWorkerFetchResult.h:
(WebCore::ServiceWorkerFetchResult::encode const):
(WebCore::ServiceWorkerFetchResult::decode):
* workers/service/ServiceWorkerGlobalScope.cpp:
(WebCore::ServiceWorkerGlobalScope::create):
* workers/service/ServiceWorkerGlobalScope.h:
* workers/service/ServiceWorkerJob.cpp:
(WebCore::ServiceWorkerJob::notifyFinished):
* workers/service/ServiceWorkerJobClient.h:
* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::ServiceWorkerThread):
(WebCore::ServiceWorkerThread::createWorkerGlobalScope):
* workers/service/server/RegistrationDatabase.cpp:
(WebCore::v1RecordsTableSchema):
(WebCore::RegistrationDatabase::importRecords):
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::updateWorker):
(WebCore::SWServer::installContextData):
* workers/service/server/SWServer.h:
* workers/service/server/SWServerJobQueue.cpp:
(WebCore::SWServerJobQueue::scriptFetchFinished):
* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::SWServerWorker):
(WebCore::m_contentSecurityPolicy):
(WebCore::SWServerWorker::contextData const):
* workers/service/server/SWServerWorker.h:

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

21 months agoProvide a method to obtain a CSS value from a RenderStyle by CSSPropertyID
commit-queue@webkit.org [Tue, 9 Jan 2018 13:11:53 +0000 (13:11 +0000)]
Provide a method to obtain a CSS value from a RenderStyle by CSSPropertyID
https://bugs.webkit.org/show_bug.cgi?id=181429

Patch by Antoine Quint <graouts@apple.com> on 2018-01-09
Reviewed by Antti Koivisto.

The KeyframeEffect.getKeyframes() method from Web Animations requires that we return all styles applied at a given
animation effect keyframe. When we parse keyframes, we create RenderStyle objects that are stored in a KeyframeList,
as well as a list of CSSPropertyIDs that are animated. In order to provide the list of animated properties and their
values when calling getKeyframes(), we need to be able to read back from the RenderStyle we create. As a first step
towards this goal, we factor some code in ComputedStyleExtractor::propertyValue() out into a new method
ComputedStyleExtractor::valueForPropertyinStyle() which takes in an explicit RenderStyle.

No test as this is simply refactoring that doesn't change or add behavior.

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::propertyValue):
(WebCore::ComputedStyleExtractor::valueForPropertyinStyle):
* css/CSSComputedStyleDeclaration.h:

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

21 months agoSWClientConnection should not keep references to service worker jobs
commit-queue@webkit.org [Tue, 9 Jan 2018 12:48:34 +0000 (12:48 +0000)]
SWClientConnection should not keep references to service worker jobs
https://bugs.webkit.org/show_bug.cgi?id=181381

Patch by Youenn Fablet <youenn@apple.com> on 2018-01-09
Reviewed by Chris Dumez.

Source/WebCore:

Difficult to test determiniscally but corresponding crash log should no longer happen in debug builds.

Stopped passing ServiceWorkerJob references from ServiceWorkerContainer (potentially in service worker thread) to SWClientConnection (main thread).
Instead pass job identifiers and related data to the main thread.

Minor refactoring to use ServiceWorkerJobIdentifier instead of ServiceWorkerJobDataIdentifier which contains more data than needed.

* workers/service/SWClientConnection.cpp:
(WebCore::SWClientConnection::scheduleJob):
(WebCore::SWClientConnection::failedFetchingScript):
(WebCore::SWClientConnection::postTaskForJob):
(WebCore::SWClientConnection::jobRejectedInServer):
(WebCore::SWClientConnection::registrationJobResolvedInServer):
(WebCore::SWClientConnection::unregistrationJobResolvedInServer):
(WebCore::SWClientConnection::startScriptFetchForServer):
(WebCore::SWClientConnection::clearPendingJobs):
(WebCore::SWClientConnection::finishedFetchingScript): Deleted.
* workers/service/SWClientConnection.h:
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::scheduleJob):
(WebCore::ServiceWorkerContainer::startScriptFetchForJob):
(WebCore::ServiceWorkerContainer::jobFinishedLoadingScript):
(WebCore::ServiceWorkerContainer::jobFailedLoadingScript):
* workers/service/ServiceWorkerContainer.h:
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::rejectJob):
(WebCore::SWServer::resolveRegistrationJob):
(WebCore::SWServer::resolveUnregistrationJob):
(WebCore::SWServer::startScriptFetch):
* workers/service/server/SWServer.h:

Source/WebKit:

Updated IPC handling based on WebCore refactoring.

* Scripts/webkit/messages.py:
(forward_declarations_and_headers):
(headers_for_type):
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::rejectJobInClient):
(WebKit::WebSWServerConnection::resolveRegistrationJobInClient):
(WebKit::WebSWServerConnection::resolveUnregistrationJobInClient):
(WebKit::WebSWServerConnection::startScriptFetchInClient):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* WebProcess/Storage/WebSWClientConnection.messages.in:

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

21 months agoUnreviewed. Update OptionsGTK.cmake and NEWS for 2.19.4 release.
carlosgc@webkit.org [Tue, 9 Jan 2018 11:55:51 +0000 (11:55 +0000)]
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.19.4 release.

.:

* Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

* gtk/NEWS: Add release notes for 2.19.4.

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

21 months agoREGRESSION(r224460): Text fields sometimes get "messed up"
carlosgc@webkit.org [Tue, 9 Jan 2018 10:57:02 +0000 (10:57 +0000)]
REGRESSION(r224460): Text fields sometimes get "messed up"
https://bugs.webkit.org/show_bug.cgi?id=181115

Reviewed by Zalan Bujtas.

Add the scroll position to paint offset before computing the clip rectangle. Before r224460, scroll position was
substracted after the clip rectangle was computed.

* rendering/LayoutState.cpp:
(WebCore::LayoutState::computeClipRect):

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

21 months agoImplement VisualViewport API events
commit-queue@webkit.org [Tue, 9 Jan 2018 10:53:12 +0000 (10:53 +0000)]
Implement VisualViewport API events
https://bugs.webkit.org/show_bug.cgi?id=179386

Patch by Ali Juma <ajuma@chromium.org> on 2018-01-09
Reviewed by Frédéric Wang.

LayoutTests/imported/w3c:

Update expectation for a viewport WPT that now passes.

* web-platform-tests/viewport/viewport-resize-event-on-load-overflowing-page-expected.txt:

Source/WebCore:

Implement the events (resize and scroll) defined by the Visual Viewport API
(https://wicg.github.io/visual-viewport/#events).

This is behind the VisualViewportAPI experimental feature flag.

In order to detect when events need to be fired, change the computation of
Visual Viewport attributes to happen whenever the layout viewport is updated
rather than only on-demand.

Tests: fast/visual-viewport/resize-event-fired-window-resized.html
       fast/visual-viewport/resize-event-fired.html
       fast/visual-viewport/scroll-event-fired.html

* dom/Document.cpp:
(WebCore::Document::addListenerTypeIfNeeded):
Add support for tracking resize event listeners.
* dom/Document.h:
* dom/DocumentEventQueue.cpp:
(WebCore::DocumentEventQueue::enqueueOrDispatchScrollEvent):
(WebCore::DocumentEventQueue::enqueueScrollEvent):
Factored out of enqueueOrDispatchScrollEvent so that this logic can be reused
for Visual Viewport scroll events.
(WebCore::DocumentEventQueue::enqueueResizeEvent):
(WebCore::DocumentEventQueue::pendingEventTimerFired):
* dom/DocumentEventQueue.h:
* page/FrameView.cpp:
(WebCore::FrameView::updateLayoutViewport):
* page/VisualViewport.cpp:
(WebCore::VisualViewport::addEventListener):
(WebCore::layoutIfNonNull):
(WebCore::VisualViewport::offsetLeft const):
Remove attribute computation logic since this now happens during update().
(WebCore::VisualViewport::offsetTop const): Ditto.
(WebCore::VisualViewport::pageLeft const): Ditto.
(WebCore::VisualViewport::pageTop const): Ditto.
(WebCore::VisualViewport::width const): Ditto.
(WebCore::VisualViewport::height const): Ditto.
(WebCore::VisualViewport::scale const):
(WebCore::VisualViewport::update):
Added. Computes all of the Visual Viewport attributes and determines
whether events need to be fired.
(WebCore::VisualViewport::enqueueResizeEvent):
(WebCore::VisualViewport::enqueueScrollEvent):
(WebCore::getFrameViewAndLayoutIfNonNull): Deleted.
* page/VisualViewport.h:

Source/WebKit:

Change the default value of the VisualViewportAPI experimental feature flag to
DEFAULT_EXPERIMENTAL_FEATURES_ENABLED. This patch completes the implementation
of this feature as specified by https://wicg.github.io/visual-viewport/, so this
feature is now ready for wider testing.

* Shared/WebPreferences.yaml:

LayoutTests:

Add tests for Visual Viewport API events. Test that a resize event is fired after
pinch zoom and after window resize, and test that a scroll event is fired when the
visual viewport is scrolled.

* fast/visual-viewport/resize-event-fired-expected.txt: Added.
* fast/visual-viewport/resize-event-fired-window-resized-expected.txt: Added.
* fast/visual-viewport/resize-event-fired-window-resized.html: Added.
* fast/visual-viewport/resize-event-fired.html: Added.
* fast/visual-viewport/scroll-event-fired-expected.txt: Added.
* fast/visual-viewport/scroll-event-fired.html: Added.
* platform/gtk/TestExpectations:
Skipped tests that use UIScriptController::zoomToScale, since this isn't implemented on GTK.
* platform/ios/TestExpectations:
Skipped test that resizes a window, since this isn't supported on iOS.
* platform/win/TestExpectations:
Skipped tests that use UIScriptController::zoomToScale, since this isn't implemented on Windows.

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

21 months ago[EME] Add the CENC initData support in ClearKey CDM
commit-queue@webkit.org [Tue, 9 Jan 2018 10:02:46 +0000 (10:02 +0000)]
[EME] Add the CENC initData support in ClearKey CDM
https://bugs.webkit.org/show_bug.cgi?id=180081

Patch by Yacine Bandou <yacine.bandou_ext@softathome.com> on 2018-01-09
Reviewed by Xabier Rodriguez-Calvar.

Add the "cenc" initDataType support in ClearKey CDM.
Parse the CENC initData and extract the KIDs by following the W3C spec
https://www.w3.org/TR/eme-initdata-cenc/#common-system

Tests: media/encrypted-media/clearKey/clearKey-message-cenc-event.html
       media/encrypted-media/clearKey/clearKey-message-cenc-event-mse.html

* platform/encryptedmedia/clearkey/CDMClearKey.cpp:
(WebCore::extractKeyidsLocationFromCencInitData):
(WebCore::isCencInitData):
(WebCore::extractKeyidsFromCencInitData):
(WebCore::CDMPrivateClearKey::supportsInitDataType const):
(WebCore::CDMPrivateClearKey::supportsInitData const):
(WebCore::CDMInstanceClearKey::requestLicense):

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

21 months ago[Cairo] Pass state values directly to Cairo operations
zandobersek@gmail.com [Tue, 9 Jan 2018 09:52:13 +0000 (09:52 +0000)]
[Cairo] Pass state values directly to Cairo operations
https://bugs.webkit.org/show_bug.cgi?id=181389

Reviewed by Carlos Garcia Campos.

Instead of passing reference to the GraphicsContextState object to
various Cairo operations, only pass the required state values. This
makes it explicit what state values are used in these operations, at the
expense of some long parameter lists, but this will be better addressed
by future refactoring of this code into more concise functions.

No new tests -- no change in functionality.

* platform/graphics/cairo/CairoOperations.cpp:
(WebCore::Cairo::drawGlyphsShadow):
(WebCore::Cairo::dashedLineCornerWidthForStrokeWidth):
(WebCore::Cairo::dashedLinePatternWidthForStrokeWidth):
(WebCore::Cairo::drawGlyphs):
(WebCore::Cairo::drawRect):
(WebCore::Cairo::drawLine):
(WebCore::Cairo::drawEllipse):
* platform/graphics/cairo/CairoOperations.h:
* platform/graphics/cairo/FontCairo.cpp:
(WebCore::FontCascade::drawGlyphs):
* platform/graphics/cairo/GraphicsContextCairo.cpp:
(WebCore::GraphicsContext::drawRect):
(WebCore::GraphicsContext::drawLine):
(WebCore::GraphicsContext::drawEllipse):

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

21 months ago[Win] Remove workaround for Bug 176442 after stopping MSVC 2015 support
commit-queue@webkit.org [Tue, 9 Jan 2018 09:29:52 +0000 (09:29 +0000)]
[Win] Remove workaround for Bug 176442 after stopping MSVC 2015 support
https://bugs.webkit.org/show_bug.cgi?id=176443

Patch by Yoshiaki Jitsukawa <Yoshiaki.Jitsukawa@sony.com> on 2018-01-09
Reviewed by Darin Adler.

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

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

21 months agocheck-webkit-style: Verify syntax for WK_API_AVAILABLE
fred.wang@free.fr [Tue, 9 Jan 2018 09:05:34 +0000 (09:05 +0000)]
check-webkit-style: Verify syntax for WK_API_AVAILABLE
https://bugs.webkit.org/show_bug.cgi?id=181394

Patch by Frederic Wang <fwang@igalia.com.fr> on 2018-01-09
Reviewed by Darin Adler.

A common syntax error for WK_API_AVAILABLE is to write ios(WK_MAC_TBA)
as the second parameter instead of ios(WK_IOS_TBA). This generally
builds for iOS on EWS but not when using the public SDK. See r224057,
r223207 and r226211 for example. This patch adds a basic style check
for that macro to prevent this kind of mistake.

* Scripts/webkitpy/style/checkers/cpp.py:
(check_min_versions_of_wk_api_available): New function to verify the parameters of WX_API_AVAILABLE.
(check_style): Run new style check.
(CppChecker): Add build type for the new style check.
* Scripts/webkitpy/style/checkers/cpp_unittest.py:
(WebKitStyleTest.test_min_versions_of_wk_api_available): Add tests for the new style check.

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

21 months agoRelease assert in addResourceTiming when a cache resource is requested during style...
rniwa@webkit.org [Tue, 9 Jan 2018 08:34:34 +0000 (08:34 +0000)]
Release assert in addResourceTiming when a cache resource is requested during style recalc
https://bugs.webkit.org/show_bug.cgi?id=181137
<rdar://problem/35666574>

Reviewed by Simon Fraser.

Source/WebCore:

Make the dispatching of resourcetimingbufferfull event asynchronous to avoid dispatching it
synchronously during a style resolution when CachedResourceLoader::requestImage requests
a previously loaded image.

We now schedule a timer when the resource timing buffer becomes full, and dispatch the event
when the timer fires. Meanwhile, we have a backup buffer to which additional resource timing
entries would be added. Once the event is dispatched, we refill the buffer exposed to author
scripts. When refilling the buffer results in it becoming full again, we keep repeating the
process of firing resourcetimingbufferfull and re-filling the buffer until either we stop
making progress (i.e. the script didn't increase the number of empty entires in the buffer)
or the backup buffer (at the time we started this process) becomes empty.

Also fixed a bug that we were firing resourcetimingbufferfull event when the last entry that
fits within the buffer size was added instead of when an entry is being added to an already
full buffer. To make this work, the patch introduces m_resourceTimingBufferFullFlag,
representing the concept "resource timing buffer full" flag in the resource timing specification.

Test: http/tests/performance/performance-resource-timing-resourcetimingbufferfull-crash.html

* page/Performance.cpp:
(WebCore::Performance::Performance):
(WebCore::Performance::clearResourceTimings):
(WebCore::Performance::setResourceTimingBufferSize):
(WebCore::Performance::addResourceTiming):
(WebCore::Performance::resourceTimingBufferFullTimerFired):
* page/Performance.h:

LayoutTests:

Added a regression test for the crash.

Also fixed test cases in rt-performance-extensions.js which were incorrectly asserting and assuming that
resourcetimingbufferfull event will be fired when there are exactly the same number of entries as the buffer size.

* http/tests/performance/performance-resource-timing-resourcetimingbufferfull -crash-expected.txt: Added.
* http/tests/performance/performance-resource-timing-resourcetimingbufferfull-crash.html: Added.
* http/wpt/resource-timing/rt-performance-extensions.js: Fixed the test cases.

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

21 months agoREGRESSION(r225913): about 30 JSC test failures on ARMv7
zandobersek@gmail.com [Tue, 9 Jan 2018 07:17:06 +0000 (07:17 +0000)]
REGRESSION(r225913): about 30 JSC test failures on ARMv7
https://bugs.webkit.org/show_bug.cgi?id=181162
<rdar://problem/36261349>

Unreviewed follow-up to r226298. Enable the fast case in
DFG::SpeculativeJIT::compileArraySlice() for any 64-bit platform,
assuming in good faith that enough GP registers are available on any
such configuration. The accompanying comment is adjusted to describe
this assumption.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileArraySlice):

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

21 months agoWebAssembly: mask indexed accesses to Table
jfbastien@apple.com [Tue, 9 Jan 2018 07:10:36 +0000 (07:10 +0000)]
WebAssembly: mask indexed accesses to Table
https://bugs.webkit.org/show_bug.cgi?id=181412
<rdar://problem/36363236>

Reviewed by Saam Barati.

JSTests:

Update error messages.

* wasm/js-api/table.js:
(assert.throws.WebAssembly.Table.prototype.grow):

Source/JavaScriptCore:

WebAssembly Table indexed accesses are user-controlled and
bounds-checked. Force allocations of Table data to be a
power-of-two, and explicitly mask accesses after bounds-check
branches.

Rename misleading usage of "size" when "length" of a Table was
intended.

Rename the Spectre option from "disable" to "enable".

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::SpeculativeJIT):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::LowerDFGToB3):
* jit/JIT.cpp:
(JSC::JIT::JIT):
* runtime/Options.h:
* wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::emitCheckAndPreparePointer):
(JSC::Wasm::B3IRGenerator::addCallIndirect):
* wasm/WasmTable.cpp:
(JSC::Wasm::Table::allocatedLength):
(JSC::Wasm::Table::setLength):
(JSC::Wasm::Table::create):
(JSC::Wasm::Table::Table):
(JSC::Wasm::Table::grow):
(JSC::Wasm::Table::clearFunction):
(JSC::Wasm::Table::setFunction):
* wasm/WasmTable.h:
(JSC::Wasm::Table::length const):
(JSC::Wasm::Table::offsetOfLength):
(JSC::Wasm::Table::offsetOfMask):
(JSC::Wasm::Table::mask const):
(JSC::Wasm::Table::isValidLength):
* wasm/js/JSWebAssemblyInstance.cpp:
(JSC::JSWebAssemblyInstance::create):
* wasm/js/JSWebAssemblyTable.cpp:
(JSC::JSWebAssemblyTable::JSWebAssemblyTable):
(JSC::JSWebAssemblyTable::visitChildren):
(JSC::JSWebAssemblyTable::grow):
(JSC::JSWebAssemblyTable::getFunction):
(JSC::JSWebAssemblyTable::clearFunction):
(JSC::JSWebAssemblyTable::setFunction):
* wasm/js/JSWebAssemblyTable.h:
(JSC::JSWebAssemblyTable::isValidLength):
(JSC::JSWebAssemblyTable::length const):
(JSC::JSWebAssemblyTable::allocatedLength const):
* wasm/js/WebAssemblyModuleRecord.cpp:
(JSC::WebAssemblyModuleRecord::evaluate):
* wasm/js/WebAssemblyTablePrototype.cpp:
(JSC::webAssemblyTableProtoFuncLength):
(JSC::webAssemblyTableProtoFuncGrow):
(JSC::webAssemblyTableProtoFuncGet):
(JSC::webAssemblyTableProtoFuncSet):

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

21 months ago::first-letter incorrectly selects grapheme pairs
commit-queue@webkit.org [Tue, 9 Jan 2018 06:41:18 +0000 (06:41 +0000)]
::first-letter incorrectly selects grapheme pairs
https://bugs.webkit.org/show_bug.cgi?id=181315

Patch by Chris Nardi <csnardi1@gmail.com> on 2018-01-08
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Updated css-pseudo-4 to latest WPT revision and added first-letter-004.html.

* web-platform-tests/css/css-pseudo-4/first-letter-004-expected.html: Added.
* web-platform-tests/css/css-pseudo-4/first-letter-004.html: Added.
* web-platform-tests/css/css-pseudo-4/marker-color-expected.html:
* web-platform-tests/css/css-pseudo-4/marker-color.html:
* web-platform-tests/css/css-pseudo-4/marker-font-properties.html:
* web-platform-tests/css/css-pseudo-4/w3c-import.log:

Source/WebCore:

Grapheme pairs were incorrectly selected by ::first-letter. This
change fixes their selection.

Tests: Updated fast/css/first-letter-punctuation.html and imported
LayoutTests/imported/w3c/web-platform-tests/css/css-pseudo-4/first-letter-004.html

* rendering/updating/RenderTreeBuilderFirstLetter.cpp:
(WebCore::isPunctuationForFirstLetter):
(WebCore::shouldSkipForFirstLetter):
(WebCore::RenderTreeBuilder::FirstLetter::createRenderers):

LayoutTests:

* fast/css/first-letter-punctuation-expected.html: Added.
* fast/css/first-letter-punctuation.html:
* platform/gtk/fast/css/first-letter-punctuation-expected.png: Removed.
* platform/gtk/fast/css/first-letter-punctuation-expected.txt: Removed.
* platform/ios/fast/css/first-letter-punctuation-expected.txt: Removed.
* platform/mac/fast/css/first-letter-punctuation-expected.png: Removed.
* platform/mac/fast/css/first-letter-punctuation-expected.txt: Removed.
* platform/win/fast/css/first-letter-punctuation-expected.txt: Removed.

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

21 months agoSpecial list-item counter starts from an incorrect number for ::before and ::after
darin@apple.com [Tue, 9 Jan 2018 06:19:20 +0000 (06:19 +0000)]
Special list-item counter starts from an incorrect number for ::before and ::after
https://bugs.webkit.org/show_bug.cgi?id=181084

Reviewed by Zalan Bujtas.

Source/WebCore:

Test: fast/css/counters/counter-list-item.html

* Sources.txt: Removed CounterDirectives.cpp.
* WebCore.xcodeproj/project.pbxproj: Ditto.

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::counterToCSSValue): Updated for changes to the CounterDirectives struct.
* css/StyleBuilderCustom.h:
(WebCore::StyleBuilderCustom::applyInheritCounter): Ditto.
(WebCore::StyleBuilderCustom::applyValueCounter): Ditto.

* html/HTMLLIElement.cpp:
(WebCore::HTMLLIElement::parseValue): Call setExplicitValue(std::nullopt) instead
of clearExplicitValue since we are using std::optional now.

* rendering/RenderCounter.cpp:
(WebCore::listItemCounterDirectives): Added. Computes the counter directives that
express the effects on the list-item counter from list item and list elements.
Used something as close to what the CSS 3 draft says as possible. This uses a
negative increment when creating a list to counteract the positive increment done
by a list element, except in the case of an unordered list. This is where the bug
fix actually lies. Also fixed handling of reversed ordered lists at the same time.
(WebCore::planCounter): Refactored to use the function above. Also changed the
code to pay attention to both the counter directives and the implicit ones from
list item and list elements, getting as close as possible to what the specification
seems to call for.

* rendering/RenderListItem.cpp:
(WebCore::RenderListItem::RenderListItem): Since we are using std::optional and no
longer using bit fields, simplified the constructor for each list item.
(WebCore::RenderListItem::calcValue const): Deleted.
(WebCore::RenderListItem::updateValueNow const): Merged in all the code from the
old calcValue function, but it is also simpler now since m_value is std::optional.
(WebCore::RenderListItem::updateValue): Updated to use std::optional.
(WebCore::RenderListItem::setExplicitValue): Ditto.
(WebCore::RenderListItem::clearExplicitValue): Deleted.
(WebCore::RenderListItem::updateListMarkerNumbers): Updated to use std::optional.
(WebCore::RenderListItem::isInReversedOrderedList const): Added. This is used by
the counter code so it can decrement instead of incrementing.

* rendering/RenderListItem.h: Updated to use std::optional. Also marked functions
final instead of override and initialized m_notInList after making it not be a
bitfield any more.

* rendering/style/CounterDirectives.cpp: Removed.
* rendering/style/CounterDirectives.h: Removed most of the CounterDirectives
class and replaced it with a struct with two std::optional. Added an addClamped
function so the counter code can share it with the addIncrementValue function.
If we want to make a faster version that doesn't use double, we can come back
and do that. Also moved the == function to the header since the implementation
is so trivial.

* rendering/style/StyleAllInOne.cpp: Removed CounterDirectives.cpp.

* rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): Updated to
use std::make_unique directly instead of using a clone function.

LayoutTests:

* fast/css/counters/counter-list-item-expected.html: Added.
* fast/css/counters/counter-list-item.html: Added.

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

21 months ago[Attachment Support] Expose HTMLAttachmentElement.uniqueIdentifier to bindings
wenson_hsieh@apple.com [Tue, 9 Jan 2018 04:08:21 +0000 (04:08 +0000)]
[Attachment Support] Expose HTMLAttachmentElement.uniqueIdentifier to bindings
https://bugs.webkit.org/show_bug.cgi?id=181420
<rdar://problem/36365827>

Reviewed by Alex Christensen.

Source/WebCore:

Add a new IDL definition for uniqueIdentifier on HTMLAttachmentElement. This allows clients to relate attachment
elements in the DOM to _WKAttachments delivered via Objective-C SPI.

Adjusted existing tests in WKAttachmentTests.

* html/HTMLAttachmentElement.idl:

Tools:

Adjusts some existing API tests to verify that attachment elements' uniqueIdentifiers match the uniqueIdentifier
of corresponding _WKAttachments.

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

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

21 months agoVersioning.
jmarcell@apple.com [Tue, 9 Jan 2018 03:52:49 +0000 (03:52 +0000)]
Versioning.

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

21 months agoAdd WKNavigationDelegate SPI exposing WebProcess crash reason
achristensen@apple.com [Tue, 9 Jan 2018 03:27:20 +0000 (03:27 +0000)]
Add WKNavigationDelegate SPI exposing WebProcess crash reason
https://bugs.webkit.org/show_bug.cgi?id=181410
<rdar://problem/36167199>

Reviewed by Wenson Hsieh.

Source/WebKit:

We exposed it in the C SPI.

* UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::setNavigationDelegate):
(WebKit::toWKProcessTerminationReason):
(WebKit::NavigationState::NavigationClient::processDidTerminate):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/Navigation.mm:
(-[CrashReasonDelegate _webView:webContentProcessDidTerminateWithReason:]):
(TEST):

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

21 months agoMake ObjC SPI equivalent to WKPageNavigationClient.decidePolicyForPluginLoad
achristensen@apple.com [Tue, 9 Jan 2018 03:26:18 +0000 (03:26 +0000)]
Make ObjC SPI equivalent to WKPageNavigationClient.decidePolicyForPluginLoad
https://bugs.webkit.org/show_bug.cgi?id=181413
<rdar://problem/36169005>

Reviewed by Wenson Hsieh.

* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::decidePolicyForPluginLoad):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageNavigationClient):
* UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::setNavigationDelegate):
(WebKit::toPluginModuleLoadPolicy):
(WebKit::toWKPluginModuleLoadPolicy):
(WebKit::NavigationState::NavigationClient::decidePolicyForPluginLoad):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::findPlugin):

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

21 months agoiOS build fix attempt after r226602.
rniwa@webkit.org [Tue, 9 Jan 2018 03:08:47 +0000 (03:08 +0000)]
iOS build fix attempt after r226602.

* UIProcess/API/C/WKContextMenuListener.cpp:
(WKContextMenuListenerUseContextMenuItems):

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

21 months agoAdd SPI for WKOpenPanelParameters._acceptedMIMETypes and _acceptedFileExtensions
achristensen@apple.com [Tue, 9 Jan 2018 02:56:05 +0000 (02:56 +0000)]
Add SPI for WKOpenPanelParameters._acceptedMIMETypes and _acceptedFileExtensions
https://bugs.webkit.org/show_bug.cgi?id=181408
<rdar://problem/35884960>

Reviewed by Tim Horton.

Source/WebKit:

* UIProcess/API/Cocoa/WKOpenPanelParameters.mm:
(-[WKOpenPanelParameters _acceptedMIMETypes]):
(-[WKOpenPanelParameters _acceptedFileExtensions]):
* UIProcess/API/Cocoa/WKOpenPanelParametersInternal.h:
* UIProcess/API/Cocoa/WKOpenPanelParametersPrivate.h: Added.
* WebKit.xcodeproj/project.pbxproj:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/RunOpenPanel.mm:
(-[RunOpenPanelUIDelegate webView:runOpenPanelWithParameters:initiatedByFrame:completionHandler:]):

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

21 months agoAccessibilityARIAGrid does not compile when accessibility is disabled
don.olmstead@sony.com [Tue, 9 Jan 2018 02:16:16 +0000 (02:16 +0000)]
AccessibilityARIAGrid does not compile when accessibility is disabled
https://bugs.webkit.org/show_bug.cgi?id=181418
<rdar://problem/36365398>

Reviewed by Chris Fleizach.

No new tests. No change in behavior.

* accessibility/AccessibilityARIAGrid.cpp:

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

21 months agoUnreviewed, rolling out r226532 and r226540.
commit-queue@webkit.org [Tue, 9 Jan 2018 02:07:53 +0000 (02:07 +0000)]
Unreviewed, rolling out r226532 and r226540.
https://bugs.webkit.org/show_bug.cgi?id=181422

jessie says basic browsing does not seem to work (Requested by
alexchristensen on #webkit).

Reverted changesets:

"Add CSP support to service workers"
https://bugs.webkit.org/show_bug.cgi?id=181385
https://trac.webkit.org/changeset/226532

"SWClientConnection should not keep references to service
worker jobs"
https://bugs.webkit.org/show_bug.cgi?id=181381
https://trac.webkit.org/changeset/226540

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