WebKit-https.git
3 years agolint-test-expectations should be run during style checking
jbedard@apple.com [Thu, 20 Jul 2017 16:33:33 +0000 (16:33 +0000)]
lint-test-expectations should be run during style checking
https://bugs.webkit.org/show_bug.cgi?id=173559
<rdar://problem/32854941>

Reviewed by Aakash Jain.

* Scripts/webkitpy/layout_tests/models/test_expectations.py:
(TestExpectationsModel._already_seen_better_match): Append returns 'None' when successful,
prevents identifying errors on specific lines in a file.
* Scripts/webkitpy/style/main_unittest.py:
(ExpectationLinterInStyleCheckerTest.test_linter_duplicate_line_edit_in_file): Test for the
case where a linter error is in the file modified, but the line modified is not related to
the linter error.

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

3 years ago[GTK] Layout Test http/tests/media/hls/hls-progress.html is failing
commit-queue@webkit.org [Thu, 20 Jul 2017 15:59:39 +0000 (15:59 +0000)]
[GTK] Layout Test http/tests/media/hls/hls-progress.html is failing
https://bugs.webkit.org/show_bug.cgi?id=141469

Patch by Charlie Turner <cturner@igalia.com> on 2017-07-20
Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

A work-around for getting progress information in a timely manner from
live pipelines. We cannot rely on getting BUFFERING messages within
the stalled time window (3s), so we have to poll for progress
information somehow.

Makes the following pass reliably
 http/tests/media/hls/hls-audio-tracks-has-audio.html passed unexpectedly
 http/tests/media/hls/hls-audio-tracks.html passed unexpectedly
 http/tests/media/hls/hls-progress.html passed unexpectedly

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::findHLSQueue):
(WebCore::isHLSProgressing):
(WebCore::MediaPlayerPrivateGStreamer::fillTimerFired):

LayoutTests:

Fixes the removed tests.

* platform/gtk/TestExpectations:

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

3 years agoUnreviewed GTK test gardening
mcatanzaro@igalia.com [Thu, 20 Jul 2017 15:48:44 +0000 (15:48 +0000)]
Unreviewed GTK test gardening

* platform/gtk/TestExpectations:

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

3 years agoUnreviewed, add another demo page for a WebCrypto API blog post
jiewen_tan@apple.com [Thu, 20 Jul 2017 15:46:51 +0000 (15:46 +0000)]
Unreviewed, add another demo page for a WebCrypto API blog post

* demos/webcrypto/aes-gcm.html: Added.
* demos/webcrypto/asynchronous-execution.html:
* demos/webcrypto/common.js: Added.

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

3 years agoMinor Node->Element type tightening fixes
akling@apple.com [Thu, 20 Jul 2017 14:37:14 +0000 (14:37 +0000)]
Minor Node->Element type tightening fixes
https://bugs.webkit.org/show_bug.cgi?id=174651

Reviewed by Sam Weinig.

Tighten up some Node* into Element* or even better, Element&.

* dom/Document.cpp:
(WebCore::acceptsEditingFocus): Take a const Element&.
(WebCore::Document::setFocusedElement):
* editing/Editor.cpp:
(WebCore::Editor::findEventTargetFrom): Return an Element*.
(WebCore::Editor::findEventTargetFromSelection): Ditto.
(WebCore::Editor::pasteAsPlainText):
(WebCore::Editor::pasteAsFragment):
(WebCore::Editor::dispatchCPPEvent):
* editing/Editor.h:
* page/DragController.cpp:
(WebCore::DragController::dispatchTextInputEventFor):

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

3 years agoRemove WebIconDatabase from WebKitLegacy/win.
beidson@apple.com [Thu, 20 Jul 2017 14:30:10 +0000 (14:30 +0000)]
Remove WebIconDatabase from WebKitLegacy/win.
https://bugs.webkit.org/show_bug.cgi?id=174608

Reviewed by Alex Christensen.

Source/WebKitLegacy/win:

It is unused.

* ForEachCoClass.h:

* Interfaces/IWebIconDatabase.idl: Removed.

* Interfaces/WebKit.idl:

* WebCoreStatistics.cpp:
(WebCoreStatistics::iconPageURLMappingCount):
(WebCoreStatistics::iconRetainedPageURLCount):
(WebCoreStatistics::iconRecordCount):
(WebCoreStatistics::iconsWithDataCount):

* WebIconDatabase.cpp: Removed.
* WebIconDatabase.h: Removed.
* WebKitClassFactory.cpp:

* WebKitDLL.cpp:
(shutDownWebKit):

* WebKitLogging.h:

* WebView.cpp:
(WebView::close):
(WebView::notifyDidAddIcon):
(WebView::registerForIconNotification):
(WebView::dispatchDidReceiveIconFromWebFrame):
(WebView::onNotify):

Tools:

* DumpRenderTree/win/DumpRenderTree.cpp:
(main):
* DumpRenderTree/win/TestRunnerWin.cpp:
(TestRunner::setIconDatabaseEnabled):

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

3 years agoWKHTTPCookieStore API tests fail on High Sierra.
beidson@apple.com [Thu, 20 Jul 2017 14:28:18 +0000 (14:28 +0000)]
WKHTTPCookieStore API tests fail on High Sierra.
<rdar://problem/33410271> and https://bugs.webkit.org/show_bug.cgi?id=174666

Reviewed by Andy Estes.

Covered by existing API tests.

In r219567 I'd moved cookie storage observation off of NSHTTPCookieStorage and NSNotificationCenter
to CFHTTPCookieStorage observation callbacks.

This is because notifications were only sent for the default [NSHTTPCookieStorage sharedHTTPCookieStorage]
and not any of the other ones we keep in flight.

Unfortunately that SPI has been disabled in High Sierra.
Fortunately we found a way we can get non-shared NSHTTPCookieStorages to send notifications that works everywhere.

* platform/network/cocoa/CookieStorageObserver.h:
* platform/network/cocoa/CookieStorageObserver.mm:
(-[WebCookieObserverAdapter initWithObserver:]):
(-[WebCookieObserverAdapter cookiesChangedNotificationHandler:]):
(WebCore::CookieStorageObserver::create):
(WebCore::CookieStorageObserver::CookieStorageObserver):
(WebCore::CookieStorageObserver::~CookieStorageObserver):
(WebCore::CookieStorageObserver::startObserving): Use a trick to call some SPI on non-shared NSHTTPCookieStorages
  to get them to send notifications.
(WebCore::CookieStorageObserver::stopObserving):
(WebCore::cookiesChanged): Deleted.

* platform/network/cocoa/NetworkStorageSessionCocoa.mm:
(WebCore::NetworkStorageSession::cookieStorageObserver):

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

3 years agoUnreviewed, add a demo page for a WebCrypto API blog post
jiewen_tan@apple.com [Thu, 20 Jul 2017 14:25:34 +0000 (14:25 +0000)]
Unreviewed, add a demo page for a WebCrypto API blog post

* demos/webcrypto/asynchronous-execution-worker.js: Added.
* demos/webcrypto/asynchronous-execution.html: Added.

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

3 years ago[GStreamer] Some layout tests issue "g_mutex_clear() called on uninitialised or locke...
magomez@igalia.com [Thu, 20 Jul 2017 13:07:01 +0000 (13:07 +0000)]
[GStreamer] Some layout tests issue "g_mutex_clear() called on uninitialised or locked mutex" and flaky crash in ~MediaPlayerPrivateGStreamerBase
https://bugs.webkit.org/show_bug.cgi?id=173952

Reviewed by Carlos Garcia Campos.

Adjust MediaPlayerPrivateGStreamerBase to avoid concurrence problems with the GStreamer thread when
destroying the object.

Covered by existent tests.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::repaint):
(WebCore::MediaPlayerPrivateGStreamerBase::cancelRepaint):

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

3 years ago[WPE] Adjust priority of GSource used in WKTR's HeadlessViewBackend
zandobersek@gmail.com [Thu, 20 Jul 2017 12:11:59 +0000 (12:11 +0000)]
[WPE] Adjust priority of GSource used in WKTR's HeadlessViewBackend
https://bugs.webkit.org/show_bug.cgi?id=174671

Reviewed by Carlos Garcia Campos.

* WebKitTestRunner/wpe/HeadlessViewBackend.cpp:
(HeadlessViewBackend::HeadlessViewBackend): Use the RunLoopDispatcher
priority for this source in order to have it dispatched on the same
priority as the other WebKit-controlled GSource objects.

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

3 years agoUnreviewed WPE gardening. Updating test baselines after r219663.
zandobersek@gmail.com [Thu, 20 Jul 2017 07:46:15 +0000 (07:46 +0000)]
Unreviewed WPE gardening. Updating test baselines after r219663.

* platform/wpe/crypto/subtle/aes-cbc-cfb-decrypt-malformed-parameters-expected.txt:
* platform/wpe/crypto/subtle/aes-cbc-cfb-encrypt-malformed-parameters-expected.txt:
* platform/wpe/crypto/subtle/aes-export-key-malformed-parameters-expected.txt:
* platform/wpe/crypto/subtle/aes-generate-key-malformed-parameters-expected.txt:
* platform/wpe/crypto/subtle/aes-import-key-malformed-parameters-expected.txt:
* platform/wpe/crypto/subtle/rsa-generate-key-malformed-parameters-expected.txt:
* platform/wpe/crypto/subtle/rsa-import-key-malformed-parameters-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-destroy-persistent-license-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-license-events-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-license-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-destroy-persistent-license-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-clear-encrypted-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-sources-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-events-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-readyState-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multisession-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-src-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-requestmediakeysystemaccess-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-reset-src-after-setmediakeys-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-resetting-src-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-setmediakeys-multiple-times-with-the-same-mediakeys-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-unique-origin-expected.txt:
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession-expected.txt:

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

3 years ago[EME] Push CDMInstance, CDMPrivate and associated types into the Platform layer
zandobersek@gmail.com [Thu, 20 Jul 2017 06:09:56 +0000 (06:09 +0000)]
[EME] Push CDMInstance, CDMPrivate and associated types into the Platform layer
https://bugs.webkit.org/show_bug.cgi?id=174496

Reviewed by Xabier Rodriguez-Calvar.

Move the CDMInstance and CDMPrivate interfaces into the platform layer, enabling
implementations of specific key systems at that level, as well as integration with
the MediaPlayerPrivate stack without any layering violations.

While the platform layer still uses the WebCore namespace, the two interface files
have now been moved under the platform/encryptedmedia/ directory and out of the
Modules/encryptedmedia/ directory where the Web-facing API implementation resides.

The two interfaces integrated closely with the Web-facing enumerations and
dictionaries: MediaKeyMessageType, MediaKeySessionType, MediaKeyStatus,
MediaKeySystemConfiguration, MediaKeySystemCapability, MediaKeysRequirement
and MediaKeysRestrictions. Definitions of these types are also moved to the
platform layer without any changes (apart from renaming), and the previous
types now alias against the types now located in the platform layer.

No new tests -- no change in behavior.

* CMakeLists.txt:
* Modules/encryptedmedia/CDM.cpp:
* Modules/encryptedmedia/CDM.h:
* Modules/encryptedmedia/MediaKeyMessageType.h:
* Modules/encryptedmedia/MediaKeySessionType.h:
* Modules/encryptedmedia/MediaKeyStatus.h:
* Modules/encryptedmedia/MediaKeySystemAccess.cpp:
* Modules/encryptedmedia/MediaKeySystemAccess.h:
* Modules/encryptedmedia/MediaKeySystemConfiguration.h:
* Modules/encryptedmedia/MediaKeySystemMediaCapability.h:
* Modules/encryptedmedia/MediaKeysRequirement.h:
* Modules/encryptedmedia/MediaKeysRestrictions.h:
* platform/encryptedmedia/CDMInstance.h: Renamed from Source/WebCore/Modules/encryptedmedia/CDMInstance.h.
* platform/encryptedmedia/CDMKeyStatus.h: Copied from Source/WebCore/Modules/encryptedmedia/MediaKeyStatus.h.
* platform/encryptedmedia/CDMKeySystemConfiguration.h: Copied from Source/WebCore/Modules/encryptedmedia/MediaKeySystemConfiguration.h.
* platform/encryptedmedia/CDMMediaCapability.h: Copied from Source/WebCore/Modules/encryptedmedia/MediaKeySystemMediaCapability.h.
* platform/encryptedmedia/CDMMessageType.h: Copied from Source/WebCore/Modules/encryptedmedia/MediaKeyMessageType.h.
* platform/encryptedmedia/CDMPrivate.h: Renamed from Source/WebCore/Modules/encryptedmedia/CDMPrivate.h.
* platform/encryptedmedia/CDMRequirement.h: Copied from Source/WebCore/Modules/encryptedmedia/MediaKeysRequirement.h.
* platform/encryptedmedia/CDMRestrictions.h: Copied from Source/WebCore/Modules/encryptedmedia/MediaKeysRestrictions.h.
* platform/encryptedmedia/CDMSessionType.h: Copied from Source/WebCore/Modules/encryptedmedia/MediaKeySessionType.h.

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

3 years agoUnreviewed follow-up to r219674.
zandobersek@gmail.com [Thu, 20 Jul 2017 06:08:28 +0000 (06:08 +0000)]
Unreviewed follow-up to r219674.

* page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp:
Remove the AsyncScrollingCoordinator.h header include that was added by accident.

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

3 years ago[CMake] Clean up Web Crypto build targets
zandobersek@gmail.com [Thu, 20 Jul 2017 05:57:35 +0000 (05:57 +0000)]
[CMake] Clean up Web Crypto build targets
https://bugs.webkit.org/show_bug.cgi?id=174253

Reviewed by Alex Christensen.

Gather the common WebCrypto source files in CMakeLists.txt, including them
in the build unconditionally and instead relying on ENABLE_SUBTLE_CRYPTO
build guards to exclude the code from compilation if the feature is disabled.

PlatformGTK.cmake, PlatformMac.cmake and PlatformWPE.cmake can then remove
duplicated build targets. PlatformMac.cmake still lists all the Mac-specific
Web Crypto build targets.

PlatformGTK.cmake and PlatformWPE.cmake now include GCrypt.cmake if the
USE_GCRYPT variable is enabled. Both ports at the moment enable that variable
though as they by default leverage a libgcrypt-based CrpytoDigest implementation
in the PAL library.

The new GCrypt.cmake file adds the libgcrypt-specific Web Crypto build targets to
the build and also sets up libgcrypt include directiories and libraries.

No new tests -- no change in behavior.

* CMakeLists.txt:
* PlatformGTK.cmake:
* PlatformMac.cmake:
* PlatformWPE.cmake:
* platform/GCrypt.cmake: Added.

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

3 years ago[WebIDL] Remove custom bindings for CommandLineAPIHost
commit-queue@webkit.org [Thu, 20 Jul 2017 05:46:30 +0000 (05:46 +0000)]
[WebIDL] Remove custom bindings for CommandLineAPIHost
https://bugs.webkit.org/show_bug.cgi?id=174642

Patch by Sam Weinig <sam@webkit.org> on 2017-07-19
Reviewed by Joseph Pecoraro.

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSBindingsAllInOne.cpp:
* bindings/js/JSCommandLineAPIHostCustom.cpp: Removed.
Remove JSCommandLineAPIHostCustom.cpp.

* bindings/js/JSDOMConvertObject.h:
(WebCore::JSConverter<IDLObject>::convert):
Add missing JSConverter specialization for IDLObject.

* inspector/CommandLineAPIHost.cpp:
(WebCore::CommandLineAPIHost::inspect):
(WebCore::listenerEntriesFromListenerInfo):
(WebCore::CommandLineAPIHost::inspectedObject):
(WebCore::CommandLineAPIHost::databaseId):
(WebCore::CommandLineAPIHost::storageId):
(WebCore::CommandLineAPIHost::inspectImpl): Deleted.
(WebCore::CommandLineAPIHost::getEventListenersImpl): Deleted.
(WebCore::CommandLineAPIHost::databaseIdImpl): Deleted.
(WebCore::CommandLineAPIHost::storageIdImpl): Deleted.
* inspector/CommandLineAPIHost.h:
* inspector/CommandLineAPIHost.idl:
Replace custom bindings with modern bindings affordances: dictionaries, records and sequences.

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

3 years agoUnreviewed CoordGraphics build fix.
zandobersek@gmail.com [Thu, 20 Jul 2017 05:43:11 +0000 (05:43 +0000)]
Unreviewed CoordGraphics build fix.

* page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp:
(WebCore::ScrollingCoordinatorCoordinatedGraphics::updateNodeViewportConstraints):
This should be defined for the ScrollingCoordinatorCoordinatedGraphics class.
Also fix the setFixedToViewport() call, fishing out the GraphicsLayer object from
the ScrollingStateNode's LayerRepresentation.
(WebCore::AsyncScrollingCoordinator::updateNodeViewportConstraints): Deleted.

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

3 years agoDrop SQLException type
cdumez@apple.com [Thu, 20 Jul 2017 05:23:48 +0000 (05:23 +0000)]
Drop SQLException type
https://bugs.webkit.org/show_bug.cgi?id=174665

Reviewed by Sam Weinig.

Source/WebCore:

Drop SQLException type. We never throw such exception. Also, Firefox
and Chrome no longer expose this type.

* CMakeLists.txt:
* DerivedSources.cpp:
* DerivedSources.make:
* Modules/webdatabase/SQLException.cpp: Removed.
* Modules/webdatabase/SQLException.h: Removed.
* Modules/webdatabase/SQLException.idl: Removed.
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSDOMExceptionHandling.cpp:
(WebCore::createDOMException):
* bindings/js/JSExceptionBase.cpp:
(WebCore::toExceptionBase):
* dom/DOMExceptions.in:

Source/WebInspectorUI:

Use SQLError instead of SQLException, this is what the script should really
use here since it is checking the code of an SQLError.

* .eslintrc:
* UserInterface/Models/DatabaseObject.js:
(WebInspector.DatabaseObject.prototype.executeSQL.queryCallback):
(WebInspector.DatabaseObject.prototype.executeSQL):
(WebInspector.DatabaseObject):

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

3 years agoUnreviewed, tweak a comment above TemporarySelectionOptionIgnoreSelectionChanges...
wenson_hsieh@apple.com [Thu, 20 Jul 2017 02:14:29 +0000 (02:14 +0000)]
Unreviewed, tweak a comment above TemporarySelectionOptionIgnoreSelectionChanges in Editor.cpp.

The comment references the UI process, but it describes an entity in WebCore. This should have been generalized
to instead refer to the client layer in general (i.e. WebKit1 or WebKit2).

* editing/Editor.h:

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

3 years agolint-test-expectations should be run during style checking
jbedard@apple.com [Thu, 20 Jul 2017 00:17:40 +0000 (00:17 +0000)]
lint-test-expectations should be run during style checking
https://bugs.webkit.org/show_bug.cgi?id=173559
<rdar://problem/32854941>

Reviewed by Daniel Bates.

Follow up fix addressing style and a few minor bugs.

* Scripts/webkitpy/layout_tests/models/test_expectations.py:
(TestExpectationParser.__init__): Use lambda x: x instead of str
(TestExpectationsModel.__init__): Make lambda x: x the default argument.
(TestExpectationsModel._already_seen_better_match): Use a temporary variable to
reduce the calls of _shorten_filename, fix minor bug in appending the current
expectation's line number instead of the previous ones, clarify treatment of None
in file-to-line-number mapping.
(TestExpectations._report_warnings): Collapse call.
* Scripts/webkitpy/style/checkers/test_expectations.py:
(TestExpectationsChecker.lint_test_expectations):
* Scripts/webkitpy/style/filereader.py: Re-write comment.
(TextFileReader.process_file): Add comment explaining treatment of None in
file-to-line-number mapping.
(TextFileReader.delete_file): Collapse call.

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

3 years agogetBoundingClientRects not updated for programmatic scrolls
simon.fraser@apple.com [Thu, 20 Jul 2017 00:15:08 +0000 (00:15 +0000)]
getBoundingClientRects not updated for programmatic scrolls
https://bugs.webkit.org/show_bug.cgi?id=174538
rdar://problem/33049012

Reviewed by Tim Horton.
Source/WebCore:

Baidu.com has two event handlers on its <input>, and both query the input location with getBoundingClientRect()
and the current pageYOffset (via jQuery), then try to scroll the input to the top of the screen. The bug is that
programmatic scrolls did not immediately update the layout viewport rect, so the second call to
getBoundingClientRect() would return stale coordinates, triggering an extra scroll.

To fix this, undo the fix for r219320 which tried to keep getBoundingClientRect() current during unstable scroll
updates by adding a shadow layout viewport rect. Instead, almost always update the layout viewport rect on
FrameView, even during unstable visible rect updates, but not if content insets are being changed interactively,
since changing viewport heights cause problems with bottom-fixed elements. Also, we need to compute a new layout
viewport rect in FrameView::updateLayoutViewport() for programmatic scrolls.

However, always updating the layout viewport triggered issues with the scrolling tree. The scrolling state tree
fossilizes layer positions relative to a specific viewport rect, and that relationship has to be maintained.
There are code paths that recompute fixed/sticky viewport constraints when the layout viewport has changed but
we haven't done layout or recomputed layer positions (e.g. updating viewport-constrained layers via
updateScrollCoordinatedLayersAfterFlush()) and in these cases using a new layout viewport for those computations
results in an inconsistent scrolling tree.

Fix this by not updating scrolling constraints every time we have to re-register scrolling nodes.
updateScrollCoordinatedLayersAfterFlush() only needs to update the layer on the scrolling node (to handle
tiled/non-tiled switches), so make updateScrollCoordinatedLayer() a little more fine-grained, and only update
constraints when we've just computed layer geometry. This allows for different scrolling nodes to have
constraints computed at different times, with different layout viewports, which happens.

Two additional fixes were required to make bottom-fixed bars behave correctly.

First, FrameView::computeLayoutViewportOrigin() had a bug where rounding of half-pixel values would cause it to
fall into the if (visualViewport.height() > layoutViewport.height()) clause, but then fail to clamp for
rubber-banding.

Second, the FrameView::unscaledMaximumScrollPosition() was wrong after zooming on iOS, since it uses visibleSize()
which is affected by page scale on iOS only (and the function wants scale-independent values). Fix with a hack that
should be cleaned up via webkit.org/b/174648.

Tested by existing tests.

* page/FrameView.cpp:
(WebCore::FrameView::computeUpdatedLayoutViewportRect):
(WebCore::FrameView::computeLayoutViewportOrigin):
(WebCore::FrameView::setLayoutViewportOverrideRect):
(WebCore::FrameView::updateLayoutViewport):
(WebCore::FrameView::unscaledMaximumScrollPosition):
(WebCore::FrameView::documentToClientOffset):
(WebCore::FrameView::setUnstableLayoutViewportRect): Deleted.
* page/FrameView.h:
* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
(WebCore::AsyncScrollingCoordinator::reconcileScrollingState):
(WebCore::AsyncScrollingCoordinator::reconcileViewportConstrainedLayerPositions):
(WebCore::AsyncScrollingCoordinator::updateNodeLayer):
(WebCore::AsyncScrollingCoordinator::updateNodeViewportConstraints):
(WebCore::AsyncScrollingCoordinator::updateViewportConstrainedNode): Deleted.
* page/scrolling/AsyncScrollingCoordinator.h:
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::operator<<):
* page/scrolling/ScrollingCoordinator.h:
(WebCore::ScrollingCoordinator::reconcileScrollingState):
(WebCore::ScrollingCoordinator::updateNodeLayer):
(WebCore::ScrollingCoordinator::updateNodeViewportConstraints):
(WebCore::ScrollingCoordinator::updateViewportConstrainedNode): Deleted.
* page/scrolling/ScrollingStateFixedNode.cpp:
(WebCore::ScrollingStateFixedNode::updateConstraints):
* page/scrolling/ScrollingStateStickyNode.cpp:
(WebCore::ScrollingStateStickyNode::updateConstraints):
(WebCore::ScrollingStateStickyNode::reconcileLayerPositionForViewportRect):
* page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::commitTreeState):
* page/scrolling/mac/ScrollingTreeFixedNode.mm:
(WebCore::ScrollingTreeFixedNode::updateLayersAfterAncestorChange):
* page/scrolling/mac/ScrollingTreeStickyNode.mm:
(WebCore::ScrollingTreeStickyNode::updateLayersAfterAncestorChange):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateScrollCoordinatedLayersAfterFlush):
(WebCore::RenderLayerCompositor::updateBacking):
(WebCore::RenderLayerCompositor::fixedRootBackgroundLayerChanged):
(WebCore::RenderLayerCompositor::requiresCompositingForPosition):
(WebCore::RenderLayerCompositor::updateScrollCoordinatedStatus):
(WebCore::RenderLayerCompositor::computeFixedViewportConstraints):
(WebCore::RenderLayerCompositor::computeStickyViewportConstraints):
(WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):
(WebCore::RenderLayerCompositor::didAddScrollingLayer):
* rendering/RenderLayerCompositor.h:

Source/WebKit:

Feed ViewportRectStability and ScrollingLayerPositionAction into reconcileScrollingState().

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

LayoutTests:

New results for these tests, reflecting the fact that programmatic scrolls now update
the layout viewport.

Clean up fast/dom/elementFromPoint-relative-to-viewport.html, and land an iOS expectation. The test
uses eventSender.zoomPageOut() which is not expected to work correctly on iOS. It works when tested
manually.

* fast/dom/elementFromPoint-relative-to-viewport-expected.txt:
* fast/dom/elementFromPoint-relative-to-viewport.html:
* platform/ios-wk2/fast/dom/elementFromPoint-relative-to-viewport-expected.txt: Copied from LayoutTests/fast/dom/elementFromPoint-relative-to-viewport-expected.txt.
* platform/ios-wk2/fast/visual-viewport/client-rects-relative-to-layout-viewport-expected.txt:
* platform/ios-wk2/fast/visual-viewport/rtl-zoomed-rects-expected.txt:
* platform/ios-wk2/fast/visual-viewport/zoomed-fixed-scroll-down-then-up-expected.txt:
* platform/ios-wk2/fast/visual-viewport/zoomed-rects-expected.txt:
* platform/ios/fast/visual-viewport/zoomed-fixed-expected.txt:
* platform/ios/fast/visual-viewport/zoomed-fixed-header-and-footer-expected.txt:

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

3 years agoUnreviewed attempt to fix API test failure after r219663.
cdumez@apple.com [Wed, 19 Jul 2017 23:59:22 +0000 (23:59 +0000)]
Unreviewed attempt to fix API test failure after r219663.

The test was hard-coding an exception string and the string has changed slightly
in r219663.

* TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm:
(TEST):

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

3 years agoDon't write file URLs to iOS Pasteboard
megan_gardner@apple.com [Wed, 19 Jul 2017 23:57:38 +0000 (23:57 +0000)]
Don't write file URLs to iOS Pasteboard
https://bugs.webkit.org/show_bug.cgi?id=174647
<rdar://problem/33199730>

Reviewed by Wenson Hsieh.

Source/WebCore:

Tests updated to reflect the changes. We are no longer vending file URLs in Drag & Drop and Copy/Paste.

* editing/ios/EditorIOS.mm:
(WebCore::Editor::writeImageToPasteboard):
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::write):

Tools:

Updating tests to reflect the lack of file URLs for images.

* TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
(checkTypeIdentifierAndIsNotOtherTypeIdentifier):
(checkEstimatedSize):
(TestWebKitAPI::TEST):

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

3 years agoSetting the minimum font size preference doesn’t affect absolute line-height values...
mmaxfield@apple.com [Wed, 19 Jul 2017 23:38:06 +0000 (23:38 +0000)]
Setting the minimum font size preference doesn’t affect absolute line-height values, so lines overlap
https://bugs.webkit.org/show_bug.cgi?id=174406
Source/WebCore:

Reviewed by Simon Fraser.
<rdar://problem/10139227>

Reviewed by NOBODY.

When the minimumFontSize API preference is set, we will increase the font size without increasing
the line height. If the content specifies line-height as an absolute value, there can be two
unfortunate results:

- Adjacent lines in a paragraph can overlap
- If the paragraph (or containin block or whatever) uses overflow: hidden, the first and last lines
can be cut off and potentially indecipherable.

Instead, we should use the minimum font size preference as a signal that we should increase the
line-height as well as the font-size. Eventually, we will want to increase it by an amount
proportional to the increase in font-size (which can be due to minimumFontSize, minimumLogicalFontSize,
text autosizing, etc.). However, because minimumLogicalFontSize is on by default, this would cause
a behavior change on many webpages which use small text, so such a change would be too risky right now.
Instead, we can pretend that minimumFontSize is the only cause that text increases, and use this as the
only signal to boost the corresponding line-height.

Tests: fast/text/line-height-minimumFontSize-text-zoom.html
       fast/text/line-height-minimumFontSize-visual.html
       fast/text/line-height-minimumFontSize-zoom.html
       fast/text/line-height-minimumFontSize.html
       fast/text/line-height-minimumFontSize-autosize.html

* css/StyleBuilderCustom.h:
(WebCore::computeBaseSpecifiedFontSize):
(WebCore::computeLineHeightMultiplierDueToFontSize):
(WebCore::StyleBuilderCustom::applyValueLineHeight):
(WebCore::StyleBuilderCustom::applyValueFill):
(WebCore::StyleBuilderCustom::applyValueStroke):
(WebCore::StyleBuilderCustom::applyValueContent):
* rendering/TextAutoSizing.cpp:

LayoutTests:

<rdar://problem/10139227>

Reviewed by Simon Fraser.

* fast/text/line-height-minimumFontSize-autosize-expected.text: Added.
* fast/text/line-height-minimumFontSize-autosize.html: Added.
* fast/text/line-height-minimumFontSize-expected.txt: Added.
* fast/text/line-height-minimumFontSize-text-zoom-expected.html: Added.
* fast/text/line-height-minimumFontSize-text-zoom.html: Added.
* fast/text/line-height-minimumFontSize-visual-expected.html: Added.
* fast/text/line-height-minimumFontSize-visual.html: Added.
* fast/text/line-height-minimumFontSize-zoom-expected.html: Added.
* fast/text/line-height-minimumFontSize-zoom.html: Added.
* fast/text/line-height-minimumFontSize.html: Added.

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

3 years agoiBooks sometimes crashes when closing a book.
beidson@apple.com [Wed, 19 Jul 2017 20:42:21 +0000 (20:42 +0000)]
iBooks sometimes crashes when closing a book.
<rdar://problem/31180331> and https://bugs.webkit.org/show_bug.cgi?id=174658

Reviewed by Oliver Hunt.

Source/WebKit:

- LegacyCustomProtocolManagerProxy should not reference a WebProcessPool directly.
- LegacyCustomProtocolManagerProxy should invalidate in its destructor.

* UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.cpp:
(WebKit::LegacyCustomProtocolManagerProxy::LegacyCustomProtocolManagerProxy):
(WebKit::LegacyCustomProtocolManagerProxy::~LegacyCustomProtocolManagerProxy):
(WebKit::LegacyCustomProtocolManagerProxy::startLoading):
(WebKit::LegacyCustomProtocolManagerProxy::stopLoading):
(WebKit::LegacyCustomProtocolManagerProxy::invalidate):
(WebKit::LegacyCustomProtocolManagerProxy::wasRedirectedToRequest):
(WebKit::LegacyCustomProtocolManagerProxy::didReceiveResponse):
(WebKit::LegacyCustomProtocolManagerProxy::didLoadData):
(WebKit::LegacyCustomProtocolManagerProxy::didFailWithError):
(WebKit::LegacyCustomProtocolManagerProxy::didFinishLoading):
(WebKit::LegacyCustomProtocolManagerProxy::processDidClose): Deleted.
* UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.h:

* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::NetworkProcessProxy):
(WebKit::NetworkProcessProxy::didClose):
* UIProcess/Network/NetworkProcessProxy.h:
(WebKit::NetworkProcessProxy::processPool):

Tools:

* TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsTest.mm:
(-[ProcessPoolDestroyedDuringLoadingProtocol startLoading]):
(-[ProcessPoolDestroyedDuringLoadingProtocol finishTheLoad]):
(-[ProcessPoolDestroyedDuringLoadingProtocol stopLoading]):
(TestWebKitAPI::TEST):

Add a "spin the runloop X number of times" utility:
* TestWebKitAPI/Utilities.h:
* TestWebKitAPI/cocoa/UtilitiesCocoa.mm:
(TestWebKitAPI::Util::spinRunLoop):

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

3 years agoDOMException should not have its own toString()
cdumez@apple.com [Wed, 19 Jul 2017 20:24:15 +0000 (20:24 +0000)]
DOMException should not have its own toString()
https://bugs.webkit.org/show_bug.cgi?id=174630

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Rebaseline existing tests now that more checks are passing.

* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any-expected.txt:
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.worker-expected.txt:

Source/WebCore:

DOMException should not have its own toString() and should use the one from Error.prototype.toString()
instead:
- https://heycam.github.io/webidl/#idl-DOMException

No new tests, rebaselined existing tests.

* dom/DOMCoreException.idl:

LayoutTests:

Rebaseline existing tests as the exception string is now slightly different.

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

3 years ago[iOS] REGRESSION: Scrubbing media using built-in controls does not pause media
commit-queue@webkit.org [Wed, 19 Jul 2017 20:13:15 +0000 (20:13 +0000)]
[iOS] REGRESSION: Scrubbing media using built-in controls does not pause media
https://bugs.webkit.org/show_bug.cgi?id=174650
<rdar://problem/33401877>

Patch by Antoine Quint <graouts@apple.com> on 2017-07-19
Reviewed by Dean Jackson.

Source/WebCore:

We would only pause when scrubbing on macOS because we only listened to "mousedown" events on the
scrubber's backing <input> element to identify that the user had started interacting with the
scrubber.

Implementing the same technique on iOS required a little more work than just listening to "touchstart"
events on the same element. On top of that, we needed to make sure that we would only respond to
"touchstart" events on the slider's thumb, and not on the track, since only on macOS should the user
be able to click anywhere on the track to scrub. So we turn off pointer-events for the <input> on iOS
only, and turn them back on specifically for the thumb.

There is also some finessing when dealing with touch events where we need to track the identifier of
the touch that started the user interaction. So we keep track of it in an ivar and wait until we get
a "touchend" event where the changedTouches list contains a touch with that same identifier to ensure
the same touch that initiates and ends the scrubbing interaction.

Finally, we fix another issue that was uncovered while turning back on the ScrubbingSupport tests
where we would not trash the cached _value ivar when we initiated scrubbing, which was important since
we would mistakenly use the pre-srubbing value during a scrub.

* Modules/modern-media-controls/controls/slider.css:
(.ios .slider > input):
(.slider > input::-webkit-slider-thumb):
* Modules/modern-media-controls/controls/slider.js:
(Slider.prototype.handleEvent):
(Slider.prototype._handleMousedownEvent):
(Slider.prototype._interactionEndTarget):
(Slider.prototype._handleTouchstartEvent):
(Slider.prototype._valueWillStartChanging):
(Slider.prototype._valueDidStopChanging):
(Slider.prototype._handleMouseupEvent):
(Slider.prototype._handleTouchendEvent):

LayoutTests:

Rebaseline and turn back on all the ScrubberSupport tests on macOS and iOS.

* media/modern-media-controls/scrubber-support/ipad/scrubber-support-drag-expected.txt:
* media/modern-media-controls/scrubber-support/ipad/scrubber-support-drag.html:
* media/modern-media-controls/scrubber-support/scrubber-support-media-api-expected.txt:
* media/modern-media-controls/scrubber-support/scrubber-support-media-api.html:
* platform/ios-simulator/TestExpectations:
* platform/mac/TestExpectations:

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

3 years agoAX: Web page reloaded when a node is labelling multiple childnodes
n_wang@apple.com [Wed, 19 Jul 2017 19:18:40 +0000 (19:18 +0000)]
AX: Web page reloaded when a node is labelling multiple childnodes
https://bugs.webkit.org/show_bug.cgi?id=174655

Reviewed by Chris Fleizach.

Source/WebCore:

When we are asking for the aria-labelledby attribute of a node and its
sibling is also labelled by the same node, we get into an infinite loop
in textUnderElement since we only ignore one child. Added checks for
siblings to avoid such loop.

Test: accessibility/mac/aria-labelledby-multiple-child-crash.html

* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::textUnderElement):

LayoutTests:

* accessibility/mac/aria-labelledby-multiple-child-crash-expected.txt: Added.
* accessibility/mac/aria-labelledby-multiple-child-crash.html: Added.

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

3 years agoUse a cast to work around clang's false -Wobjc-literal-conversion warnings
aestes@apple.com [Wed, 19 Jul 2017 18:16:35 +0000 (18:16 +0000)]
Use a cast to work around clang's false -Wobjc-literal-conversion warnings
https://bugs.webkit.org/show_bug.cgi?id=174631

Reviewed by Dan Bernstein.

Instead of ignoring -Wobjc-literal-conversion, use a cast to work around rdar://problem/33383354.

* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::write):

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

3 years agoMake cross-origin properties enumerable
cdumez@apple.com [Wed, 19 Jul 2017 18:16:21 +0000 (18:16 +0000)]
Make cross-origin properties enumerable
https://bugs.webkit.org/show_bug.cgi?id=174576

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Re-sync tests from upstream and rebaseline to improve test coverage.

* web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:
* web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html:
* web-platform-tests/html/browsers/the-window-object/window-indexed-properties-expected.txt:
* web-platform-tests/html/browsers/the-window-object/window-indexed-properties.html:

Source/WebCore:

Makes cross-origin properties enumerable on Window and Location objects
as per:
- https://github.com/whatwg/html/pull/2777

This simplifies our code quite a bit.

No new tests, updated existing tests.

* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess):
(WebCore::JSDOMWindow::getOwnPropertySlotByIndex):
(WebCore::JSDOMWindow::getOwnPropertyNames):
* bindings/js/JSLocationCustom.cpp:
(WebCore::getOwnPropertySlotCommon):
(WebCore::JSLocation::getOwnPropertyNames):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):

LayoutTests:

Update / rebaseline some tests to reflect behavior change.

* http/tests/security/cross-origin-descriptors-expected.txt:
* http/tests/security/cross-origin-descriptors.html:
* js/dom/getOwnPropertyDescriptor-expected.txt:
* js/resources/getOwnPropertyDescriptor.js:

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

3 years ago[EME] Build failure with Clang-3.8 on InitDataRegistry.cpp
clopez@igalia.com [Wed, 19 Jul 2017 17:27:10 +0000 (17:27 +0000)]
[EME] Build failure with Clang-3.8 on InitDataRegistry.cpp
https://bugs.webkit.org/show_bug.cgi?id=174628

Reviewed by Žan Doberšek.

* Modules/encryptedmedia/InitDataRegistry.cpp:
(WebCore::extractKeyIDsKeyids): Add an explicit cast to unsigned.

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

3 years agolint-test-expectations should be run during style checking
jbedard@apple.com [Wed, 19 Jul 2017 17:09:32 +0000 (17:09 +0000)]
lint-test-expectations should be run during style checking
https://bugs.webkit.org/show_bug.cgi?id=173559
<rdar://problem/32854941>

Reviewed by David Kilzer.

Running the test expectation linter requires reading both files and lines not in the
patch because, for example, deletion of a test can cause a lint failure even though
no test expectations where modified. This means that the linter will occasionally warn
about lines which were not changed in a given patch but whose error is related to a
change made in that patch.

* Scripts/webkitpy/common/system/filesystem_mock.py:
(MockFileSystem.open_text_file_for_reading): Add 'errors' argument to mimic filesystem.
* Scripts/webkitpy/layout_tests/models/test_expectations.py:
(TestExpectationWarning): Added class to pass warnings as an object instead of a string.
(TestExpectationWarning.__init__): Construct warning with file name, line number, line
content, description of the error and the name of the associated test.
(TestExpectationWarning.__str__): Convert to string so that existing printing code works.
(TestExpectationParser.__init__): Pass shorten_filename function to
TestExpectationsParser to add a deleted file to the related_files dictionary.
(TestExpectationParser._check_test_exists): If the test does not exist, add the
missing path to the related_files dictionary.
(TestExpectationLine.__init__): Add related_files dictionary, which tracks
files and line numbers related to this test expectation line. This will allow
tracking linter errors in the style checker occurring across multiple files.
(TestExpectationsModel._already_seen_better_match): Add redundant expectation
lines to related_files dictionary.
(TestExpectations.__init__): Pass self._shorten_filename to TestExpectationParser.
(TestExpectations._report_warnings): Construct warning object instead of string
when adding to warnings list.
* Scripts/webkitpy/port/win.py: Changed logging level form warning to debug to
clean-up log.
* Scripts/webkitpy/style/checker.py:
(ProcessorBase.do_association_check): Add required function for processor classes.
(StyleProcessor):
(StyleProcessor.do_association_check): Run the TestExpectations linter when
checking for errors between associated files.
* Scripts/webkitpy/style/checkers/test_expectations.py:
(TestExpectationsChecker.check_test_expectations): Reflect changed import statements.
(TestExpectationsChecker):
(TestExpectationsChecker._should_log_linter_warning): Given a warning, a dictionary
of modified files, the current working directory and the host, determine if the linter
warning is associated with the changes.
(TestExpectationsChecker.lint_test_expectations): Lint test expectations for the
style checker.
* Scripts/webkitpy/style/filereader.py:
(TextFileReader):
(TextFileReader.__init__): Track modified files in dictionary instead of a counter.
(TextFileReader.file_count): Use dictionary to determine the number of modified files.
(TextFileReader.process_file): Track both the number of files changed and which lines
in those files were changed.
(TextFileReader.do_association_check): Run the processor's association check on all
modified or deleted files processed by TextFileReader.
(TextFileReader.delete_file): Track deleted files in _files dictionary.
(TextFileReader.count_delete_only_file): Deleted.
* Scripts/webkitpy/style/filereader_unittest.py:
(TextFileReaderTest.test_delete_file): Renamed function to reflect new function name.
(TextFileReaderTest.test_count_delete_only_file): Moved to test_delete_file.
* Scripts/webkitpy/style/main.py:
(CheckWebKitStyle.main): When running the style checker on a specific list of files,
explicitly run the association check on the file reader.
* Scripts/webkitpy/style/main_unittest.py:
(ExpectationLinterInStyleCheckerTest): Added to test the TestExpectationLinter now
embedded in the style checker.
(ExpectationLinterInStyleCheckerTest.setUp): Set up the style checker configuration.
(ExpectationLinterInStyleCheckerTest._generate_file_reader): Given a filesystem object,
construct the TextFileReader object with a StyleProcessor used to run style checks on
specific files.
(ExpectationLinterInStyleCheckerTest._generate_testing_host): Generate a host used for
testing the test expectation linter inside the style checker. This host must contain a
mock file system with the basic structure of test expectations.
(ExpectationLinterInStyleCheckerTest.test_no_linter_errors):
(ExpectationLinterInStyleCheckerTest.test_linter_duplicate_line):
(ExpectationLinterInStyleCheckerTest.test_linter_duplicate_line_no_edit):
(ExpectationLinterInStyleCheckerTest.test_linter_deleted_file):
(ExpectationLinterInStyleCheckerTest.test_linter_deleted_file_no_edit):
* Scripts/webkitpy/style/patchreader.py:
(PatchReader.check): Specify which file was deleted, run the association check.
* Scripts/webkitpy/style/patchreader_unittest.py:
(PatchReaderTest.MockTextFileReader.delete_file): Renamed count_delete_only_file.
(PatchReaderTest.MockTextFileReader.do_association_check): Added.
(PatchReaderTest.MockTextFileReader.count_delete_only_file): Renamed delete_file.

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

3 years agoUnreviewed, rolling out r219646.
jlewis3@apple.com [Wed, 19 Jul 2017 16:42:53 +0000 (16:42 +0000)]
Unreviewed, rolling out r219646.

The test added are failing on all platforms

Reverted changeset:

"Setting the minimum font size preference doesn’t affect
absolute line-height values, so lines overlap"
https://bugs.webkit.org/show_bug.cgi?id=174406
http://trac.webkit.org/changeset/219646

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

3 years agoUnreviewed WPE gardening.
zandobersek@gmail.com [Wed, 19 Jul 2017 14:10:02 +0000 (14:10 +0000)]
Unreviewed WPE gardening.

* platform/wpe/TestExpectations:
Unskip a bunch of Web Crypto tests that are passing now that
the underlying implementation has progressed.

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

3 years ago[WTF] Remove unnecessary indirection of WTF::Thread entry point
utatane.tea@gmail.com [Wed, 19 Jul 2017 10:44:57 +0000 (10:44 +0000)]
[WTF] Remove unnecessary indirection of WTF::Thread entry point
https://bugs.webkit.org/show_bug.cgi?id=174291

Reviewed by Mark Lam.

Now wtfThreadEntryPoint is almost the same. Only the difference is function signature due to platform APIs.
We remove ThreadFunctionInvocation indirection in ThreadingPthread.cpp and ThreadingWin.cpp.

Also, ThreadFunctionInvocation keeps a RefPtr to the Thread object. This was previously needed to keep the
Thread object alive until the thread itself could install the ThreadHolder into its thread local storage.
The ThreadHolder has a Ref that keeps the Thread object alive for the lifetime of the thread. Since
Thread::create() now waits for the thread to be initialized before returning and Thread::create() hold a Ref
to the Thread object, we are guaranteed that the Thread object will be alive long enough for it to be installed
in the thread's ThreadHolder, and we no longer need ThreadFunctionInvocation.

And we also simplify ThreadHolder::initialize a bit. Now Thread::create waits for the completion of Thread
initialization. So, after establishing thread handle, we can call ThreadHolder::initialize before completing
Thread initialization.

Also we drop errno.h ifdefs in ThreadingWin.cpp. This is introduced to support WinCE. But now WinCE port is removed.

* WTF.xcodeproj/project.pbxproj:
* wtf/ThreadFunctionInvocation.h: Removed.
* wtf/ThreadHolder.h:
* wtf/ThreadHolderWin.cpp:
(WTF::ThreadHolder::initialize):
* wtf/Threading.cpp:
(WTF::Thread::entryPoint):
(WTF::Thread::create):
(WTF::threadEntryPoint): Deleted.
* wtf/Threading.h:
* wtf/ThreadingPthreads.cpp:
(WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
(WTF::wtfThreadEntryPoint):
(WTF::Thread::establishHandle):
(WTF::Thread::initializeCurrentThreadInternal):
(WTF::Thread::current):
(WTF::Thread::establishPlatformSpecificHandle):
(WTF::Thread::createInternal): Deleted.
(WTF::Thread::establish): Deleted.
* wtf/ThreadingWin.cpp:
(WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
(WTF::Thread::initializeCurrentThreadInternal):
(WTF::wtfThreadEntryPoint):
(WTF::Thread::establishHandle):
(WTF::Thread::current):
(WTF::Thread::establishPlatformSpecificHandle):
(WTF::Thread::createInternal): Deleted.
(WTF::Thread::establish): Deleted.
* wtf/win/MainThreadWin.cpp:
(WTF::initializeMainThreadPlatform):

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

3 years ago[WTF] Implement WTF::ThreadGroup
utatane.tea@gmail.com [Wed, 19 Jul 2017 08:43:57 +0000 (08:43 +0000)]
[WTF] Implement WTF::ThreadGroup
https://bugs.webkit.org/show_bug.cgi?id=174081

Reviewed by Mark Lam.

Source/JavaScriptCore:

Large part of MachineThreads are now removed and replaced with WTF::ThreadGroup.
And SamplingProfiler and others interact with WTF::Thread directly.

* API/tests/ExecutionTimeLimitTest.cpp:
* heap/MachineStackMarker.cpp:
(JSC::MachineThreads::MachineThreads):
(JSC::captureStack):
(JSC::MachineThreads::tryCopyOtherThreadStack):
(JSC::MachineThreads::tryCopyOtherThreadStacks):
(JSC::MachineThreads::gatherConservativeRoots):
(JSC::ActiveMachineThreadsManager::Locker::Locker): Deleted.
(JSC::ActiveMachineThreadsManager::add): Deleted.
(JSC::ActiveMachineThreadsManager::remove): Deleted.
(JSC::ActiveMachineThreadsManager::contains): Deleted.
(JSC::ActiveMachineThreadsManager::ActiveMachineThreadsManager): Deleted.
(JSC::activeMachineThreadsManager): Deleted.
(JSC::MachineThreads::~MachineThreads): Deleted.
(JSC::MachineThreads::addCurrentThread): Deleted.
(): Deleted.
(JSC::MachineThreads::removeThread): Deleted.
(JSC::MachineThreads::removeThreadIfFound): Deleted.
(JSC::MachineThreads::MachineThread::MachineThread): Deleted.
(JSC::MachineThreads::MachineThread::getRegisters): Deleted.
(JSC::MachineThreads::MachineThread::Registers::stackPointer): Deleted.
(JSC::MachineThreads::MachineThread::Registers::framePointer): Deleted.
(JSC::MachineThreads::MachineThread::Registers::instructionPointer): Deleted.
(JSC::MachineThreads::MachineThread::Registers::llintPC): Deleted.
(JSC::MachineThreads::MachineThread::captureStack): Deleted.
* heap/MachineStackMarker.h:
(JSC::MachineThreads::addCurrentThread):
(JSC::MachineThreads::getLock):
(JSC::MachineThreads::threads):
(JSC::MachineThreads::MachineThread::suspend): Deleted.
(JSC::MachineThreads::MachineThread::resume): Deleted.
(JSC::MachineThreads::MachineThread::threadID): Deleted.
(JSC::MachineThreads::MachineThread::stackBase): Deleted.
(JSC::MachineThreads::MachineThread::stackEnd): Deleted.
(JSC::MachineThreads::threadsListHead): Deleted.
* runtime/SamplingProfiler.cpp:
(JSC::FrameWalker::isValidFramePointer):
(JSC::SamplingProfiler::SamplingProfiler):
(JSC::SamplingProfiler::takeSample):
(JSC::SamplingProfiler::noticeCurrentThreadAsJSCExecutionThread):
* runtime/SamplingProfiler.h:
* wasm/WasmMachineThreads.cpp:
(JSC::Wasm::resetInstructionCacheOnAllThreads):

Source/WebCore:

* page/ResourceUsageThread.h:

Source/WebKit:

* Shared/AsyncRequest.h:

Source/WTF:

This patch implements WTF::ThreadGroup. It implements core of JSC::MachineThreads with more reliable way.
JSC::MachineThreads was complicated because of managing dead threads. Each JSC::MachineThreads has its
own TLS with a registered destructor. And everytime a thread dies, the registered TLS destructor is called.
And this destructor will remove the current dying thread from JSC::MachineThreads.

However the above implementation is tricky. And each JSC::MachineThreads requires own TLS space, which is
not considered in WTF's Windows ThreadSpecific implementation. Current design works well since we only
have small number of MachineThreads right now.

Instead, we use more reliable way. After introducing WTF::Thread, WTF::Thread has WTF::Thread::didExit,
which is called when associated TLS (with WTF::Thread) is destroyed. We leverage this mechanism to remove
WTF::Thread from MachineThreads.

This patch introduces WTF::ThreadGroup. It is tightly integrated with WTF::Thread: WTF::Thread knows
ThreadGroups which includes this thread. And WTF::ThreadGroup of course knows WTF::Threads added to it.
WTF::Thread::didExit carefully remove itself from WTF::ThreadGroups.

The most important part of this patch is locking. WTF::Thread can die. And WTF::ThreadGroup can die.
If we take a design using two fine grain locks in WTF::Thread and WTF::ThreadGroup, we easily encounter
dead lock. Consider the following case.

1. When adding WTF::Thread (TH) to WTF::ThreadGroup (THG), we first hold a lock of THG, and hold a lock of TH (locking order is THG -> TH).
2. When TH dies, TH need to hold a lock of TH to iterate THGs. And we hold a lock of THG to unregister TH from it (locking order is TH -> THG).
3. When suspending and resuming THs in THG, we first hold a lock of THG. And then, we hold a lock of TH to suspend and resume it (locking order is THG -> TH).
4. When destroying THG, we need to hold a lock of TH to unregister THG from TH. We can hold a lock of THG before that (locking order is THG -> TH).

Then, it easily causes dead lock. We cannot swap the locking order of (2) since iterating THG requires a lock of TH.
To solve this problem, we use std::shared_ptr and std::weak_ptr.

1. When adding WTF::Thread (TH) to WTF::ThreadGroup (THG), we first hold THG, and hold a lock of TH. (THG -> TH)
2. When TH dies, TH first hold lock of TH. And we use std::weak_ptr<>::lock() to retain non-destructed ThreadGroups.
If some of ThreadGroups are dying, we just ignore them. It is ok because such a ThreadGroup will be destructed. So we do not need to unregister this thread from
such a ThreadGroup. Then, we have Vector<std::shared_ptr<ThreadGroup>>. So we unlock a lock of TH. To unregister a thread from thread group, we first hold a
lock of THG and then hold a lock of TH. Both lifetime is ensured: THG is retained by std::shared_ptr. And TH is itself. (TH), (THG -> TH).
3. When suspending and resuming THs in THG, we first hold a lock of THG. And then, we hold a lock of TH to suspend and resume it (THG -> TH).
4. When destroying THG, we hold a lock of THG. And hold a lock of TH. During holding THG's lock, registered thread never dies because (2) holds THG lock. (THG -> TH).

We also fix suspend and resume locking mechanism to avoid dead lock. We should hold the global lock when suspending and resuming.
If we use per-thread lock, the suspended thread can hold the lock of the other threads. It causes dead lock.

* WTF.xcodeproj/project.pbxproj:
* wtf/AutomaticThread.cpp:
* wtf/CMakeLists.txt:
* wtf/CrossThreadCopier.h:
* wtf/ParkingLot.h:
* wtf/ThreadGroup.cpp: Copied from Source/JavaScriptCore/wasm/WasmMachineThreads.cpp.
(WTF::ThreadGroup::~ThreadGroup):
(WTF::ThreadGroup::add):
(WTF::ThreadGroup::addCurrentThread):
* wtf/ThreadGroup.h: Copied from Source/JavaScriptCore/wasm/WasmMachineThreads.cpp.
(WTF::ThreadGroup::create):
(WTF::ThreadGroup::threads):
(WTF::ThreadGroup::getLock):
(WTF::ThreadGroup::weakFromThis):
* wtf/Threading.cpp:
(WTF::shouldRemoveThreadFromThreadGroup):
(WTF::Thread::didExit):
(WTF::Thread::addToThreadGroup):
(WTF::Thread::removeFromThreadGroup):
* wtf/Threading.h:
* wtf/ThreadingPthreads.cpp:
(WTF::Thread::resume):
(WTF::Thread::getRegisters):
* wtf/ThreadingWin.cpp:
(WTF::Thread::resume):
(WTF::Thread::getRegisters):

Tools:

Add WTF::ThreadGroup tests.

* TestWebKitAPI/CMakeLists.txt:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WTF/ThreadGroup.cpp: Added.
(TestWebKitAPI::testThreadGroup):
(TestWebKitAPI::TEST):

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

3 years agoWebDriver: handle invalid selector errors
carlosgc@webkit.org [Wed, 19 Jul 2017 06:11:50 +0000 (06:11 +0000)]
WebDriver: handle invalid selector errors
https://bugs.webkit.org/show_bug.cgi?id=174619

Reviewed by Brian Burg.

Source/WebDriver:

Add InvalidSelector error and handle it in case of protocol server error.

* CommandResult.cpp:
(WebDriver::CommandResult::CommandResult):
(WebDriver::CommandResult::httpStatusCode):
(WebDriver::CommandResult::errorString):
* CommandResult.h:

Source/WebKit:

We are currently handling only XPathException and only when it's an invalid expression. In the xpath case, the
spec also says "If any item in result is not an element return an error with error code invalid selector.", so
we should also handle TYPE_ERR (The expression could not be converted to return the specified type.). However,
since the spec says "or other error", I think we can simplify this and simply throw InvalidSelector inside the
catch, without checking any specific error. This is causing 14 failures in selenium tests.

§12. Element Retrieval. Step 6: If a DOMException, SyntaxError, XPathException, or other error occurs during the
execution of the element location strategy, return error invalid selector.
https://www.w3.org/TR/webdriver/#dfn-find

* UIProcess/Automation/Automation.json: Add InvalidSelector error.
* UIProcess/Automation/atoms/FindNodes.js:
(tryToFindNode): Raise InvalidSelector in case of error.
* WebProcess/Automation/WebAutomationSessionProxy.cpp:
(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Handle InvalidSelector exceptions.

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

3 years agoWeb Automation: error details not passed to DidEvaluateJavaScriptFunction message...
carlosgc@webkit.org [Wed, 19 Jul 2017 06:10:12 +0000 (06:10 +0000)]
Web Automation: error details not passed to DidEvaluateJavaScriptFunction message when callback was not called before page unload
https://bugs.webkit.org/show_bug.cgi?id=174624

Reviewed by Brian Burg.

There's a variable errorMessage, but it's unused.

* WebProcess/Automation/WebAutomationSessionProxy.cpp:
(WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame): Pass errorMessage instead of String() to DidEvaluateJavaScriptFunction.

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

3 years agoWeb Automation: evaluateJavaScriptFunction should always notify the web process befor...
carlosgc@webkit.org [Wed, 19 Jul 2017 06:08:29 +0000 (06:08 +0000)]
Web Automation: evaluateJavaScriptFunction should always notify the web process before returning early
https://bugs.webkit.org/show_bug.cgi?id=174623

Reviewed by Brian Burg.

It currently returns early if page, frame or scriptObject are nullptr, in which cases the UI process is not
notified. This causes test testShouldNotBeAbleToDoAnythingTheFrameIsDeletedFromUnderUs to hang, because message
DidEvaluateJavaScriptFunction is never sent when the given frame no longer exists. We should send
DidEvaluateJavaScriptFunction with WindowNotFound in case of page is nullptr and FrameNotFound if the frame is
nullptr. The scriptObject early return is actually wrong, because scriptObjectForFrame creates a new script if
there's isn't one for the given frame.

* WebProcess/Automation/WebAutomationSessionProxy.cpp:
(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction):

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

3 years agoWeb Automation: pending evaluate script callbacks are stored with the wrong frame...
carlosgc@webkit.org [Wed, 19 Jul 2017 06:07:00 +0000 (06:07 +0000)]
Web Automation: pending evaluate script callbacks are stored with the wrong frame ID when using the default main frame
https://bugs.webkit.org/show_bug.cgi?id=174622

Reviewed by Brian Burg.

The frameHandle argument is optional in evaluateJavaScriptFunction(), when not provided we pass 0 to the web
process. The proxy gets the web page main frame when received frame ID is 0, but the given frameID is
still used as key of m_webFramePendingEvaluateJavaScriptCallbacksMap and also passed to the javascript function
as argument. I think r203442 was actually a workaround to this bug, making it even more hidden. Both
m_webFrameScriptObjectMap and m_webFramePendingEvaluateJavaScriptCallbacksMap should never have 0 as a
key, since they always use a frame ID, and the frame identifier counter starts at 1. This is causing test
testShouldDetectPageLoadsWhileWaitingOnAnAsyncScriptAndReturnAnError to hang, because when the page is unloaded
and didClearWindowObjectForFrame is called, we try to get the pending callbacks of frame 1, but they were stored
as frame 0 so DidEvaluateJavaScriptFunction message is never sent to the UI process.

* WebProcess/Automation/WebAutomationSessionProxy.cpp:
(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Use always the actual frameID from the WebFrame
we are using.
* WebProcess/Automation/WebAutomationSessionProxy.h: Do not allow 0 as a key of
m_webFramePendingEvaluateJavaScriptCallbacksMap and m_webFrameScriptObjectMap.

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

3 years ago[Xcode] Enable CLANG_WARN_RANGE_LOOP_ANALYSIS
aestes@apple.com [Wed, 19 Jul 2017 05:47:23 +0000 (05:47 +0000)]
[Xcode] Enable CLANG_WARN_RANGE_LOOP_ANALYSIS
https://bugs.webkit.org/show_bug.cgi?id=174631

Reviewed by Tim Horton.

Source/bmalloc:

* Configurations/Base.xcconfig:

Source/JavaScriptCore:

* Configurations/Base.xcconfig:
* b3/B3FoldPathConstants.cpp:
* b3/B3LowerMacros.cpp:
* b3/air/AirAllocateRegistersByGraphColoring.cpp:
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::check):
(JSC::DFG::ByteCodeParser::planLoad):

Source/ThirdParty/ANGLE:

* Configurations/Base.xcconfig:

Source/WebCore:

* Configurations/Base.xcconfig:
* rendering/Grid.cpp:
(WebCore::Grid::insert):
* rendering/RenderTreeAsText.cpp:
(WebCore::write):
* rendering/SimpleLineLayoutCoverage.cpp:
(WebCore::SimpleLineLayout::printSimpleLineLayoutCoverage):

Source/WebCore/PAL:

* Configurations/Base.xcconfig:

Source/WebInspectorUI:

* Configurations/Base.xcconfig:

Source/WebKit:

* Configurations/Base.xcconfig:
* Shared/API/APIArray.cpp:
(API::Array::toStringVector):
* UIProcess/Plugins/PlugInAutoStartProvider.cpp:
(WebKit::PlugInAutoStartProvider::setAutoStartOriginsArray):
* UIProcess/UserContent/WebUserContentControllerProxy.cpp:
(WebKit::WebUserContentControllerProxy::addProcess):
(WebKit::WebUserContentControllerProxy::removeAllUserScripts):
(WebKit::WebUserContentControllerProxy::removeAllUserStyleSheets):
* UIProcess/ios/forms/WKFileUploadPanel.mm:
(-[WKFileUploadPanel presentWithParameters:resultListener:]):
* WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
(WebKit::InjectedBundlePageEditorClient::getPasteboardDataForRange):

Source/WebKitLegacy/mac:

* Configurations/Base.xcconfig:

Source/WTF:

* Configurations/Base.xcconfig:

Tools:

* DumpRenderTree/mac/Configurations/Base.xcconfig:
* MiniBrowser/Configurations/Base.xcconfig:
* MobileMiniBrowser/Configurations/Base.xcconfig:
* TestWebKitAPI/Configurations/Base.xcconfig:
* WebKitTestRunner/Configurations/Base.xcconfig:

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

3 years agoWTF::Thread should have the threads stack bounds.
utatane.tea@gmail.com [Wed, 19 Jul 2017 04:53:59 +0000 (04:53 +0000)]
WTF::Thread should have the threads stack bounds.
https://bugs.webkit.org/show_bug.cgi?id=173975

Reviewed by Mark Lam.

Source/JavaScriptCore:

There is a site in JSC that try to walk another thread's stack.
Currently, stack bounds are stored in WTFThreadData which is located
in TLS. Thus, only the thread itself can access its own WTFThreadData.
We workaround this situation by holding StackBounds in MachineThread in JSC,
but StackBounds should be put in WTF::Thread instead.

This patch adds StackBounds to WTF::Thread. StackBounds information is tightly
coupled with Thread. Thus putting it in WTF::Thread is natural choice.

* heap/MachineStackMarker.cpp:
(JSC::MachineThreads::MachineThread::MachineThread):
(JSC::MachineThreads::MachineThread::captureStack):
* heap/MachineStackMarker.h:
(JSC::MachineThreads::MachineThread::stackBase):
(JSC::MachineThreads::MachineThread::stackEnd):
* runtime/VMTraps.cpp:

Source/WebCore:

When creating WebThread, we first allocate WebCore::ThreadGlobalData in UI thread
and share it with WebThread.
The problem is that WebCore::ThreadGlobalData has CachedResourceRequestInitiators.
It allocates AtomicString, which requires WTFThreadData.

In this patch, we call WTF::initializeThreading() before allocating WebCore::ThreadGlobalData.
And we also call AtomicString::init() before calling WebCore::ThreadGlobalData since
WebCore::ThreadGlobalData allocates AtomicString.

* platform/ios/wak/WebCoreThread.mm:
(StartWebThread):

Source/WTF:

We move StackBounds from WTFThreadData to WTF::Thread.
One important thing is that we should make valid StackBounds
visible to Thread::create() caller. When the caller get
WTF::Thread from Thread::create(), this WTF::Thread should
have a valid StackBounds. But StackBounds information can be
retrived only in the WTF::Thread's thread itself.

We also clean up WTF::initializeThreading. StringImpl::empty()
is now statically initialized by using constexpr constructor.
Thus we do not need to call StringImpl::empty() explicitly here.
And WTF::initializeThreading() does not have any main thread
affinity right now in all the platforms. So we fix the comment
in Threading.h. Then, now, WTF::initializeThreading() is called
in UI thread when using Web thread in iOS.

* wtf/StackBounds.h:
(WTF::StackBounds::emptyBounds):
(WTF::StackBounds::StackBounds):
* wtf/Threading.cpp:
(WTF::threadEntryPoint):
(WTF::Thread::create):
(WTF::Thread::currentMayBeNull):
(WTF::Thread::initialize):
(WTF::initializeThreading):
* wtf/Threading.h:
(WTF::Thread::stack):
* wtf/ThreadingPthreads.cpp:
(WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
(WTF::Thread::current):
(WTF::initializeCurrentThreadEvenIfNonWTFCreated): Deleted.
(WTF::Thread::currentMayBeNull): Deleted.
* wtf/ThreadingWin.cpp:
(WTF::Thread::initializeCurrentThreadEvenIfNonWTFCreated):
(WTF::Thread::initializeCurrentThreadInternal):
(WTF::Thread::current):
* wtf/WTFThreadData.cpp:
(WTF::WTFThreadData::WTFThreadData):
* wtf/WTFThreadData.h:
(WTF::WTFThreadData::stack):

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

3 years agoSetting the minimum font size preference doesn’t affect absolute line-height values...
mmaxfield@apple.com [Wed, 19 Jul 2017 03:54:38 +0000 (03:54 +0000)]
Setting the minimum font size preference doesn’t affect absolute line-height values, so lines overlap
https://bugs.webkit.org/show_bug.cgi?id=174406
<rdar://problem/10139227>

Reviewed by Simon Fraser.

Source/WebCore:

When the minimumFontSize API preference is set, we will increase the font size without increasing
the line height. If the content specifies line-height as an absolute value, there can be two
unfortunate results:

- Adjacent lines in a paragraph can overlap
- If the paragraph (or containin block or whatever) uses overflow: hidden, the first and last lines
can be cut off and potentially indecipherable.

Instead, we should use the minimum font size preference as a signal that we should increase the
line-height as well as the font-size. Eventually, we will want to increase it by an amount
proportional to the increase in font-size (which can be due to minimumFontSize, minimumLogicalFontSize,
text autosizing, etc.). However, because minimumLogicalFontSize is on by default, this would cause
a behavior change on many webpages which use small text, so such a change would be too risky right now.
Instead, we can pretend that minimumFontSize is the only cause that text increases, and use this as the
only signal to boost the corresponding line-height.

Tests: fast/text/line-height-minimumFontSize-text-zoom.html
       fast/text/line-height-minimumFontSize-visual.html
       fast/text/line-height-minimumFontSize-zoom.html
       fast/text/line-height-minimumFontSize.html
       fast/text/line-height-minimumFontSize-autosize.html

* css/StyleBuilderCustom.h:
(WebCore::computeBaseSpecifiedFontSize):
(WebCore::computeLineHeightMultiplierDueToFontSize):
(WebCore::StyleBuilderCustom::applyValueLineHeight):
(WebCore::StyleBuilderCustom::applyValueFill):
(WebCore::StyleBuilderCustom::applyValueStroke):
(WebCore::StyleBuilderCustom::applyValueContent):
* rendering/TextAutoSizing.cpp:

LayoutTests:

* fast/text/line-height-minimumFontSize-autosize-expected.text: Added.
* fast/text/line-height-minimumFontSize-autosize.html: Added.
* fast/text/line-height-minimumFontSize-expected.txt: Added.
* fast/text/line-height-minimumFontSize-text-zoom-expected.html: Added.
* fast/text/line-height-minimumFontSize-text-zoom.html: Added.
* fast/text/line-height-minimumFontSize-visual-expected.html: Added.
* fast/text/line-height-minimumFontSize-visual.html: Added.
* fast/text/line-height-minimumFontSize-zoom-expected.html: Added.
* fast/text/line-height-minimumFontSize-zoom.html: Added.
* fast/text/line-height-minimumFontSize.html: Added.

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

3 years agoMedia controls are missing content in fullscreen when document has scroll offset.
zalan@apple.com [Wed, 19 Jul 2017 01:13:11 +0000 (01:13 +0000)]
Media controls are missing content in fullscreen when document has scroll offset.
https://bugs.webkit.org/show_bug.cgi?id=174644
<rdar://problem/32415323>

Reviewed by Simon Fraser.

If a non-user initiated scrolling (result of resize for example) is processed asynchronously, it might
leapfrog other, programatic scrollings and trigger unintentional scroll offsets (and turn into unwanted clippings).
This patch ensures that both resize and top content inset change are translated into programatic scrolling.

Unable to test full screen video.

* page/FrameView.cpp:
(WebCore::FrameView::setFrameRect):
(WebCore::FrameView::topContentInsetDidChange):

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

3 years ago[Xcode] Enable CLANG_WARN_OBJC_LITERAL_CONVERSION
aestes@apple.com [Wed, 19 Jul 2017 01:05:45 +0000 (01:05 +0000)]
[Xcode] Enable CLANG_WARN_OBJC_LITERAL_CONVERSION
https://bugs.webkit.org/show_bug.cgi?id=174631

Reviewed by Sam Weinig.

Source/bmalloc:

* Configurations/Base.xcconfig:

Source/JavaScriptCore:

* Configurations/Base.xcconfig:

Source/ThirdParty/ANGLE:

* Configurations/Base.xcconfig:

Source/ThirdParty/libwebrtc:

* Configurations/Base.xcconfig:

Source/WebCore:

* Configurations/Base.xcconfig:
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::write):

Source/WebCore/PAL:

* Configurations/Base.xcconfig:

Source/WebInspectorUI:

* Configurations/Base.xcconfig:

Source/WebKit:

* Configurations/Base.xcconfig:

Source/WebKitLegacy/mac:

* Configurations/Base.xcconfig:

Source/WTF:

* Configurations/Base.xcconfig:

Tools:

* DumpRenderTree/mac/Configurations/Base.xcconfig:
* MiniBrowser/Configurations/Base.xcconfig:
* MobileMiniBrowser/Configurations/Base.xcconfig:
* TestWebKitAPI/Configurations/Base.xcconfig:
* WebKitTestRunner/Configurations/Base.xcconfig:

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

3 years agoMerge r219640 into Speedometer 1.0.
rniwa@webkit.org [Wed, 19 Jul 2017 00:33:07 +0000 (00:33 +0000)]
Merge r219640 into Speedometer 1.0.

* Speedometer/resources/benchmark-runner.js:
(BenchmarkRunner.prototype._writeMark):
(BenchmarkRunner.prototype._runTest):
(BenchmarkRunner.prototype._runTestAndRecordResults):

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

3 years agoAlign quirky number parsing with other browsers
commit-queue@webkit.org [Tue, 18 Jul 2017 23:54:44 +0000 (23:54 +0000)]
Align quirky number parsing with other browsers
https://bugs.webkit.org/show_bug.cgi?id=155874

Patch by Ali Juma <ajuma@chromium.org> on 2017-07-18
Reviewed by Simon Fraser.

Source/WebCore:

Parse unit-less non-zero values for animation-duration and transition-duration
as invalid time values in quirks mode.

Test: fast/css/animation-transition-duration-quirksmode.html

* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeAnimationValue):

LayoutTests:

* animations/animation-add-events-in-handler.html:
* fast/css/animation-transition-duration-quirksmode-expected.txt: Added.
* fast/css/animation-transition-duration-quirksmode.html: Added.

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

3 years agoHysteresisActivity cannot be used in the UIProcess
cdumez@apple.com [Tue, 18 Jul 2017 23:32:58 +0000 (23:32 +0000)]
HysteresisActivity cannot be used in the UIProcess
https://bugs.webkit.org/show_bug.cgi?id=174643
<rdar://problem/33086442>

Reviewed by Tim Horton.

Port HysteresisActivity to RunLoop::Timer so that it can safely be used in
the UIProcess as well.

* platform/HysteresisActivity.h:

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

3 years agoAdd performance.mark()s around each test step
commit-queue@webkit.org [Tue, 18 Jul 2017 23:22:46 +0000 (23:22 +0000)]
Add performance.mark()s around each test step
https://bugs.webkit.org/show_bug.cgi?id=174530

Patch by Matt Kotsenas <mattkot@microsoft.com> on 2017-07-18
Reviewed by Ryosuke Niwa.

Add `performance.mark()` around each test step to make analysis
simpler. Now each test step can be investigated via dev tools, ETW, etc.

* Speedometer/resources/benchmark-runner.js:
(BenchmarkRunner.prototype._writeMark):
(BenchmarkRunner.prototype._runTest):
(BenchmarkRunner.prototype._runTestAndRecordResults):

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

3 years agoWeb Inspector: Modernize InjectedScriptSource
joepeck@webkit.org [Tue, 18 Jul 2017 23:19:57 +0000 (23:19 +0000)]
Web Inspector: Modernize InjectedScriptSource
https://bugs.webkit.org/show_bug.cgi?id=173890

Reviewed by Brian Burg.

Source/JavaScriptCore:

* inspector/InjectedScript.h:
Reorder functions to be slightly better.

* inspector/InjectedScriptSource.js:
- Convert to classes named InjectedScript and RemoteObject
- Align InjectedScript's API with the wrapper C++ interfaces
- Move some code to RemoteObject where appropriate (subtype, describe)
- Move some code to helper functions (isPrimitiveValue, isDefined)
- Refactor for readability and modern features
- Remove some unused / unnecessary code

Source/WebCore:

Covered by existing tests.

* inspector/CommandLineAPIModuleSource.js:
(CommandLineAPIImpl.prototype.copy):
(CommandLineAPIImpl.prototype._inspect):
Use RemoteObject, a new parameter.

LayoutTests:

* inspector/model/remote-object-expected.txt:
* inspector/model/stack-trace-expected.txt:
Now that we use classes, implicitly strict mode, the call frame
for evaluate gets tail call eliminated.

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

3 years agoREGRESSION(r218910): Crash when password field changes to text field
rniwa@webkit.org [Tue, 18 Jul 2017 23:08:29 +0000 (23:08 +0000)]
REGRESSION(r218910): Crash when password field changes to text field
https://bugs.webkit.org/show_bug.cgi?id=174560

Reviewed by Zalan Bujtas.

Source/WebCore:

The crash was caused by textMarkerDataForFirstPositionInTextControl accessing a nullptr returned by getOrCreate.
Unfortunately, in order to this fix bug while preserving the exact behavior would require synchronously creating
a renderer for the editing host when the input type changed since we can't create an accessbility object out of
a renderer-less node.

Instead, revert back to pre-r218910 behavior of always using the text control element's axID when notifying
the value change. While this is inconsistent with the way editing commands report content changes, I've since
learned that VoiceOver has code to deal with this exact situation.

Test: accessibility/mac/input-type-change-crash-2.html

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::textMarkerDataForFirstPositionInTextControl):

LayoutTests:

Added a regression test based on the test case provided by Daniel Bates.

* accessibility/mac/input-type-change-crash-2-expected.txt: Added.
* accessibility/mac/input-type-change-crash-2.html: Added.

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

3 years agolldb: Add type summary for StringView
dbates@webkit.org [Tue, 18 Jul 2017 22:54:00 +0000 (22:54 +0000)]
lldb: Add type summary for StringView
https://bugs.webkit.org/show_bug.cgi?id=174637

Reviewed by Sam Weinig.

For debugging convenience, adds a pretty-print type summary for StringView. Evaluating a
StringView object will print output that has the form:

    (WTF::StringView) $4 = { length = 2, contents = 'li' } {
      m_characters = 0x000000011b57abb5 "eeeeeefjh0n"
      m_length = 2
      m_is8Bit = true
      m_underlyingString = 0x0000614000000a90
    }

* lldb/lldb_webkit.py:
(__lldb_init_module): Use WTFStringView_SummaryProvider to format StringView types.
(WTFStringView_SummaryProvider):
(WTFStringViewProvider):
(WTFStringViewProvider.__init__):
(WTFStringViewProvider.is_8bit): Access field StringView.m_is8Bit.
(WTFStringViewProvider.get_length): Access field StringView.m_length.
(WTFStringViewProvider.get_characters): Access field StringView.m_characters.
(WTFStringViewProvider.to_string): Returns the string represented by the StringView.

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

3 years agoButterfly storage need not be initialized for indexing type Undecided.
mark.lam@apple.com [Tue, 18 Jul 2017 22:40:59 +0000 (22:40 +0000)]
Butterfly storage need not be initialized for indexing type Undecided.
https://bugs.webkit.org/show_bug.cgi?id=174516

Reviewed by Saam Barati.

While it's not incorrect to initialize the butterfly storage when the
indexingType is Undecided, it is inefficient as we'll end up initializing
it again later when we convert the storage to a different indexingType.
Some of our code already skips initializing Undecided butterflies.
This patch makes it the consistent behavior everywhere.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::emitAllocateRawObject):
* runtime/JSArray.cpp:
(JSC::JSArray::tryCreateUninitializedRestricted):
* runtime/JSArray.h:
(JSC::JSArray::tryCreate):
* runtime/JSObject.cpp:
(JSC::JSObject::ensureLengthSlow):

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

3 years agoWeb Inspector: adjust wording of "clear when page {navigates -> loads}"
bburg@apple.com [Tue, 18 Jul 2017 22:28:33 +0000 (22:28 +0000)]
Web Inspector: adjust wording of "clear when page {navigates -> loads}"
https://bugs.webkit.org/show_bug.cgi?id=174589
<rdar://problem/32797981>

Reviewed by Joseph Pecoraro.

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

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

3 years agoWeb Inspector: Refactoring: replace InspectorCanvasAgent::CanvasEntry with a helper...
mattbaker@apple.com [Tue, 18 Jul 2017 22:24:54 +0000 (22:24 +0000)]
Web Inspector: Refactoring: replace InspectorCanvasAgent::CanvasEntry with a helper class
https://bugs.webkit.org/show_bug.cgi?id=174311

Reviewed by Devin Rousso.

Source/WebCore:

This patch adds a helper class for tracking canvases and their data. The
current approach of defining a helper structure in the agent's header is
awkward to use and maintain, and won't scale well as more canvas instrumentation
points and data are added.

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
New file.

* inspector/InspectorCanvas.cpp: Added.
(WebCore::InspectorCanvas::create):
(WebCore::InspectorCanvas::InspectorCanvas):
(WebCore::InspectorCanvas::buildObjectForCanvas):
* inspector/InspectorCanvas.h: Added.

* inspector/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::enable):
(WebCore::InspectorCanvasAgent::requestNode):
(WebCore::InspectorCanvasAgent::requestContent):
(WebCore::InspectorCanvasAgent::requestCSSCanvasClientNodes):
(WebCore::InspectorCanvasAgent::resolveCanvasContext):
(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::didCreateCSSCanvas):
(WebCore::InspectorCanvasAgent::didChangeCSSCanvasClientNodes):
(WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext):
(WebCore::InspectorCanvasAgent::didChangeCanvasMemory):
(WebCore::InspectorCanvasAgent::canvasDestroyed):
(WebCore::InspectorCanvasAgent::canvasDestroyedTimerFired):
(WebCore::InspectorCanvasAgent::clearCanvasData):
(WebCore::InspectorCanvasAgent::unbindCanvas):
(WebCore::InspectorCanvasAgent::assertInspectorCanvas):
(WebCore::InspectorCanvasAgent::findInspectorCanvas):
(WebCore::InspectorCanvasAgent::getCanvasEntry): Deleted.
(WebCore::InspectorCanvasAgent::buildObjectForCanvas): Deleted.
* inspector/InspectorCanvasAgent.h:

* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
Remove unused constructor argument.

LayoutTests:

Updated test expectations for new error strings.

* inspector/canvas/css-canvas-clients-expected.txt:
* inspector/canvas/requestContent-2d-expected.txt:
* inspector/canvas/requestNode-expected.txt:
* inspector/canvas/resolveCanvasContext-2d-expected.txt:

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

3 years agoAirLowerAfterRegAlloc may incorrectly use a callee save that's live as a scratch...
sbarati@apple.com [Tue, 18 Jul 2017 22:07:43 +0000 (22:07 +0000)]
AirLowerAfterRegAlloc may incorrectly use a callee save that's live as a scratch register
https://bugs.webkit.org/show_bug.cgi?id=174515
<rdar://problem/33358092>

Reviewed by Filip Pizlo.

AirLowerAfterRegAlloc was computing the set of available scratch
registers incorrectly. It was always excluding callee save registers
from the set of live registers. It did not guarantee that live callee save
registers were not in the set of scratch registers that could
get clobbered. That's incorrect as the shuffling code is free
to overwrite whatever is in the scratch register it gets passed.

* b3/air/AirLowerAfterRegAlloc.cpp:
(JSC::B3::Air::lowerAfterRegAlloc):
* b3/testb3.cpp:
(JSC::B3::functionNineArgs):
(JSC::B3::testShuffleDoesntTrashCalleeSaves):
(JSC::B3::run):
* jit/RegisterSet.h:

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

3 years agoTurn tests at media/modern-media-controls/playback-support back on
graouts@webkit.org [Tue, 18 Jul 2017 21:45:29 +0000 (21:45 +0000)]
Turn tests at media/modern-media-controls/playback-support back on
https://bugs.webkit.org/show_bug.cgi?id=174639

Reviewed by Dean Jackson.

* media/modern-media-controls/playback-support/playback-support-button-click.html:
* platform/ios-simulator/TestExpectations:
* platform/mac/TestExpectations:

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

3 years agoTurn tests at media/modern-media-controls/pip-support back on
graouts@webkit.org [Tue, 18 Jul 2017 21:44:43 +0000 (21:44 +0000)]
Turn tests at media/modern-media-controls/pip-support back on
https://bugs.webkit.org/show_bug.cgi?id=174636

Reviewed by Dean Jackson.

* media/modern-media-controls/pip-support/ipad/pip-support-tap.html:
* platform/ios-simulator/TestExpectations:
* platform/mac-elcapitan/TestExpectations:
* platform/mac/TestExpectations:

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

3 years ago[Curl] Move detail implementation from ResourceHandle to ResourceHandleInternal
commit-queue@webkit.org [Tue, 18 Jul 2017 21:34:01 +0000 (21:34 +0000)]
[Curl] Move detail implementation from ResourceHandle to ResourceHandleInternal
https://bugs.webkit.org/show_bug.cgi?id=174641

After moving stuff from ResourceHandleManager to ResourceHandle on
https://bugs.webkit.org/show_bug.cgi?id=173630, still there're many violation
remains between ResourceHandle and ResourceHandleInternal classes.
Many of implementation detail should be move to ResourceHandleInternal
to improve build speed.

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

* platform/network/ResourceHandle.h:
* platform/network/ResourceHandleInternal.h:
(WebCore::ResourceHandleInternal::ResourceHandleInternal):
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandleInternal::~ResourceHandleInternal):
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::cancel):
(WebCore::ResourceHandleInternal::initialize):
(WebCore::ResourceHandleInternal::applyAuthentication):
(WebCore::ResourceHandleInternal::setupPUT):
(WebCore::ResourceHandleInternal::setupPOST):
(WebCore::ResourceHandleInternal::setupFormData):
(WebCore::ResourceHandle::platformSetDefersLoading):
(WebCore::ResourceHandleInternal::didFinish):
(WebCore::ResourceHandleInternal::didFail):
(WebCore::ResourceHandleInternal::calculateWebTimingInformations):
(WebCore::ResourceHandleInternal::handleLocalReceiveResponse):
(WebCore::ResourceHandleInternal::willPrepareSendData):
(WebCore::ResourceHandleInternal::didReceiveHeaderLine):
(WebCore::ResourceHandleInternal::didReceiveAllHeaders):
(WebCore::ResourceHandleInternal::didReceiveContentData):
(WebCore::ResourceHandleInternal::readCallback):
(WebCore::ResourceHandleInternal::headerCallback):
(WebCore::ResourceHandleInternal::writeCallback):
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
(WebCore::ResourceHandleInternal::dispatchSynchronousJob):
(WebCore::ResourceHandleInternal::handleDataURL):
(WebCore::ResourceHandle::initialize): Deleted.
(WebCore::ResourceHandle::applyAuthentication): Deleted.
(WebCore::ResourceHandle::setupPUT): Deleted.
(WebCore::ResourceHandle::setupPOST): Deleted.
(WebCore::ResourceHandle::setupFormData): Deleted.
(WebCore::ResourceHandle::didFinish): Deleted.
(WebCore::ResourceHandle::didFail): Deleted.
(WebCore::ResourceHandle::calculateWebTimingInformations): Deleted.
(WebCore::ResourceHandle::handleLocalReceiveResponse): Deleted.
(WebCore::ResourceHandle::willPrepareSendData): Deleted.
(WebCore::ResourceHandle::didReceiveHeaderLine): Deleted.
(WebCore::ResourceHandle::didReceiveAllHeaders): Deleted.
(WebCore::ResourceHandle::didReceiveContentData): Deleted.
(WebCore::ResourceHandle::readCallback): Deleted.
(WebCore::ResourceHandle::headerCallback): Deleted.
(WebCore::ResourceHandle::writeCallback): Deleted.
(WebCore::ResourceHandle::dispatchSynchronousJob): Deleted.
(WebCore::ResourceHandle::handleDataURL): Deleted.

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

3 years agoMarked http/tests/cache/disk-cache/redirect-chain-limits.html as flaky.
jlewis3@apple.com [Tue, 18 Jul 2017 21:30:34 +0000 (21:30 +0000)]
Marked http/tests/cache/disk-cache/redirect-chain-limits.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=172662

Unreviewed test gardening.

* platform/wk2/TestExpectations:

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

3 years ago[Xcode] Enable CLANG_WARN_NON_LITERAL_NULL_CONVERSION
aestes@apple.com [Tue, 18 Jul 2017 21:23:52 +0000 (21:23 +0000)]
[Xcode] Enable CLANG_WARN_NON_LITERAL_NULL_CONVERSION
https://bugs.webkit.org/show_bug.cgi?id=174631

Reviewed by Dan Bernstein.

Source/bmalloc:

* Configurations/Base.xcconfig:

Source/JavaScriptCore:

* Configurations/Base.xcconfig:

Source/ThirdParty/ANGLE:

* Configurations/Base.xcconfig:

Source/ThirdParty/libwebrtc:

* Configurations/Base.xcconfig:

Source/WebCore:

* Configurations/Base.xcconfig:

Source/WebCore/PAL:

* Configurations/Base.xcconfig:

Source/WebInspectorUI:

* Configurations/Base.xcconfig:

Source/WebKit:

* Configurations/Base.xcconfig:

Source/WebKitLegacy/mac:

* Configurations/Base.xcconfig:

Source/WTF:

* Configurations/Base.xcconfig:

Tools:

* DumpRenderTree/mac/Configurations/Base.xcconfig:
* MiniBrowser/Configurations/Base.xcconfig:
* MobileMiniBrowser/Configurations/Base.xcconfig:
* TestWebKitAPI/Configurations/Base.xcconfig:
* WebKitTestRunner/Configurations/Base.xcconfig:

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

3 years agoMarked http/tests/cache/disk-cache/disk-cache-vary-cookie.html as flaky.
jlewis3@apple.com [Tue, 18 Jul 2017 21:21:01 +0000 (21:21 +0000)]
Marked http/tests/cache/disk-cache/disk-cache-vary-cookie.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=172662

Unreviewed test gardening.

* platform/wk2/TestExpectations:

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

3 years ago[iOS DnD] [WK1] Add missing calls to WebThreadLock() in some WebView drag-and-drop...
wenson_hsieh@apple.com [Tue, 18 Jul 2017 21:11:05 +0000 (21:11 +0000)]
[iOS DnD] [WK1] Add missing calls to WebThreadLock() in some WebView drag-and-drop SPIs
https://bugs.webkit.org/show_bug.cgi?id=174640
<rdar://problem/33297400>

Reviewed by Tim Horton.

Adds a missing call to WebThreadLock() in -_requestStartDataInteraction:globalPosition:. Previously, this was
invoked at the call site in UIKit, but was removed after some refactoring in UIKit. Instead, we should lock the
web thread here, to match the other WebView drag and drop SPI methods.

This patch also adds a WebThreadLock() call in -_dataInteractionCaretRect. While this is fine today, since all
existing callers of _dataInteractionCaretRect already invoke other methods that WebThreadLock() beforehand, we
should make this robust against future UIKit changes that could make this no longer the case.

* WebView/WebView.mm:
(-[WebView _requestStartDataInteraction:globalPosition:]):
(-[WebView _dataInteractionCaretRect]):

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

3 years ago[macOS] Mouse pointer does not hide during fullscreen playback
commit-queue@webkit.org [Tue, 18 Jul 2017 20:30:45 +0000 (20:30 +0000)]
[macOS] Mouse pointer does not hide during fullscreen playback
https://bugs.webkit.org/show_bug.cgi?id=174638
<rdar://problem/33244399>

Patch by Antoine Quint <graouts@apple.com> on 2017-07-18
Reviewed by Dean Jackson.

Source/WebCore:

Test: media/modern-media-controls/css/webkit-cursor-visibility-auto-hide.html

The user-agent stylesheet sets the "-webkit-cursor-visibility" to "auto-hide" for fullscreen <video>
elements. Since we reset the page styles, including UA styles, on .media-controls-container, we need
to explicitly inherit this style property from the page to ensure the mouse pointer automatically
hides in fullscreen.

* Modules/modern-media-controls/controls/media-controls.css:
(.media-controls-container):

LayoutTests:

Add a test that checks that the "-webkit-cursor-visibility" is set to "auto-hide" when
in fullscreen for the media controls container.

* media/modern-media-controls/css/webkit-cursor-visibility-auto-hide-expected.txt: Added.
* media/modern-media-controls/css/webkit-cursor-visibility-auto-hide.html: Added.
* platform/ios-simulator/TestExpectations:

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

3 years agoWeb Inspector: Add memoryCost to Inspector Protocol objects
drousso@apple.com [Tue, 18 Jul 2017 20:21:31 +0000 (20:21 +0000)]
Web Inspector: Add memoryCost to Inspector Protocol objects
https://bugs.webkit.org/show_bug.cgi?id=174478

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

For non-array and non-object InspectorValue, calculate memoryCost as the sizeof the object,
plus the memoryCost of the data if it is a string.

For array InspectorValue, calculate memoryCost as the sum of the memoryCost of all items.

For object InspectorValue, calculate memoryCost as the sum of the memoryCost of the string
key plus the memoryCost of the InspectorValue for each entry.

Test: TestWebKitAPI/Tests/JavaScriptCore/InspectorValue.cpp

* inspector/InspectorValues.h:
* inspector/InspectorValues.cpp:
(Inspector::InspectorValue::memoryCost):
(Inspector::InspectorObjectBase::memoryCost):
(Inspector::InspectorArrayBase::memoryCost):

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/JavaScriptCore/InspectorValue.cpp: Added.
(TestWebKitAPI::TEST(InspectorValue, MemoryCostNull)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostBoolean)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostDouble)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostInteger)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostString)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostStringEmpty)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostStringNull)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostStringGrowing)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostStringUnicode)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostObject)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostObjectEmpty)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostObjectGrowing)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostArray)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostArrayEmpty)):
(TestWebKitAPI::TEST(InspectorValue, MemoryCostArrayGrowing)):

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

3 years ago[WebIDL] Remove custom bindings for MockContentFilterSettings
commit-queue@webkit.org [Tue, 18 Jul 2017 20:14:31 +0000 (20:14 +0000)]
[WebIDL] Remove custom bindings for MockContentFilterSettings
https://bugs.webkit.org/show_bug.cgi?id=174606

Patch by Sam Weinig <sam@webkit.org> on 2017-07-18
Reviewed by Andy Estes.

Source/WebCore:

* PlatformMac.cmake:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSMockContentFilterSettingsCustom.cpp: Removed.
Remove JSMockContentFilterSettingsCustom.

* testing/MockContentFilterSettings.h:
* testing/MockContentFilterSettings.idl:
Switch from constants to IDL enums to make the bindings and tests simpler.

LayoutTests:

* contentfiltering/allow-after-add-data.html:
* contentfiltering/allow-after-finished-adding-data.html:
* contentfiltering/allow-after-response.html:
* contentfiltering/allow-after-will-send-request.html:
* contentfiltering/allow-empty-document.html:
* contentfiltering/allow-media-document.html:
* contentfiltering/allow-never.html:
* contentfiltering/block-after-add-data-then-allow-unblock.html:
* contentfiltering/block-after-add-data-then-deny-unblock.html:
* contentfiltering/block-after-add-data.html:
* contentfiltering/block-after-finished-adding-data-then-allow-unblock.html:
* contentfiltering/block-after-finished-adding-data-then-deny-unblock.html:
* contentfiltering/block-after-finished-adding-data.html:
* contentfiltering/block-after-response-then-allow-unblock.html:
* contentfiltering/block-after-response-then-deny-unblock.html:
* contentfiltering/block-after-response.html:
* contentfiltering/block-after-will-send-request-then-allow-unblock.html:
* contentfiltering/block-after-will-send-request-then-deny-unblock.html:
* contentfiltering/block-after-will-send-request.html:
* contentfiltering/block-never.html:
* contentfiltering/modify-request-url.html:
* contentfiltering/resources/contentfiltering.js:
* http/tests/contentfiltering/allow-after-redirect.html:
* http/tests/contentfiltering/block-after-redirect.html:
* http/tests/contentfiltering/load-substitute-data-from-appcache.html:
* http/tests/contentfiltering/modify-redirect-request-url.html:
Update tests to use new MockContentFilterSettings enums rather than constants.

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

3 years ago[WebIDL] Replace some custom bindings code in JSCSSStyleDeclarationCustom.cpp with...
weinig@apple.com [Tue, 18 Jul 2017 20:12:15 +0000 (20:12 +0000)]
[WebIDL] Replace some custom bindings code in JSCSSStyleDeclarationCustom.cpp with named getters/setters
https://bugs.webkit.org/show_bug.cgi?id=174529

Reviewed by Chris Dumez.

Source/WebCore:

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSAllInOne.cpp:
Add CSSStyleDeclaration.cpp

* bindings/js/JSCSSStyleDeclarationCustom.cpp:
Move getter / setter / getOwnProperties logic from here to CSSStyleDeclaration.cpp.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateGetOwnPropertySlot):
(GenerateGetOwnPropertySlotByIndex):
(InstanceOverridesGetOwnPropertySlot):
(GenerateHeader):
Remove support for no longer needed [CustomGetOwnPropertySlotAndDescriptor].
Add support for [PutOnlyForSupportedProperties], which allows named setters to behave
a bit more like normal setters by allowing the implementation to note which properties
are supported which in turn, allows the bindings to continue down the normal put path
for unsupported properties. This is necessary to mimic the behavior of CSSStyleDeclaration
which is using named setters in place hundreds of additional properties.

(InstanceOverridesDefineOwnProperty):
Add [DefaultDefineOwnProperty] to allow disabling defineOwnProperty overriding that comes
automatically with named setters. We need this for CSSStyleDeclaration since the named
setter usage modeling real properties, not a dictionary style setter. We may want to
revisit this, and add support for DefineOwnProperty here, but this allows us to maintain
the status quo.

(GenerateDefineOwnProperty):
Fix the case when you have a named setter, an indexed getter, but no indexed setter. In that
case, we would get a compile error, due to the index variable being unused.

* bindings/scripts/IDLAttributes.json:
Remove support for no longer needed [CustomGetOwnPropertySlotAndDescriptor], add
[PutOnlyForSupportedProperties] and [DefaultDefineOwnProperty].

* css/CSSStyleDeclaration.h:
* css/CSSStyleDeclaration.cpp: Added.
(WebCore::CSSStyleDeclaration::namedItem):
(WebCore::CSSStyleDeclaration::setNamedItem):
(WebCore::CSSStyleDeclaration::isSupportedPropertyName):
(WebCore::CSSStyleDeclaration::supportedPropertyNames):
Use standard getter / setter functions to implement CSS property name getting and setting.
Convert from Identifier to AtomicString, which are now bridgeable.

* css/CSSStyleDeclaration.idl:
Add named getter and setter. Remove [CustomGetOwnPropertyNames], [CustomGetOwnPropertySlotAndDescriptor]
and [CustomPut], add [DefaultDefineOwnProperty].

* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: Added.
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h: Added.
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: Added.
* bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h: Added.
* bindings/scripts/test/TestNamedSetterWithIndexedGetter.idl: Added.
* bindings/scripts/test/TestNamedSetterWithIndexedGetterAndSetter.idl: Added.
Add tests for improved behavior when using named setters with variations of indexed getters and setters as well.

LayoutTests:

* fast/dom/CSSStyleDeclaration/cssstyledeclaration-properties-descriptor-expected.txt:
* fast/dom/CSSStyleDeclaration/cssstyledeclaration-properties-descriptor.html:
Update test and result to match standard and other browsers.

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

3 years ago[iOS] WebKit media controls are sometimes shown after exiting full screen on vimeo.com
commit-queue@webkit.org [Tue, 18 Jul 2017 19:59:13 +0000 (19:59 +0000)]
[iOS] WebKit media controls are sometimes shown after exiting full screen on vimeo.com
https://bugs.webkit.org/show_bug.cgi?id=174627
<rdar://problem/33301005>

Patch by Antoine Quint <graouts@apple.com> on 2017-07-18
Reviewed by Dean Jackson, provisionally reviewed by Jeremy Jones.

On iOS 11, both the WebKit media controls and the Vimeo custom controls would appear sometimes when exiting
from fullscreen when the video was playing and the user would tap the X button, which would pause the video
as well as exit fullscreen.

The reason this happens is that the ControlsVisibilitySupport object, which governs whether the WebKit media
controls should be displayed for a given video, woud listen to "pause" and "webkitfullscreenchange" events
and determine whether to show the WebKit media controls. We listen to the "pause" event because when media
pauses, and the video has the "controls" attribute set, we should show the controls and suspend the controls
auto-hide timer. And we're interested in knowing when we enter and exit fullscreen because we want to override
the "controls" attribute not being set when we enter fullscreen.

However, on iOS 11, it appears that the "webkitfullscreenchange" event is not reliably fired as the user enters
and exits fullscreen, which is tracked by webkit.org/b/174626. So, when the user exits fullscreen, we would be
informed of the video being paused via a "pause" event, but not of the video exiting fullscreen. And because
media events are asynchronous, the "pause" event would sometimes be fired before we exited fullscreen, and when
the _updateControls() would run, we would sometimes determine that we are in fullscreen still and determine
that the WebKit media controls should be shown.

Of course, on iOS, the WebKit media controls are not shown and instead we delegate to AVKit to display media controls.
So we could simply disregard this whole logic in iOS. But we choose to instead use the "webkitpresentationmodechanged"
when the presentation mode API is supported, as is the case on iOS 11, to determine changes of media fullscreen state.
This way, should we ever choose to support fullscreen media controls provided by WebKit on iOS, this logic is already
correct and we write less platform-specific code.

This, alas, cannot be tested since we can't force the X button to be tapped within the AVKit fullscreen controls.

* Modules/modern-media-controls/media/controls-visibility-support.js:
(ControlsVisibilitySupport.prototype.get mediaEvents):
* Modules/modern-media-controls/media/media-controller.js:
(MediaController):
* Modules/modern-media-controls/media/start-support.js:
(StartSupport.prototype.get mediaEvents):

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

3 years agoUnreviewed, rolling out r219610.
jlewis3@apple.com [Tue, 18 Jul 2017 19:31:28 +0000 (19:31 +0000)]
Unreviewed, rolling out r219610.

This caused an api failure on all platforms for the test
SnapshotImageLargeAsyncDecoding

Reverted changeset:

"Async image decoding for large images should be disabled
after the first time a tile is painted"
https://bugs.webkit.org/show_bug.cgi?id=174451
http://trac.webkit.org/changeset/219610

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

3 years agoAdd CanvasRenderingContext2D::getTransform
drousso@apple.com [Tue, 18 Jul 2017 18:54:32 +0000 (18:54 +0000)]
Add CanvasRenderingContext2D::getTransform
https://bugs.webkit.org/show_bug.cgi?id=174278

Reviewed by Dean Jackson.

Source/WebCore:

Tests: fast/canvas/2d.getTransform.modification.html
       fast/canvas/2d.getTransform.newobject.html
       fast/canvas/2d.setTransform.matrix.html

* css/DOMMatrixReadOnly.h:
Make DOMMatrixReadOnly::validateAndFixup public so that values of DOMMatrixInit are still
usable without having to construct a DOMMatrixReadOnly. This is beneficial in the case that
an exception is thrown, as the validateAndFixup check can happen without any allocations.

* html/canvas/CanvasRenderingContext2D.idl:
* html/canvas/CanvasRenderingContext2D.h:
* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::getTransform):
(WebCore::CanvasRenderingContext2D::setTransform):

LayoutTests:

* canvas/philip/tests/2d.missingargs.html:
CanvasRenderingContext2D.prototype.setTransform no longer throws an error with no arguments.

* fast/canvas/2d.getTransform.modification-expected.txt: Added.
* fast/canvas/2d.getTransform.modification.html: Added.
* fast/canvas/2d.getTransform.newobject-expected.txt: Added.
* fast/canvas/2d.getTransform.newobject.html: Added.
* fast/canvas/2d.setTransform.matrix-expected.txt: Added.
* fast/canvas/2d.setTransform.matrix.html: Added.

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

3 years ago[Xcode] Enable CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING
aestes@apple.com [Tue, 18 Jul 2017 18:39:08 +0000 (18:39 +0000)]
[Xcode] Enable CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING
https://bugs.webkit.org/show_bug.cgi?id=174631

Reviewed by Darin Adler.

Source/bmalloc:

* Configurations/Base.xcconfig:

Source/JavaScriptCore:

* Configurations/Base.xcconfig:

Source/ThirdParty/ANGLE:

* Configurations/Base.xcconfig:

Source/ThirdParty/libwebrtc:

* Configurations/Base.xcconfig:

Source/WebCore:

* Configurations/Base.xcconfig:

Source/WebCore/PAL:

* Configurations/Base.xcconfig:

Source/WebInspectorUI:

* Configurations/Base.xcconfig:

Source/WebKit:

* Configurations/Base.xcconfig:

Source/WebKitLegacy/mac:

* Configurations/Base.xcconfig:

Source/WTF:

* Configurations/Base.xcconfig:

Tools:

* DumpRenderTree/mac/Configurations/Base.xcconfig:
* MiniBrowser/Configurations/Base.xcconfig:
* MobileMiniBrowser/Configurations/Base.xcconfig:
* TestWebKitAPI/Configurations/Base.xcconfig:
* WebKitTestRunner/Configurations/Base.xcconfig:

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

3 years agoUnreviewed build fix after r219595
jbedard@apple.com [Tue, 18 Jul 2017 17:03:48 +0000 (17:03 +0000)]
Unreviewed build fix after r219595

* platform/graphics/cocoa/FontDescriptionCocoa.cpp:
(WebCore::makeNeverDestroyed): Remove duplicate makeNeverDestroyed definition.
* platform/ios/DragImageIOS.mm:
(WebCore::cascadeForSystemFont): Return correct FontCascade object.
(WebCore::createDragImageForLink): Fix compiler error.

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

3 years agoCleanup: Remove AlternativeTextInfo and use Variant to represent alternative text...
dbates@webkit.org [Tue, 18 Jul 2017 16:51:00 +0000 (16:51 +0000)]
Cleanup: Remove AlternativeTextInfo and use Variant to represent alternative text info details
https://bugs.webkit.org/show_bug.cgi?id=174604

I inadvertently did not commit some of my local changes.

* editing/AlternativeTextController.cpp:
(WebCore::AlternativeTextController::startAlternativeTextUITimer):
(WebCore::AlternativeTextController::stopAlternativeTextUITimer):
(WebCore::AlternativeTextController::applyPendingCorrection):
(WebCore::AlternativeTextController::hasPendingCorrection):
(WebCore::AlternativeTextController::show):
(WebCore::AlternativeTextController::handleCancelOperation):
(WebCore::AlternativeTextController::dismiss):
(WebCore::AlternativeTextController::dismissSoon):
(WebCore::AlternativeTextController::applyAutocorrectionBeforeTypingIfAppropriate):
(WebCore::AlternativeTextController::timerFired):
(WebCore::AlternativeTextController::handleAlternativeTextUIResult):
(WebCore::AlternativeTextController::respondToMarkerAtEndOfWord):
(WebCore::AlternativeTextController::markerDescriptionForAppliedAlternativeText):

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

3 years agoCleanup: Remove AlternativeTextInfo and use Variant to represent alternative text...
dbates@webkit.org [Tue, 18 Jul 2017 16:31:46 +0000 (16:31 +0000)]
Cleanup: Remove AlternativeTextInfo and use Variant to represent alternative text info details
https://bugs.webkit.org/show_bug.cgi?id=174604

Reviewed by Darin Adler.

Remove struct AlternativeTextInfo and represent the alternative text info as instance variables
using Variant to hold either an autocorrection replacement string or the alternative dictation
context.

Not functionality changed. So, no new tests.

* editing/AlternativeTextController.cpp: Remove header Event.h as it is ultimately included by TextEvent.h.
(WebCore::AlternativeTextController::show): Update code as needed.
(WebCore::AlternativeTextController::timerFired): Ditto.
(WebCore::AlternativeTextController::alternativeTextClient): Substitute nullptr for 0.
(WebCore::AlternativeTextController::respondToMarkerAtEndOfWord): Update code as needed.
(WebCore::AutocorrectionAlternativeDetails::create): Deleted.
(WebCore::AutocorrectionAlternativeDetails::replacementString): Deleted.
(WebCore::AutocorrectionAlternativeDetails::AutocorrectionAlternativeDetails): Deleted.
(WebCore::DictationAlternativeDetails::create): Deleted.
(WebCore::DictationAlternativeDetails::dictationContext): Deleted.
(WebCore::DictationAlternativeDetails::DictationAlternativeDetails): Deleted.
* editing/AlternativeTextController.h: Remove header Range.h and forward declare Range. Include header
Position.h and wtf/Variant.h. Sort forward declarations.
(WebCore::AlternativeTextDetails::~AlternativeTextDetails): Deleted.

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

3 years agoRebaseline inspector/model/remote-object.html.
jlewis3@apple.com [Tue, 18 Jul 2017 16:31:13 +0000 (16:31 +0000)]
Rebaseline inspector/model/remote-object.html.
https://bugs.webkit.org/show_bug.cgi?id=173991

Unreviewed test gardening.

* inspector/model/remote-object-expected.txt:

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

3 years ago[JSC] There should be a debug option to dump a compiled RegExp Pattern
msaboff@apple.com [Tue, 18 Jul 2017 16:25:42 +0000 (16:25 +0000)]
[JSC] There should be a debug option to dump a compiled RegExp Pattern
https://bugs.webkit.org/show_bug.cgi?id=174601

Reviewed by Alex Christensen.

Added the debug option dumpCompiledRegExpPatterns which will dump the YarrPattern and related
objects after a regular expression has been compiled.

* runtime/Options.h:
* yarr/YarrPattern.cpp:
(JSC::Yarr::YarrPattern::compile):
(JSC::Yarr::indentForNestingLevel):
(JSC::Yarr::dumpUChar32):
(JSC::Yarr::PatternAlternative::dump):
(JSC::Yarr::PatternTerm::dumpQuantifier):
(JSC::Yarr::PatternTerm::dump):
(JSC::Yarr::PatternDisjunction::dump):
(JSC::Yarr::YarrPattern::dumpPattern):
* yarr/YarrPattern.h:
(JSC::Yarr::YarrPattern::global):

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

3 years agoAsync image decoding for large images should be disabled after the first time a tile...
commit-queue@webkit.org [Tue, 18 Jul 2017 16:03:00 +0000 (16:03 +0000)]
Async image decoding for large images should be disabled after the first time a tile is painted
https://bugs.webkit.org/show_bug.cgi?id=174451

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-07-18
Reviewed by Simon Fraser.

Source/WebCore:

Flashing because of DOM mutation can be fixed by disabling the asynchronous
image decoding after the first time a tile was painted.

We can detect this by consulting the tile repaintCount. If it is zero, then
it is safe to use asynchronous image decoded. If the tile repaintCount is
greater than zero, we are not sure if the renderer rectangle has an image
drawn in it already or not. In this case we have to use the synchronous
image decoding to avoid causing a flash.

Tests: fast/images/async-image-background-change.html
       fast/images/async-image-src-change.html
       http/tests/multipart/multipart-async-image.html

* page/PageOverlayController.cpp:
(WebCore::PageOverlayController::paintContents):
* page/PageOverlayController.h:
* page/linux/ResourceUsageOverlayLinux.cpp:
* page/mac/ServicesOverlayController.h:
* page/mac/ServicesOverlayController.mm:
(WebCore::ServicesOverlayController::Highlight::paintContents):
* platform/graphics/BitmapImage.h:
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::paintGraphicsLayerContents):
* platform/graphics/GraphicsLayer.h:
* platform/graphics/GraphicsLayerClient.h:
(WebCore::GraphicsLayerClient::paintContents):
* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
(WebCore::LayerClient::platformCALayerPaintContents):
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::platformCALayerPaintContents):
* platform/graphics/ca/GraphicsLayerCA.h:
* platform/graphics/ca/PlatformCALayer.h:
* platform/graphics/ca/PlatformCALayerClient.h:
(WebCore::PlatformCALayerClient::platformCALayerRepaintCount):
* platform/graphics/ca/TileCoverageMap.cpp:
(WebCore::TileCoverageMap::platformCALayerPaintContents):
* platform/graphics/ca/TileCoverageMap.h:
* platform/graphics/ca/TileGrid.cpp:
(WebCore::TileGrid::platformCALayerPaintContents):
(WebCore::TileGrid::platformCALayerRepaintCount):
* platform/graphics/ca/TileGrid.h:
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(PlatformCALayer::drawLayerContents):
* platform/graphics/ca/win/PlatformCALayerWin.cpp:
(PlatformCALayer::drawLayerContents):
* platform/graphics/ca/win/PlatformCALayerWinInternal.cpp:
(PlatformCALayerWinInternal::displayCallback):
* platform/graphics/ca/win/WebTiledBackingLayerWin.cpp:
(WebTiledBackingLayerWin::displayCallback):
* platform/graphics/mac/WebLayer.mm:
(-[WebLayer drawInContext:]):
(-[WebSimpleLayer drawInContext:]):
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::decodingModeForImageDraw):
* rendering/RenderElement.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::paintContents):
* rendering/RenderLayerBacking.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::paintContents):
* rendering/RenderLayerCompositor.h:
* testing/Internals.cpp:
(WebCore::imageFromImageElement):
(WebCore::bitmapImageFromImageElement):
(WebCore::Internals::imageFrameIndex):
(WebCore::Internals::setImageFrameDecodingDuration):
(WebCore::Internals::resetImageAnimation):
(WebCore::Internals::isImageAnimating):
(WebCore::Internals::setClearDecoderAfterAsyncFrameRequestForTesting):
(WebCore::Internals::imageDecodeCount):
(WebCore::Internals::setLargeImageAsyncDecodingEnabledForTesting):
* testing/Internals.h:
* testing/Internals.idl:

Source/WebKit:

* Shared/mac/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::drawInContext):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:
(WebKit::CompositingCoordinator::paintContents):
* WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:

Source/WebKitLegacy/win:

* FullscreenVideoController.cpp:
(FullscreenVideoController::LayerClient::platformCALayerPaintContents):
* WebCoreSupport/AcceleratedCompositingContext.cpp:
(AcceleratedCompositingContext::paintContents):
* WebCoreSupport/AcceleratedCompositingContext.h:

LayoutTests:

To test async image decoding for large images, we have to create the <img>
element dynamically so we can listen to the load and webkitImageFrameReady
events and know reliably when to end the test. But with this patch the async
image decoding for large images will be disabled after the first paint.
That means async image decoding for large images will be disabled always
unless we force the async image decoding till the image is painted for the
first time. We use Internals::setLargeImageAsyncDecodingEnabledForTesting()
to force the async image decoding. So painting an image in this case will
require multiple paints; in all of them the async image decoding will be
enabled. But this is okay because it resembles the case where the <img> is
created from a static <img> tag in the HTML file.

For new tests, where we want to make sure that mutating the DOM will not
cause a flash, async image decoding will be forced till the image is drawn
for the first time. After that the async image decoding is enabled but not
forced.

Disable new tests for WK1 because the async image decoding is always enabled
because tiling does not necessarily exist in WK1 . But eventually the async
image decoding for large images will be always disabled for WK1.

* fast/images/async-image-background-change-expected.html: Added.
* fast/images/async-image-background-change.html: Added.
* fast/images/async-image-background-image-repeated.html:
* fast/images/async-image-background-image.html:
* fast/images/async-image-multiple-clients-repaint.html:
* fast/images/async-image-src-change-expected.html: Added.
* fast/images/async-image-src-change.html: Added.
* fast/images/resources/green-400x400.png: Added.
* fast/images/resources/red-100x100.png: Added.
* fast/images/resources/red-400x400.png: Added.
* http/tests/multipart/multipart-async-image-expected.txt: Added.
* http/tests/multipart/multipart-async-image.html: Added.
* platform/ios-wk1/TestExpectations:
* platform/mac-wk1/TestExpectations:

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

3 years agoUnreviewed GTK test gardening
mcatanzaro@igalia.com [Tue, 18 Jul 2017 13:03:25 +0000 (13:03 +0000)]
Unreviewed GTK test gardening

fast/forms/range/input-appearance-range-rtl.html is desired to fail.

* platform/gtk/TestExpectations:

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

3 years ago[GTK] Fix build with Clang after r219605.
clopez@igalia.com [Tue, 18 Jul 2017 11:21:53 +0000 (11:21 +0000)]
[GTK] Fix build with Clang after r219605.
https://bugs.webkit.org/show_bug.cgi?id=166682

Unreviewed build fix.

Clang-3.8 complains with the following error:
non-constant-expression cannot be narrowed from type 'gboolean' (aka 'int') to 'bool' in initializer list [-Wc++11-narrowing]

* glib/SessionHostGlib.cpp: insert an explicit cast to silence this issue.

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

3 years agoDOMException should have its properties on the prototype
cdumez@apple.com [Tue, 18 Jul 2017 07:33:35 +0000 (07:33 +0000)]
DOMException should have its properties on the prototype
https://bugs.webkit.org/show_bug.cgi?id=174597

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any-expected.txt:
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.worker-expected.txt:
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any-expected.txt:
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.worker-expected.txt:
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions-expected.txt:
Rebaseline now that more checks are passing.

* web-platform-tests/url/urlsearchparams-constructor-expected.txt:
* web-platform-tests/url/urlsearchparams-constructor.html:
Re-sync test from upstream as it would start failing otherwise.

Source/WebCore:

DOMException should have its properties on the prototype, as other interfaces:
- https://heycam.github.io/webidl/#idl-DOMException

No new tests, rebaselined existing tests.

* bindings/scripts/CodeGeneratorJS.pm:
(InterfaceRequiresAttributesOnInstance):

LayoutTests:

Rebaseline inspector tests whose output changed slightly now that the
DOMException have moved to the prototype.

* inspector/debugger/setPauseOnExceptions-all-expected.txt:
* inspector/debugger/setPauseOnExceptions-none-expected.txt:
* inspector/debugger/setPauseOnExceptions-uncaught-expected.txt:

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

3 years ago[Curl] Unify ResourceHandleManager into CurlJobManager.
commit-queue@webkit.org [Tue, 18 Jul 2017 07:20:34 +0000 (07:20 +0000)]
[Curl] Unify ResourceHandleManager into CurlJobManager.
https://bugs.webkit.org/show_bug.cgi?id=173991

Use CurlJobManager to make ResourceHandle run in background.
CurlJobManager::start() now accept callback to manage life cycle
of the resource easily in a same context.
Actual management tasks of CurlJobManager is now private class
in CurlJobManager which is better thread safeness.
ResourceHandleManager is deleted at all.

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

* platform/Curl.cmake:
* platform/network/ResourceHandle.h:
* platform/network/curl/CookieJarCurl.cpp:
(WebCore::cookiesForSession):
* platform/network/curl/CurlContext.cpp:
(WebCore::CurlHandle::CurlHandle):
(WebCore::CurlHandle::~CurlHandle):
(WebCore::CurlHandle::errorDescription):
(WebCore::CurlHandle::perform):
(WebCore::CurlHandle::pause):
(WebCore::CurlHandle::appendRequestHeaders):
(WebCore::CurlHandle::appendRequestHeader):
(WebCore::CurlHandle::enableRequestHeaders):
(WebCore::CurlHandle::fetchCookieList):
(WebCore::CurlHandle::getEffectiveURL):
(WebCore::CurlHandle::setPrivateData): Deleted.
(WebCore::CurlHandle::clearRequestHeaders): Deleted.
(WebCore::CurlHandle::getCookieList): Deleted.
(WebCore::CurlHandle::clearCookieList): Deleted.
* platform/network/curl/CurlContext.h:
(WebCore::CurlSList::CurlSList):
(WebCore::CurlSList::~CurlSList):
(WebCore::CurlSList::operator struct curl_slist** ):
(WebCore::CurlSList::head):
(WebCore::CurlSList::isEmpty):
(WebCore::CurlSList::clear):
(WebCore::CurlSList::append):
(WebCore::CurlHandle::errorCode):
(WebCore::CurlHandle::setErrorCode):
(WebCore::CurlHandle::privateData):
(WebCore::CurlHandle::setPrivateData):
* platform/network/curl/CurlDownload.cpp:
(WebCore::CurlDownload::start):
(WebCore::CurlDownload::cancel):
(WebCore::CurlDownload::addHeaders):
(WebCore::CurlDownload::didReceiveData):
(WebCore::CurlDownload::didFail):
(WebCore::CurlDownload::handleCurlMsg): Deleted.
* platform/network/curl/CurlDownload.h:
* platform/network/curl/CurlJobManager.cpp:
(WebCore::CurlJobList::append):
(WebCore::CurlJobList::cancel):
(WebCore::CurlJobList::complete):
(WebCore::CurlJobList::isEmpty):
(WebCore::CurlJobList::withJob):
(WebCore::CurlJobList::withCurlHandle):
(WebCore::CurlJob::invoke):
(WebCore::CurlJobManager::add):
(WebCore::CurlJobManager::cancel):
(WebCore::CurlJobManager::callOnJobThread):
(WebCore::CurlJobManager::startThreadIfNeeded):
(WebCore::CurlJobManager::stopThreadIfNoMoreJobRunning):
(WebCore::CurlJobManager::stopThread):
(WebCore::CurlJobManager::updateJobs):
(WebCore::CurlJobManager::workerThread):
(WebCore::CurlJobManager::CurlJobManager): Deleted.
(WebCore::CurlJobManager::~CurlJobManager): Deleted.
(WebCore::CurlJobManager::remove): Deleted.
(WebCore::CurlJobManager::getActiveCount): Deleted.
(WebCore::CurlJobManager::getPendingCount): Deleted.
(WebCore::CurlJobManager::stopThreadIfIdle): Deleted.
(WebCore::CurlJobManager::updateHandleList): Deleted.
(WebCore::CurlJobManager::addToCurl): Deleted.
(WebCore::CurlJobManager::removeFromCurl): Deleted.
* platform/network/curl/CurlJobManager.h:
(WebCore::CurlJob::CurlJob):
(WebCore::CurlJob::~CurlJob):
(WebCore::CurlJob::operator=):
(WebCore::CurlJob::curlHandle):
(WebCore::CurlJob::ticket):
(WebCore::CurlJob::finished):
(WebCore::CurlJob::error):
(WebCore::CurlJob::cancel):
(WebCore::CurlJobManager::singleton):
(WebCore::CurlJobManager::~CurlJobManager):
(WebCore::CurlJobManager::isActiveJob):
(WebCore::CurlJobManager::runThread): Deleted.
(WebCore::CurlJobManager::setRunThread): Deleted.
* platform/network/curl/ResourceError.h:
(WebCore::ResourceError::ResourceError):
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::~ResourceHandle):
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::cancel):
(WebCore::ResourceHandle::initialize):
(WebCore::ResourceHandle::applyAuthentication):
(WebCore::getFormElementsCount):
(WebCore::ResourceHandle::setupPUT):
(WebCore::ResourceHandle::setupPOST):
(WebCore::ResourceHandle::setupFormData):
(WebCore::ResourceHandle::setHostAllowsAnyHTTPSCertificate):
(WebCore::ResourceHandle::setClientCertificateInfo):
(WebCore::ResourceHandle::platformSetDefersLoading):
(WebCore::ResourceHandle::didFinish):
(WebCore::ResourceHandle::didFail):
(WebCore::ResourceHandle::shouldUseCredentialStorage):
(WebCore::ResourceHandle::didReceiveAuthenticationChallenge):
(WebCore::ResourceHandle::receivedCredential):
(WebCore::ResourceHandle::receivedRequestToContinueWithoutCredential):
(WebCore::ResourceHandle::receivedCancellation):
(WebCore::ResourceHandle::calculateWebTimingInformations):
(WebCore::ResourceHandle::handleLocalReceiveResponse):
(WebCore::ResourceHandle::willPrepareSendData):
(WebCore::ResourceHandle::didReceiveHeaderLine):
(WebCore::ResourceHandle::didReceiveAllHeaders):
(WebCore::ResourceHandle::didReceiveContentData):
(WebCore::ResourceHandle::readCallback):
(WebCore::ResourceHandle::headerCallback):
(WebCore::ResourceHandle::writeCallback):
(WebCore::ResourceHandle::platformLoadResourceSynchronously):
(WebCore::ResourceHandle::dispatchSynchronousJob):
(WebCore::calculateWebTimingInformations): Deleted.
(WebCore::handleLocalReceiveResponse): Deleted.
(WebCore::writeCallback): Deleted.
(WebCore::headerCallback): Deleted.
(WebCore::readCallback): Deleted.
(WebCore::setupFormData): Deleted.
(WebCore::ResourceHandle::handleCurlMsg): Deleted.
* platform/network/curl/ResourceHandleManager.cpp: Removed.
* platform/network/curl/ResourceHandleManager.h: Removed.

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

3 years agoAdd initial implementation of WebDriver process to run the HTTP server
carlosgc@webkit.org [Tue, 18 Jul 2017 07:20:33 +0000 (07:20 +0000)]
Add initial implementation of WebDriver process to run the HTTP server
https://bugs.webkit.org/show_bug.cgi?id=166682

Reviewed by Brian Burg.

.:

Enable WebDriver in the GTK port by default.

* Source/CMakeLists.txt:
* Source/cmake/OptionsGTK.cmake:
* Source/cmake/WebKitFS.cmake:
* Source/cmake/WebKitFeatures.cmake:

Source/WebDriver:

Add WebDriver process that runs the HTTP server and implements an initial set of commands. Most of the code is
cross-platform, only the HTTP server implementation, the code to launch the browser and the communication with
the remote inspector requires platform specific code. This patch includes the GTK port implementation, using
libsoup for the HTTP server, and GLib for launching the browser and communicating with the remote
inspector. This implementation follows the w3c spec (https://www.w3.org/TR/webdriver) as close as possible, but
using the official selenium python tests as reference.

* CMakeLists.txt: Added.
* Capabilities.h: Added.
* CommandResult.cpp: Added.
* CommandResult.h: Added.
* HTTPServer.cpp: Added.
* HTTPServer.h: Added.
* PlatformGTK.cmake: Added.
* Session.cpp: Added.
* Session.h: Added.
* SessionHost.cpp: Added.
* SessionHost.h: Added.
* WebDriverMain.cpp: Added.
* WebDriverService.cpp: Added.
* WebDriverService.h: Added.
* config.h: Added.
* glib/SessionHostGlib.cpp: Added.
* gtk/WebDriverServiceGtk.cpp: Added.
* soup/HTTPServerSoup.cpp: Added.

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

3 years agoWeb Automation: link and partial link queries don't work if text link contains traili...
carlosgc@webkit.org [Tue, 18 Jul 2017 06:28:58 +0000 (06:28 +0000)]
Web Automation: link and partial link queries don't work if text link contains trailing or leading whitespaces
https://bugs.webkit.org/show_bug.cgi?id=174499

Reviewed by Brian Burg.

This is causing test test_Driver_Can_Get_Link_By_Link_Test_Ignoring_Trailing_Whitespace to fail.

* UIProcess/Automation/atoms/FindNodes.js:
(switch): Use normalize-space() in in the links xpath expressions.

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

3 years agoUnreviewed fix to Mac CMake build after r219474.
annulen@yandex.ru [Tue, 18 Jul 2017 05:57:00 +0000 (05:57 +0000)]
Unreviewed fix to Mac CMake build after r219474.

* PlatformMac.cmake:

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

3 years ago[cmake] Set library types before their targets are created
annulen@yandex.ru [Tue, 18 Jul 2017 05:46:55 +0000 (05:46 +0000)]
[cmake] Set library types before their targets are created
https://bugs.webkit.org/show_bug.cgi?id=174600

Reviewed by Michael Catanzaro.

Since r219560 library targets are created before PlatformXXX.cmake
files are processed, however library type must be passed in
add_library() call and cannot be changed afterwards. Set these
variables in OptionsXXX.cmake.

.:

* CMakeLists.txt:
* Source/cmake/OptionsMac.cmake:
* Source/cmake/OptionsWPE.cmake:
* Source/cmake/OptionsWin.cmake:

Source/WebCore:

No new tests needed.

* PlatformMac.cmake:

Source/WebKitLegacy:

* PlatformMac.cmake:
* PlatformWin.cmake:

Source/WTF:

* wtf/PlatformGTK.cmake:
* wtf/PlatformMac.cmake:

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

3 years agoUnreviewed GTK test gardening
mcatanzaro@igalia.com [Tue, 18 Jul 2017 05:19:16 +0000 (05:19 +0000)]
Unreviewed GTK test gardening

* TestExpectations: Skip tests that are clearly intended to have Skip expectations.
* platform/gtk/TestExpectations:
* platform/gtk/crypto/subtle/aes-cbc-cfb-encrypt-malformed-parameters-expected.txt:

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

3 years agoMove USE_AVFOUNDATION definition on Windows to wtf/Platform.h
commit-queue@webkit.org [Tue, 18 Jul 2017 04:06:55 +0000 (04:06 +0000)]
Move USE_AVFOUNDATION definition on Windows to wtf/Platform.h
https://bugs.webkit.org/show_bug.cgi?id=174356

Patch by Yoshiaki Jitsukawa <Yoshiaki.Jitsukawa@sony.com> on 2017-07-17
Reviewed by Brent Fulgham.

Move the definition of USE_AVFOUNDATION on Windows to wtf/platform.h

Source/WebCore:

Rename WebCoreHeaderDetection.h to AVFoundationHeaderDetection.h

* AVFoundationSupport.py: Moved to Source/WTF/AVFoundationSupport.py.
* DerivedSources.make:
* PlatformWin.cmake:
* config.h:
* platform/graphics/ca/win/PlatformCALayerWin.cpp:
* platform/graphics/ca/win/PlatformCALayerWinInternal.cpp:

Source/WTF:

Add a custom command to generate AVFoundationHeaderDetection.h, which
is renamed from WebCoreHeaderDetection.h

* AVFoundationSupport.py: Moved from Source/WebCore/AVFoundationSupport.py.
* wtf/Platform.h:
* wtf/PlatformWin.cmake:

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

3 years ago[WebIDL] Remove custom bindings that require non-caching JS strings
commit-queue@webkit.org [Tue, 18 Jul 2017 03:52:23 +0000 (03:52 +0000)]
[WebIDL] Remove custom bindings that require non-caching JS strings
https://bugs.webkit.org/show_bug.cgi?id=174552

Patch by Sam Weinig <sam@webkit.org> on 2017-07-17
Reviewed by Darin Adler.

Source/WebCore:

Adds two new types, UncachedString and OwnedString (both of which
are simple structs that wrap a String) to communicate to the bindings
layer which function to use when converting to a JS string.

* bindings/IDLTypes.h:
(WebCore::IDLString::isNullValue):
Add overloads of isNullValue for UncachedString and OwnedString.

* bindings/js/JSDOMConvertStrings.h:
(WebCore::JSConverter<IDLDOMString>::convert):
(WebCore::JSConverter<IDLByteString>::convert):
(WebCore::JSConverter<IDLUSVString>::convert):
Add overloads of convert for UncachedString that uses JSC::jsString
and for OwnedString that uses JSC::jsOwnedString.

* bindings/js/JSHTMLCanvasElementCustom.cpp:
(WebCore::JSHTMLCanvasElement::toDataURL): Deleted.
Remove custom binding for toDataURL.

* bindings/js/JSXMLHttpRequestCustom.cpp:
(WebCore::JSXMLHttpRequest::retrieveResponse):
(WebCore::JSXMLHttpRequest::responseText): Deleted.
Remove custom binding for responseText. Replace the caller of the
binding function with a simple conversion that will do the same thing.

* bindings/js/StringAdaptors.h: Added.
Add UncachedString and OwnedString adaptors.

* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::toDataURL):
Move quality conversion here, matching toBlob and the spec. Return a UncachedString
to instruct the bindings to use JSC::jsString and not JSC::jsStringWithCache.

(WebCore::HTMLCanvasElement::toBlob):
Use asNumber() rather than toNumber(), since we just checked that it is a number.

* html/HTMLCanvasElement.h:
Update header to account for returning an UncachedString.

* html/HTMLCanvasElement.idl:
Remove [Custom] and make the signature of toDataURL match the spec (and what we have been doing).

* inspector/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::requestContent):
Update to account for UncachedString.

* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::responseText):
* xml/XMLHttpRequest.h:
Update responseText to return OwnedString. OwnedString instruct the bindings to
use JSC::jsOwnedString and not JSC::jsStringWithCache.

* xml/XMLHttpRequest.idl:
Remove [CustomGetter].

Source/WebKitLegacy/mac:

* DOM/DOMHTMLCanvasElement.mm:
(-[DOMHTMLCanvasElement toDataURL:]):
Update to account for implementation now returning an UncachedString.

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

3 years agoUpdate WebIDL web-platform-tests from upstream
cdumez@apple.com [Tue, 18 Jul 2017 03:35:46 +0000 (03:35 +0000)]
Update WebIDL web-platform-tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=174603

Reviewed by Sam Weinig.

Update WebIDL web-platform-tests from upstream 4c1301113.

* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants-expected.txt.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.html.
(test.):
(test):
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants-expected.txt.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any-expected.txt: Added.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.js: Added.
(test):
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.worker-expected.txt: Added.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-and-prototype.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-expected.txt.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.js: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor.html.
(test):
(forEach):
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.worker-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-expected.txt.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-constructor-behavior.any.worker.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any-expected.txt: Added.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.html: Copied from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.js: Added.
(test):
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.worker-expected.txt: Added.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/DOMException-custom-bindings.any.worker.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.html.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object-expected.txt: Removed.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.html: Removed.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.js: Removed.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker-expected.txt: Removed.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/constructor-object.worker.js: Removed.
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions-expected.txt:
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions.html:
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/w3c-import.log:
* web-platform-tests/WebIDL/ecmascript-binding/legacy-platform-object-expected.txt: Added.
* web-platform-tests/WebIDL/ecmascript-binding/legacy-platform-object.html: Added.
* web-platform-tests/WebIDL/ecmascript-binding/w3c-import.log:

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

3 years agoCleanup: Use OptionSet to represent marker types
dbates@webkit.org [Tue, 18 Jul 2017 02:43:07 +0000 (02:43 +0000)]
Cleanup: Use OptionSet to represent marker types
https://bugs.webkit.org/show_bug.cgi?id=174594

Reviewed by Darin Adler.

Remove class DocumentMarker::MarkerTypes that duplicates most of functionality of OptionSet
and use OptionSet directly to represent a set of marker types.

No functionality changed. So, no new tests.

Source/WebCore:

* dom/Document.cpp:
(WebCore::Document::updateLayout):
* dom/DocumentMarker.h:
(WebCore::DocumentMarker::MarkerTypes::MarkerTypes): Deleted.
(WebCore::DocumentMarker::MarkerTypes::contains): Deleted.
(WebCore::DocumentMarker::MarkerTypes::intersects): Deleted.
(WebCore::DocumentMarker::MarkerTypes::operator==): Deleted.
(WebCore::DocumentMarker::MarkerTypes::add): Deleted.
(WebCore::DocumentMarker::MarkerTypes::remove): Deleted.
(WebCore::DocumentMarker::AllMarkers::AllMarkers): Deleted.
* dom/DocumentMarkerController.cpp:
(WebCore::DocumentMarkerController::possiblyHasMarkers):
(WebCore::DocumentMarkerController::detach):
(WebCore::DocumentMarkerController::removeMarkers):
(WebCore::DocumentMarkerController::addMarker):
(WebCore::DocumentMarkerController::copyMarkers):
(WebCore::DocumentMarkerController::markersFor):
(WebCore::DocumentMarkerController::markersInRange):
(WebCore::DocumentMarkerController::removeMarkersFromList):
(WebCore::DocumentMarkerController::repaintMarkers):
(WebCore::DocumentMarkerController::shiftMarkers):
(DocumentMarkerController::setMarkersActive):
(DocumentMarkerController::hasMarkers):
(DocumentMarkerController::clearDescriptionOnMarkersIntersectingRange):
Update code as needed.

* dom/DocumentMarkerController.h:
(WebCore::DocumentMarkerController::hasMarkers):
Update code as needed.

* editing/AlternativeTextController.cpp:
(WebCore::markerTypesForAutocorrection):
(WebCore::markerTypesForReplacement):
(WebCore::markerTypesForAppliedDictationAlternative):
Marked as inline and returns an OptionSet<DocumentMarker::MarkerType>. It is unnecessary to use NeverDestroyed
in these functions as constructing an OptionSet and copying/moving it is very efficient. Such operations are
effectively equivalent to an integral assignment and copy of an integral value, respectively.

(WebCore::AlternativeTextController::applyAlternativeTextToRange):
(WebCore::AlternativeTextController::respondToUnappliedSpellCorrection):
(WebCore::AlternativeTextController::markCorrection):
Update code as needed.

* editing/AlternativeTextController.h: While I am here, remove some unnecessary #includes and group
forward declarations of structs.
* editing/CompositeEditCommand.cpp:
(WebCore::CompositeEditCommand::replaceTextInNodePreservingMarkers): Update code as needed.
* editing/Editor.cpp:
(WebCore::Editor::updateMarkersForWordsAffectedByEditing): Ditto.
* editing/SpellChecker.cpp:
(WebCore::SpellChecker::didCheckSucceed): Ditto.
* page/ios/FrameIOS.mm:
(WebCore::Frame::interpretationsForCurrentRoot): Ditto.
* testing/Internals.cpp:
(WebCore::markerTypesFrom): Ditto.
(WebCore::Internals::markerCountForNode): Ditto.
(WebCore::Internals::markerAt): Ditto.

Source/WebKitLegacy/ios:

* WebCoreSupport/WebVisiblePosition.mm:
(-[WebVisiblePosition enclosingRangeWithDictationPhraseAlternatives:]): Update code as needed.
(-[WebVisiblePosition enclosingRangeWithCorrectionIndicator]): Ditto.

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

3 years agoWeb Inspector: overlay page highlight doesn't disappear when a page is constantly...
drousso@apple.com [Tue, 18 Jul 2017 02:00:50 +0000 (02:00 +0000)]
Web Inspector: overlay page highlight doesn't disappear when a page is constantly updating
https://bugs.webkit.org/show_bug.cgi?id=174468

Reviewed by Simon Fraser.

Do not allow the PageOverlay to start another fade animation of the same type if one has
already started. As an example, if the PageOverlay is fading out, startFadeOutAnimation
should just return.

* page/PageOverlay.cpp:
(WebCore::PageOverlay::startFadeInAnimation):
(WebCore::PageOverlay::startFadeOutAnimation):

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

3 years agoImprove use of NeverDestroyed
darin@apple.com [Tue, 18 Jul 2017 01:53:34 +0000 (01:53 +0000)]
Improve use of NeverDestroyed
https://bugs.webkit.org/show_bug.cgi?id=174348

Reviewed by Sam Weinig.

Source/JavaScriptCore:

* heap/MachineStackMarker.cpp:
* wasm/WasmMemory.cpp:
Removed unneeded includes of NeverDestroyed.h in files that do not make use
of NeverDestroyed.

Source/WebCore:

* Modules/encryptedmedia/MediaKeySession.cpp: Removed unneeded include of
NeverDestroyed.h.

* Modules/encryptedmedia/legacy/LegacyCDM.cpp:
(WebCore::installedCDMFactories): Use makeNeverDestroyed and a lambda rather
than a separate boolean for initialization.

* Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp:
(WebCore::clearKeyVM): Removed unneeded use of NeverDestroyed to hold a
RefPtr. Simple to just use leakRef instead.

* Modules/gamepad/GamepadManager.cpp: Added an include of NeverDestroyed.h.

* Modules/indexeddb/IDBTransaction.cpp: Removed unneeded include of
NeverDestroyed.h.
* Modules/indexeddb/server/MemoryObjectStore.cpp: Ditto.

* Modules/mediasession/MediaSessionManager.cpp: Moved include of
NeverDestroyed.h here ...
* Modules/mediasession/MediaSessionManager.h: ... from here.

* Modules/mediasource/MediaSourceRegistry.cpp: Moved include of
NeverDestroyed.h here ...
* Modules/mediasource/MediaSourceRegistry.h: ... from here.

* Modules/mediasource/SourceBuffer.cpp: Removed unneeded include of
NeverDestroyed.h.

* Modules/plugins/QuickTimePluginReplacement.h: Initialize
m_scriptObject in the class definition.

* Modules/plugins/QuickTimePluginReplacement.mm:
(WebCore::QuickTimePluginReplacement::supportsMimeType): Use
makeNeverDestroyed and the HashSet constructor instead of a loop.
(WebCore::QuickTimePluginReplacement::supportsFileExtension): Ditto.
(WebCore::QuickTimePluginReplacement::QuickTimePluginReplacement): Did a
slight cleanup of the initializers.
(WebCore::QuickTimePluginReplacement::~QuickTimePluginReplacement): Added
a FIXME; unclear why there is code here at all.

* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::inheritsPresentationalRole): Use
makeNeverDestroyed and the Vector constructor instead of using empty
vector checks and Vector::add. Use std::any_of rather than Vector::contains
since we now are matching against pointers.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateEnumerationImplementationContent): Use const NeverDestroyed.

* bindings/scripts/test/JS/JSTestCallbackInterface.cpp:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/JS/JSTestStandaloneDictionary.cpp:
* bindings/scripts/test/JS/JSTestStandaloneEnumeration.cpp:
Regenerated.

* css/CSSProperty.cpp:
(WebCore::borderDirections): Removed unnecesssary use of NeverDestroyed
for a global object that has a trivial destructor.

* css/ElementRuleCollector.cpp:
(WebCore::leftToRightDeclaration): Removed unneeded use of NeverDestroyed to hold a
Ref. Simple to just use leakRef instead. Also use a lambda instead of an explicit
isEmpty check each time this is called.
(WebCore::rightToLeftDeclaration): Ditto.

* css/makeprop.pl: Removed unneeded include of NeverDestroyed.h and the
uneeded global emptyShorthand. Constructing an empty StylePropertyShorthand
is no less efficient than copying a global empty one was.

* dom/CustomElementReactionQueue.cpp: Added an include of NeverDestroyed.h.

* dom/DOMImplementation.cpp: Removed unneeded include of NeverDestroyed.h.
* dom/InputEvent.cpp: Ditto.

* dom/Microtasks.cpp: Moved include of NeverDestroyed.h here ...
* dom/Microtasks.h: ... from here.

* dom/MutationObserver.cpp: Added an include of NeverDestroyed.h.

* dom/ScopedEventQueue.cpp: Moved include of NeverDestroyed.h here ...
* dom/ScopedEventQueue.h: ... from here. Added Forward.h.

* dom/ScriptElement.cpp:
(WebCore::isLegacySupportedJavaScriptLanguage): Use makeNeverDestroyed
and the HashSet constructor rather than an isEmpty check and a lot of
add function calls. Also removed comments that don't have value any more,
with dubious no longer relevant claims about the behavior of old web browsers.
The function that calls this one already has sufficient comments about why we
hope some day this function can be eliminated.

* dom/SecurityContext.cpp: Removed unneeded include of NeverDestroyed.h.

* dom/make_names.pl:
(printFactoryCppFile): Instead of using a "populate" function, use a function
that creates as HashMap. Then use const auto and makeNeverDestroyed.
(printWrapperFactoryCppFile): Ditto.

* editing/AlternativeTextController.cpp:
(WebCore::markerTypesForAutocorrection): Use makeNeverDestroyed
and the Vector constructor rather than an isEmpty check and a lot of
append function calls.
(WebCore::markerTypesForReplacement): Ditto.
(WebCore::markerTypesForAppliedDictationAlternative): Ditto.

* editing/EditingStyle.cpp:
(WebCore::htmlElementEquivalents): Use const auto, makeNeverDestroyed,
the Vector constructor, and new rather than make_unique. Changed return
type to use const pointers rather than unique_ptr with non-const type.
(WebCore::EditingStyle::conflictsWithImplicitStyleOfElement): Updated
for the above change to htmlElementEquivalents.
(WebCore::htmlAttributeEquivalents): Same approach as above.
(WebCore::EditingStyle::conflictsWithImplicitStyleOfAttributes): Ditto.
(WebCore::elementMatchesAndPropertyIsNotInInlineStyleDecl): Take
references instead of pointers.
(WebCore::EditingStyle::mergeInlineAndImplicitStyleOfElement): Updated
for the above.

* editing/FormatBlockCommand.cpp:
(WebCore::isElementForFormatBlock): Use const auto, makeNeverDestroyed,
and the HashSet constructor rather than isEmpty and a lot of calls to add.
* editing/RemoveFormatCommand.cpp:
(WebCore::isElementForRemoveFormatCommand): Ditto.

* editing/ReplaceSelectionCommand.cpp:
(WebCore::isProhibitedParagraphChild): Use const auto, makeNeverDestroyed,
and a lambda, rather than isEmpty and a lot of calls to add.

* html/Autofill.cpp:
(WebCore::fieldNameMap): Changed return type to be const. Use const auto,
makeNeverDestroyed, a lambda, and an array of values rather than isEmpty
and a lot of calls to add. Stopped doing the ConstructFromLiteral
optimization here. (Easy to add it back if that is a mistake.)

* html/HTMLObjectElement.cpp:
(WebCore::isRecognizedTagName): Use const auto, makeNeverDestroyed, and
a lambda rather than isEmpty.

* html/HTMLStyleElement.cpp: Added include of NeverDestroyed.h.

* html/HTMLVideoElement.cpp: Removed uneeded include of NeverDestroyed.h.

* html/InputType.cpp:
(WebCore::createInputTypeFactoryMap): Replaced the populate function
with this create function.
(WebCore::InputType::create): Use const auto and makeNeverDestroyed
istead of isEmpty. Also put the map right where it is used so it's
not initialized in code path where not needed.

* html/parser/HTMLParserIdioms.cpp: Removed uneeded include of
NeverDestroyed.h.

* inspector/InspectorApplicationCacheAgent.cpp:
(WebCore::InspectorApplicationCacheAgent::networkStateChanged):
Merged into a single line.

* loader/ContentFilter.cpp:
(WebCore::blockedPageURL): Use const auto and makeNeverDestroyed
rather than std::call_once. Since this is a URL and has a non-thread-safe
reference count, this was not thread safe before, so no need to use the
more roundabout and less efficient idiom for its thread safety.

* loader/CrossOriginAccessControl.cpp:
(WebCore::isOnAccessControlResponseHeaderWhitelist): Deleted.
* loader/CrossOriginAccessControl.h: Deleted unused function
isOnAccessControlResponseHeaderWhitelist.

* loader/EmptyClients.cpp: Use leakRef instead of NeverDestroyed<Ref>.

* loader/appcache/ApplicationCacheStorage.cpp: Removed unneeded include of
NeverDestroyed.h.
* page/CaptionUserPreferences.cpp: Ditto.

* page/DebugPageOverlays.cpp:
(WebCore::touchEventRegionColors): Changed the return type to const, since
the callers do not modify the map. Use const auto, makeNeverDestroyed, and
a lambda rather than isEmpty and repeated calls to add.

* page/MainFrame.cpp: Removed unneeded include of NeverDestroyed.h.

* page/MemoryRelease.cpp:
(WebCore::releaseMemory): Use a function directly instead of calling it
inside a lambda.

* page/NavigatorBase.cpp:
(WebCore::NavigatorBase::onLine): Updated to call
NetworkStateNotifier::singleton.

* page/Page.cpp:
(WebCore::allPages): Made this a function instead of a global to use the
normal idiom for such globals.
(WebCore::Page::forEachPage): Updated for change to allPages.
(WebCore::networkStateChanged): Ditto. Also removed a bit of unnecessary
churn by using const AtomicString& instead of AtomicString.
(WebCore::Page::Page): Moved initialization of most data members to the
class definition. Removed initialiation of allPages. Updated the use of
NetworkStateNotifier for its new slightly changed  interface.
(WebCore::Page::~Page): Updated for change to allPages.
(WebCore::Page::clearPreviousItemFromAllPages): Ditto.
(WebCore::Page::updateStyleForAllPagesAfterGlobalChangeInEnvironment): Ditto.
(WebCore::Page::refreshPlugins): Ditto.

* page/Page.h: Moved initialization of most data members here.

* page/PerformanceUserTiming.cpp: Removed many unneded includes.
(WebCore::restrictedMarkFunction): Use const auto, makeNeverDestroyed, and
a lambda instead of isEmpty. Also use an array rather than std::array and
got rid fo the unneeded use of anonymous namespace since this is fine in
the top level WebCore namespace.
(WebCore::clearPerformanceEntries): Tweaked coding style.
(WebCore::UserTiming::mark): Ditto.
(WebCore::UserTiming::findExistingMarkStartTime): Got rid of double hash
table lookup by using find instead of using contains followed by get.
removed unneeded explicit cast to double. Tweaked coding style.
(WebCore::convertToEntrySequence): Tweaked coding style.
(WebCore::getEntrySequenceByName): Deleted.
(WebCore::UserTiming::getMarks): Call get directly instead of getEntrySequenceByName.
(WebCore::UserTiming::getMeasures): Ditto.

* page/RuntimeEnabledFeatures.cpp: Moved include of NeverDestroyed.h here ...
* page/RuntimeEnabledFeatures.h: ... from here. Added Forward.h and Noncopyable.h.

* platform/LocalizedStrings.cpp: Removed unneeded include of NeverDestroyed.h.

* platform/MIMETypeRegistry.cpp:
(WebCore::initializeSupportedImageMIMETypes): Added a missing const for a global
constant array.
(WebCore::initializeSupportedJavaScriptMIMETypes): Ditto.
(WebCore::initializeSupportedNonImageMimeTypes): Ditto.
(WebCore::typesForCommonExtension): Replaced the old mediaMIMETypeMap function
with this one. Moved the common media types array here since it's only used here.
Use const auto, makeNeverDestroyed, and a lambda instead of using an isEmpty check.
Iterate the array using a mdoern for loop. Use HashMap::ensure to avoid the
double hashing that the old code was doing. And moved the code to find an entry
in the map in here from the client functions.
(WebCore::MIMETypeRegistry::getMediaMIMETypeForExtension): Updated to use the
typesForCommonExtension, and changed logic to use this first, and only call
getMIMETypeForExtension for extensions not in the map. This gives the same
result but should be slightly more efficient.
(WebCore::MIMETypeRegistry::getMediaMIMETypesForExtension): Updated to use the
typesForCommonExtension function. Comment about strategy is now in there.
(WebCore::initializeUnsupportedTextMIMETypes): Added a missing const for a global
constant array. Also started using ASCIILiteral.

* platform/MainThreadSharedTimer.cpp: Moved include of NeverDestroyed.h here ...
* platform/MainThreadSharedTimer.h: ... from here. Added Forward.h.

* platform/SchemeRegistry.cpp:
(WebCore::add): Added helper functions to keep code below simpler.
(WebCore::makeNeverDestroyedSchemeSet): Ditto.
(WebCore::allBuiltinSchemes): Use const auto, makeNeverDestroyed, a lambda,
and the helper functions above, rather than isEmpty.
(WebCore::builtinLocalURLSchemes): Use const auto, makeNeverDestroyed, and
the HashSet constructor instead of isEmpty and add calls. Also changed the
return type to be const.
(WebCore::localURLSchemes): Copy the map using assignment instead of an
isEmpty function and a loop with calls to add.
(WebCore::builtinSecureSchemes): Use const auto, makeNeverDestroyed, and
the Vector constructor rather than isEmpty, repeated calls to append,
and shrinkToFit.
(WebCore::secureSchemes): Use auto and makeNeverDestroyedSchemeSet rather
than isEmpty and repeated calls to add.
(WebCore::builtinSchemesWithUniqueOrigins): More of the same.
(WebCore::schemesWithUniqueOrigins): Ditto.
(WebCore::builtinEmptyDocumentSchemes): Ditto.
(WebCore::emptyDocumentSchemes): Ditto.
(WebCore::schemesForbiddenFromDomainRelaxation): Ditto.
(WebCore::builtinCanDisplayOnlyIfCanRequestSchemes): Ditto.
(WebCore::canDisplayOnlyIfCanRequestSchemes): Ditto.
(WebCore::builtinCORSEnabledSchemes): Ditto.
(WebCore::CORSEnabledSchemes): Ditto.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsLocal): Replaced check for
empty string with check for null string, since that's slightly more efficient
for non-null, non-empty strings, and the hash table can handle empty strings
just fine.
(WebCore::SchemeRegistry::registerURLSchemeAsNoAccess): Added null check here.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsNoAccess): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsDisplayIsolated): Ditto.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsDisplayIsolated): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsSecure): Ditto.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsSecure): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsEmptyDocument): Ditto.
(WebCore::SchemeRegistry::shouldLoadURLSchemeAsEmptyDocument): Ditto.
(WebCore::SchemeRegistry::setDomainRelaxationForbiddenForURLScheme): Ditto.
(WebCore::SchemeRegistry::isDomainRelaxationForbiddenForURLScheme): Ditto.
(WebCore::SchemeRegistry::canDisplayOnlyIfCanRequest): Ditto.
(WebCore::SchemeRegistry::registerAsCanDisplayOnlyIfCanRequest): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsNotAllowingJavascriptURLs): Ditto.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsNotAllowingJavascriptURLs): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsAllowingLocalStorageAccessInPrivateBrowsing): Ditto.
(WebCore::SchemeRegistry::allowsLocalStorageAccessInPrivateBrowsing): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsAllowingDatabaseAccessInPrivateBrowsing): Ditto.
(WebCore::SchemeRegistry::allowsDatabaseAccessInPrivateBrowsing): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsCORSEnabled): Ditto.
(WebCore::SchemeRegistry::shouldTreatURLSchemeAsCORSEnabled): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsBypassingContentSecurityPolicy): Ditto.
(WebCore::SchemeRegistry::removeURLSchemeRegisteredAsBypassingContentSecurityPolicy): Ditto.
(WebCore::SchemeRegistry::schemeShouldBypassContentSecurityPolicy): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsAlwaysRevalidated): Ditto.
(WebCore::SchemeRegistry::shouldAlwaysRevalidateURLScheme): Ditto.
(WebCore::SchemeRegistry::registerURLSchemeAsCachePartitioned): Ditto.
(WebCore::SchemeRegistry::shouldPartitionCacheForURLScheme): Ditto.
(WebCore::SchemeRegistry::isUserExtensionScheme): Tweaked #if a bit.
(WebCore::SchemeRegistry::isBuiltinScheme): Added null check.

* platform/cocoa/WebVideoFullscreenModelVideoElement.mm:
(WebVideoFullscreenModelVideoElement::observedEventNames): Use const auto,
makeNeverDestroyed, and the Vector constructor rather than a call to size
and then append eacn time this funciton is called.

* platform/gamepad/cocoa/GameControllerGamepadProvider.h: Moved include of
NeverDestroyed.h from here ...
* platform/gamepad/cocoa/GameControllerGamepadProvider.mm: ... to here.

* platform/gamepad/mac/HIDGamepadProvider.cpp: Moved include of
NeverDestroyed.h here ...
* platform/gamepad/mac/HIDGamepadProvider.h: ... from here.

* platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::hasValidAverageCharWidth): Use const auto,
makeNeverDestroyed, and the HashSet constructor.

* platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::transformColorSpace): Removed unneeded use of
NeverDestroyed<Vector<int>> here, instead using const std::array.

* platform/graphics/ImageBuffer.h: Changed platformTransformColorSpace to take
const std::array<uint8_t, 256>& instead of const Vector<int>&, since the whole
pointer of the argument is that it's a table to map bytes onto other bytes.

* platform/graphics/MediaPlaybackTarget.h: Removed unneeded include of
NeverDestroyed.h, unneeded unused noMediaPlaybackTargetContext function,
and unneeded include of MediaPlaybackTargetContext.h, forward declaring instead.
Made most functions in this class pure virtual instead of having default
implementations.

* platform/graphics/avfoundation/MediaPlaybackTargetMac.h: Added include
of MediaPlaybackTargetContext.h now that it was removed above.

* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
(WebCore::MediaPlayerPrivateAVFoundation::staticMIMETypeList): Use const auto,
makeNeverDestroyed, and the HashSet constructor.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::isAvailable): Reversed the sense
of the boolean logic here to make this simpler and easier to read.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::getSupportedTypes): Changed
the implementation here, which empties out the passed in hash set, to use
the clear function rather than assignment from a global empty hash set. Added
a FIXME because it seems peculiar that this would be considered OK.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::supportsType): Used ? : to make
this a little more terse; I think it's clearer.

* platform/graphics/cairo/ImageBufferCairo.cpp:
(WebCore::ImageBuffer::platformTransformColorSpace): Updated for change to
argument type.

* platform/graphics/cg/ImageDecoderCG.cpp: Removed unneeded include of
NeverDestroyed.h.
(WebCore::appendImageSourceOption): Streamlined code using auto with
adoptCF; there is no need to write out the type of the RetainPtr.
(WebCore::imageSourceOptions): Instead of NeverDestroyed<RetainPtr>, just use
const auto and leakRef.
(WebCore::imageSourceAsyncOptions): Ditto.

* platform/graphics/gtk/GdkCairoUtilities.cpp:
(WebCore::getDefaultCairoFontOptions): Instead of using LazyNeverDestroyed
on a pointer, just use a global pointer. There is no need to use any kind
of NeverDestroyed on a type with a trivial destructor such as a pointer.

* platform/graphics/ios/FontCacheIOS.mm:
(WebCore::platformFontWithFamilySpecialCase): Instead of using
NeverDestroyed<RetainPtr> just use a raw pointer global.
* platform/graphics/mac/FontCacheMac.mm:
(WebCore::platformFontWithFamilySpecialCase): Ditto.

* platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
(WebCore::createFileTypesSet): Return the HashSet instead of adding to it.
Use Objective-C for/in syntax for an NSArray, not C++ for syntax, although
it seems the C++ syntax was working fine.
(WebCore::mimeCommonTypesCache): Fixed return type so we won't copy the
HashMap every time this function is called. Use const auto and makeNeverDestroyed
instead of using a boolean to do one time initialization.
(WebCore::mimeModernTypesCache): Ditto.
(WebCore::MediaPlayerPrivateQTKit::disableUnsupportedTracks): Marked a
constant array const.

* platform/ios/Device.cpp:
(WebCore::deviceClass): Use a lambda to initialize a variable here instead
of using std::call_once. This function does not need to be thread safe.
(WebCore::deviceName): Use const NeverDestroyed instead of LazyNeverDestroyed
and std::call_once. This function does not need to be thread safe.

* platform/ios/DragImageIOS.mm: Make defaultLinkIndicatorOptions be a
constant instead of a variable.
(WebCore::cascadeForSystemFont): Added helper function.
(WebCore::createDragImageForLink): Use const auto and makeNeverDestroyed
instead of LazyNeverDestroyed and dispatch_once. This code does not need
to be thread safe since its arguments include, for example, a DOM element.

* platform/ios/LegacyTileLayerPool.h: Removed unneeded include of
NeverDestroyed.h.

* platform/ios/QuickLook.mm:
(WebCore::QLPreviewGetSupportedMIMETypesSet): Use a global raw pointer
instead of NeverDestroyed<RetainPtr<NSSet>>.
(WebCore::createQLPreviewProtocol): Deleted.
(WebCore::QLPreviewProtocol): Use a global raw pointer instead of
a NeverDestroyed<Vector<char>>. It's cleaner to use fastStrdup instead
of appending to an array, and less wasteful of memory too.

* platform/ios/WebCoreMotionManager.mm: Removed unneeded include of
NeverDestroyed.h.
* platform/ios/WebSQLiteDatabaseTrackerClient.h: Ditto.
* platform/mac/DragImageMac.mm: Ditto.
* platform/mediastream/CaptureDeviceManager.cpp: Ditto.
* platform/mediastream/RealtimeMediaSourceSupportedConstraints.cpp: Ditto.

* platform/mock/MockRealtimeMediaSource.cpp:
(WebCore::MockRealtimeMediaSource::audioDevices): Use auto,
makeNeverDestroyed, and a lambda instead of checking size each time.
(WebCore::MockRealtimeMediaSource::videoDevices): Ditto.

* platform/mock/mediasource/MockMediaPlayerMediaSource.cpp:
(WebCore::mimeTypeCache): Use const auto, makeNeverDestroyed, and the
HashSet constructor instead of an explicit boolean to initialize.

* platform/network/BlobRegistryImpl.cpp:
(WebCore::blobUtilityQueue): Use a global with a raw reference instead
of a NeverDestroyed<Ref>.

* platform/network/NetworkStateNotifier.cpp:
(WebCore::NetworkStateNotifier::singleton): Renamed this from
networkStateNotifier. We must have missed this when we changed to use the
singleton idiom consistently. Also changed to use normal NeverDestroyed
rather than using LazyNeverDestroyed and call_once, because this is not
used from multiple threads and has no special thread safety requirements.
(WebCore::NetworkStateNotifier::NetworkStateNotifier): Moved the constructor
here and construct the timer. Before the timer was used only on the Mac
platform but now it is there for all platforms.
(WebCore::NetworkStateNotifier::onLine): Moved function here from the header.
It's a littlel less trivial than before because it now triggers a call to
updateState as needed.
(WebCore::NetworkStateNotifier::addListener): Renamed from
addNetworkStateChangeListener since there is only one kind of listener and
the old name was too wordy. Changed to call the new startObserving function,
and guaranteed to call it onlh once. The platform-specific logic for iOS is
now inside the iOS version of that function instead of here.
(WebCore::NetworkStateNotifier::updateState): Moved here now that it is the
same for all platforms. The actual state updating is done in a function named
updateStateWithoutNotifying, which is implemented for each platform.
(WebCore::NetworkStateNotifier::updateStateSoon): New function which takes
advantage of the timer to coalesce network state updates.
(WebCore::NetworkStateNotifier::updateStateWithoutNotifying): Empty stub
version of this function.
(WebCore::NetworkStateNotifier::startObserving): Ditto.
(WebCore::NetworkStateNotifier::notifyNetworkStateChange): Deleted. Code from
this has moved into updateState.

* platform/network/NetworkStateNotifier.h: Greatly cut down what part of this
class is platform-specific.

* platform/network/ios/NetworkStateNotifierIOS.mm:
(-[WebNetworkStateObserver initWithBlock:]): Simplified this class so it
takes a block, rather than using a pointer to the C++ notifier and doing
WebThreadRun.
(-[WebNetworkStateObserver dealloc]): Ditto.
(-[WebNetworkStateObserver networkStateChanged:]): Ditto.
(WebCore::NetworkStateNotifier::updateStateWithoutNotifying):
This now calls isNetworkReachable.
(WebCore::NetworkStateNotifier::startObserving): Check the
Settings::shouldOptOutOfNetworkStateObservation function, and if it's OK
to observe, then create the observer. This code now takes care of the
WebThreadRun and calls updateStateSoon.
(WebCore::NetworkStateNotifier::NetworkStateNotifier): Deleted. The
constructor is now platform independent.
(WebCore::NetworkStateNotifier::~NetworkStateNotifier): Deleted. This
object is never destroyed so we should not write a destructor for it.
(WebCore::NetworkStateNotifier::registerObserverIfNecessary): Deleted.
Replaced by startObserving.
(WebCore::NetworkStateNotifier::onLine): Deleted. This function is now
platform-independent.
(WebCore::setOnLine): Deleted. The logic from this is now in
updateState and updateStateWithoutNotifying.

* platform/network/mac/NetworkStateNotifierMac.cpp:
(WebCore::NetworkStateNotifier::updateStateWithoutNotifying): Renamed
this from updateState and tightened up the code a bit. Also changed
to not assume anything. If there is an error, we leave m_isOnLine alone.
Default behavior is now in the platform-independent code, and the default
is to treat things as on-line if updateStateWithoutNotifying was called
and it was never able to update the state even once.
(WebCore::NetworkStateNotifier::startObserving): Moved most of the code
from the constructor into this function.
(WebCore::NetworkStateNotifier::dynamicStoreCallback): Deleted. This is
now a lambda inside startObserving.
(WebCore::NetworkStateNotifier::networkStateChangeTimerFired): Deleted.
This function is now platform-independent and is named updateState.

* platform/network/win/NetworkStateNotifierWin.cpp:
(WebCore::NetworkStateNotifier::updateStateWithoutNotifying): Renamed
from updateState and tightened the code up a bit. Also changed
to not assume anything. If there is an error, we leave m_isOnLine alone.
Default behavior is now in the platform-independent code, and the default
is to treat things as on-line if updateStateWithoutNotifying was called
and it was never able to update the state even once.
(WebCore::NetworkStateNotifier::addressChanged): Deleted.
This function is now platform-independent and is named updateState.
(WebCore::NetworkStateNotifier::addressChangeCallback): Renamed from
addrChangeCallback. Simplified by using the singleton function instead
of relying on the context pointer.
(WebCore::NetworkStateNotifier::startObserving): Moved most of the code
from the constructor here.

* platform/text/LocaleToScriptMappingDefault.cpp:
(WebCore::scriptNameToCode): Use makeNeverDestroyed.
(WebCore::localeToScriptCodeForFontSelection): Ditto.

* platform/text/ios/LocalizedDateCache.h: Moved include of
NeverDestroyed.h from here ...
* platform/text/ios/LocalizedDateCache.mm: ... to here.

* platform/wpe/RenderThemeWPE.cpp:
(WebCore::RenderTheme::singleton): Use a theme that is never destroyed
rather than Ref that is never destroyed.

* platform/wpe/RenderThemeWPE.h: Use friend NeverDestroyed rather than
a create function since RenderTheme is no longer reference counted.

* rendering/RenderTheme.h: Made RenderTheme no longer reference counted.

* rendering/RenderThemeGtk.cpp:
(WebCore::RenderThemeGtk::create): Deleted.
(WebCore::RenderTheme::singleton): Use a theme that is never destroyed
rather than Ref that is never destroyed.

* rendering/RenderThemeGtk.h: Use friend NeverDestroyed rather than
a create function since RenderTheme is no longer reference counted.
* rendering/RenderThemeIOS.h: Ditto.

* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::create): Deleted.
(WebCore::RenderTheme::singleton): Use a theme that is never destroyed
rather than Ref that is never destroyed.

* rendering/RenderThemeMac.h: Use friend NeverDestroyed rather than
a create function since RenderTheme is no longer reference counted.
Also marked a lot of functions final rather than override and initialized
data members in the class deifnition.

* rendering/RenderThemeMac.mm: Moved some SPI interfaces to the top of the
file. They should really go into SPI headers.
(-[WebCoreRenderThemeNotificationObserver init]): Removed the theme argument
here because the theme is a singleton and we don't need a pointer to it.
Add the observer here instead of doing it in the caller.
(-[WebCoreRenderThemeNotificationObserver systemColorsDidChange:]): Call
platformColorsDidChange through the singleton rather than using a pointer.
(-[WebCoreTextFieldCell _coreUIDrawOptionsWithFrame:inView:includeFocus:]):
Tightened up the code a bit by using CFAutorelease instead of using a
combination of NSMakeCollectable, autorelease, and a typecast to accomplish
the same thing.
(WebCore::RenderTheme::singleton): Use a theme that is never destroyed
rather than Ref that is never destroyed.
(WebCore::RenderThemeMac::create): Deleted.
(WebCore::RenderThemeMac::RenderThemeMac): Moved initialization into the
class definition and observing into the WebCoreRenderThemeNotificationObserver
init function.
(WebCore::RenderThemeMac::~RenderThemeMac): Deleted. No need for this since
the object will never be destroyed.
(WebCore::RenderThemeMac::mediaControlsBase64StringForIconNameAndType):
Removed an unnecessary conversion from C string literal to WTF::String and
then to NSString. Instead, just use an NSString literal.

* rendering/RenderThemeWin.cpp:
(WebCore::RenderThemeWin::create): Deleted.
(WebCore::RenderTheme::singleton): Use a theme that is never destroyed
rather than Ref that is never destroyed.

* rendering/RenderThemeWin.h: Use friend NeverDestroyed rather than
a create function since RenderTheme is no longer reference counted.

* rendering/svg/RenderSVGResource.cpp:
(WebCore::removeFromCacheAndInvalidateDependencies): Moved a global into
the code where it is used.

* svg/SVGAnimatedLength.cpp: Removed unneeded include of NeverDestroyed.h.

* svg/SVGAnimationElement.cpp:
(WebCore::SVGAnimationElement::isSupportedAttribute): Use const auto,
makeNeverDestroyed, a lambda, and the new HashSet::add overload instead of
an isEmpty check and lots of separate add function calls.
* svg/SVGClipPathElement.cpp:
(WebCore::SVGClipPathElement::isSupportedAttribute): Ditto.
* svg/SVGComponentTransferFunctionElement.cpp:
(WebCore::SVGComponentTransferFunctionElement::isSupportedAttribute): Ditto.
* svg/SVGCursorElement.cpp:
(WebCore::SVGCursorElement::isSupportedAttribute): Ditto.

* svg/SVGElement.cpp:
(WebCore::createAttributeNameToCSSPropertyIDMap): Replaced the populate
function with this create function.
(WebCore::createAttributeNameToAnimatedPropertyTypeMap): Ditto.
(WebCore::attributeNameToAnimatedPropertyTypeMap): Changed return type to
const reference. Use const auto and makeNeverDestroyed instead of using
isEmpty and a populate function.
(WebCore::createCSSPropertyWithSVGDOMNameToAnimatedPropertyTypeMap):
More of the same.
(WebCore::cssPropertyWithSVGDOMNameToAnimatedPropertyTypeMap): Ditto.
(WebCore::SVGElement::childShouldCreateRenderer): Use an array instead of
a HashSet since we are checking against only 3 or 4 values.
(WebCore::addQualifiedName): Deleted.
(WebCore::SVGElement::animatableAttributeForName): Use const auto,
makeNeverDestroyed, and a lambda to efficiently build the map in this function.
(WebCore::SVGElement::cssPropertyIdForSVGAttributeName): Use const auto and
makeNeverDestroyed instead of using isEmpty and a populate function.

* svg/SVGFilterElement.cpp:
(WebCore::SVGFilterElement::isSupportedAttribute): Use const auto,
makeNeverDestroyed, a lambda, and the new HashSet::add overload instead of
an isEmpty check and lots of separate add function calls.
* svg/SVGFilterPrimitiveStandardAttributes.cpp:
(WebCore::SVGFilterPrimitiveStandardAttributes::isSupportedAttribute): Ditto.
* svg/SVGForeignObjectElement.cpp:
(WebCore::SVGForeignObjectElement::isSupportedAttribute): Ditto.
* svg/SVGGElement.cpp:
(WebCore::SVGGElement::isSupportedAttribute): Ditto.
* svg/SVGGradientElement.cpp:
(WebCore::SVGGradientElement::isSupportedAttribute): Ditto.
* svg/SVGGraphicsElement.cpp:
(WebCore::SVGGraphicsElement::isSupportedAttribute): Ditto.
* svg/SVGImageElement.cpp:
(WebCore::SVGImageElement::isSupportedAttribute): Ditto.
* svg/SVGLangSpace.cpp:
(WebCore::addWithAndWithoutXMLPrefix): Added helper. Uses xmlAtom instead
of making our own NeverDestroyed local xmlPrefix.
(WebCore::SVGLangSpace::addSupportedAttributes): Rewrote to use helper.
* svg/SVGLineElement.cpp:
(WebCore::SVGLineElement::isSupportedAttribute): Use const auto,
makeNeverDestroyed, a lambda, and the new HashSet::add overload instead of
an isEmpty check and lots of separate add function calls.
* svg/SVGLinearGradientElement.cpp:
(WebCore::SVGLinearGradientElement::isSupportedAttribute): Ditto.
* svg/SVGMarkerElement.cpp:
(WebCore::SVGMarkerElement::isSupportedAttribute): Ditto.
* svg/SVGMaskElement.cpp:
(WebCore::SVGMaskElement::isSupportedAttribute): Ditto.
* svg/SVGPathElement.cpp:
(WebCore::SVGPathElement::isSupportedAttribute): Ditto.
* svg/SVGPatternElement.cpp:
(WebCore::SVGPatternElement::isSupportedAttribute): Ditto.
* svg/SVGRadialGradientElement.cpp:
(WebCore::SVGRadialGradientElement::isSupportedAttribute): Ditto.
* svg/SVGTextContentElement.cpp:
(WebCore::SVGTextContentElement::isSupportedAttribute): Ditto.
* svg/SVGTextPathElement.cpp:
(WebCore::SVGTextPathElement::isSupportedAttribute): Ditto.
* svg/animation/SVGSMILElement.cpp:
(WebCore::SVGSMILElement::isSupportedAttribute): Ditto.

* testing/MockContentFilterSettings.h: Removed unneeded include of
NeverDestroyed.h.

* testing/MockGamepadProvider.cpp: Moved include of
NeverDestroyed.h here ...
* testing/MockGamepadProvider.h: ... from here.

* testing/MockPreviewLoaderClient.h: Removed unneeded include of
NeverDestroyed.h.

* workers/Worker.cpp:
(WebCore::allWorkers): Changed this from a global to a function.
(WebCore::Worker::networkStateChanged): Updated for above change and
made this a member function.
(WebCore::Worker::Worker): Updated for above change and
change to NetworkStateNotifier.
(WebCore::Worker::~Worker): Ditto.
* workers/Worker.h: Made networkStateChanged a static member instead of
a friend since that is a cleaner way to give it access to private member
functions.

* xml/XPathFunctions.cpp:
(WebCore::XPath::createFunctionMap): Use create instead of populate style.
(WebCore::XPath::Function::create): Use const auto and makeNeverDestroyed
instead of an isEmpty check.

* xml/XPathParser.cpp:
(WebCore::XPath::createAxisNamesMap): Use create instead of populate style.
(WebCore::XPath::parseAxisName): Use const auto and makeNeverDestroyed
instead of an isEmpty check.

Source/WebKit:

* DatabaseProcess/DatabaseProcess.h: Removed unneeded include of
NeverDestroyed.h.
* NetworkProcess/cache/NetworkCacheKey.cpp: Ditto.

* NetworkProcess/capture/NetworkCaptureManager.cpp: Moved include of
NeverDestroyed.h here ...
* NetworkProcess/capture/NetworkCaptureManager.h: ... from here.

* PluginProcess/PluginProcess.cpp: Moved include of NeverDestroyed.h
here ...
* PluginProcess/PluginProcess.h: ... from here.

* Shared/API/Cocoa/_WKRemoteObjectInterface.mm:
(isContainerClass): Removed trivial inefficient use of
LazyNeverDestroyed<HashSet> to check against two classes.
Instead wrote out the boolean expression.

* Shared/mac/SecItemShim.cpp: Removed unneeded include of
NeverDestroyed.h.

* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitialize): Call
installMemoryPressureHandler instead of WebMemoryPressureHandler::singleton.

* UIProcess/Gamepad/UIGamepadProvider.h: Removed unneeded include
of NeverDestroyed.h.

* UIProcess/Plugins/PluginProcessManager.cpp: Moved include of
NeverDestroyed.h here ...
* UIProcess/Plugins/PluginProcessManager.h: ... from here.

* UIProcess/WebInspectorProxy.cpp: Removed unneeded include
of NeverDestroyed.h.

* UIProcess/WebPageProxy.h: Added now-needed include of
MediaPlaybackTargetContext.h.

* UIProcess/WebPasteboardProxy.cpp: Moved include of
NeverDestroyed.h here ...
* UIProcess/WebPasteboardProxy.h: ... from here.

* UIProcess/ios/WebMemoryPressureHandlerIOS.h: Removed the
WebMemoryPressureHandler class from this header. Callers don't need to
know if there is a class. They simply indicate when it's time to install
the handler. Another way to put it is that this class had no functions
other than the singleton function.

* UIProcess/ios/WebMemoryPressureHandlerIOS.mm:
(WebKit::installMemoryPressureHandler): Replaced the class with this function.
It creates a dispatch source and then resumes it. To avoid having the source
look like a leak, we keep it in a global variable.

* WebProcess/Gamepad/WebGamepadProvider.h: Include Forward.h instead of
NeverDestroyed.h.

* WebProcess/WebCoreSupport/WebPasteboardOverrides.cpp: Moved include of
NeverDestroyed.h here ...
* WebProcess/WebCoreSupport/WebPasteboardOverrides.h: ... from here.

* WebProcess/WebCoreSupport/WebPlatformStrategies.h: Removed unneeded
include of NeverDestroyed.h.

Source/WebKitLegacy:

* Storage/StorageThread.cpp:
(WebCore::StorageThread::releaseFastMallocFreeMemoryInAllThreads):
Simplify code by using a modern for loop and passing a function without wrapping
it in a lambda.

Source/WebKitLegacy/mac:

* Misc/WebStringTruncator.mm:
(+[WebStringTruncator centerTruncateString:toWidth:]): Replace
NeverDestroyed<RetainPtr> with just an NSFont * global.

* Plugins/Hosted/NetscapePluginHostManager.h: Removed unneeded include of
NeverDestroyed.h.
* Storage/WebDatabaseManager.mm: Ditto.
* WebCoreSupport/WebFrameNetworkingContext.mm: Ditto.
* WebCoreSupport/WebPlatformStrategies.mm: Ditto.

* WebView/WebView.mm: Removed unneeded include of NetworkStateNotifier.h.
(aeDescFromJSValue): Removed double hashing by using the return value from
add rather than calling contains before calling add.

Source/WTF:

* wtf/HashSet.h: Added an overload of HashSet::add that takes an initializer list of
const references. This is handy to add a bunch of values all at once. Later we can
consider optimizing to grow the hash table only once instead of deciding whether to
grow repeatedly as we add each value.
(WTF::copyToVector): Changed to use std::copy, removing 4 of the 6 lines of code here.

* wtf/MemoryPressureHandler.cpp: Include NeverDestroyed.h here ...
* wtf/MemoryPressureHandler.h: ... not here.

* wtf/NeverDestroyed.h: Added the ability to have a const NeverDestroyed.
Added a makeNeverDestroyed function that deduces the type from the argument.
With auto, this can be used to avoid writing out a long type twice.

* wtf/ThreadingPthreads.cpp: Removed unneeded include of NeverDestroyed.h.
* wtf/text/AtomicString.cpp: Ditto.

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

3 years agoPage using safe area constant properties jumps to correct layout after resize
timothy_horton@apple.com [Tue, 18 Jul 2017 01:45:59 +0000 (01:45 +0000)]
Page using safe area constant properties jumps to correct layout after resize
https://bugs.webkit.org/show_bug.cgi?id=174598
<rdar://problem/33364275>

Reviewed by Simon Fraser.

Source/WebKit:

Test: fast/events/ios/rotation/safe-area-insets-during-safari-type-rotation.html

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _beginAnimatedResizeWithUpdates:]):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::dynamicViewportSizeUpdate):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::dynamicViewportSizeUpdate):
Plumb unobscured safe area insets through in the dynamicViewportSizeUpdate,
like we do in VisibleContentRectUpdate (once again sad that these aren't
more similar), so that it will be correct in the during-rotation snapshot,
instead of only becoming correct in the first visible content rect update
post-rotation.

LayoutTests:

* fast/events/ios/rotation/safe-area-insets-during-safari-type-rotation-expected.txt: Added.
* fast/events/ios/rotation/safe-area-insets-during-safari-type-rotation.html: Added.
Add a test making sure that dynamic-viewport-update-based rotation
updates safe area insets when needed.

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

3 years agoREGRESSION(r219298): imported/w3c/IndexedDB-private-browsing/idbfactory_open.html...
beidson@apple.com [Tue, 18 Jul 2017 00:25:09 +0000 (00:25 +0000)]
REGRESSION(r219298): imported/w3c/IndexedDB-private-browsing/idbfactory_open.html is crashing occassionaly (UniqueIDBDatabase being taken from the IDBServer set twice).
<rdar://problem/33294987> and https://bugs.webkit.org/show_bug.cgi?id=174354

Reviewed by Alex Christensen.

No new tests (Covered by existing tests).

* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::postDatabaseTaskReply): Remove a now invalid ASSERT

* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::scheduleShutdownForClose): Add a RELEASE_ASSERT.
(WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore): Instead of an ad-hoc main thread dispatch, use the "schedule task reply" system
  to keep dispatch ordering in tact.
(WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTaskReply): Remove a now invalid ASSERT
(WebCore::IDBServer::UniqueIDBDatabase::immediateCloseForUserDelete): Only take the owning pointer if the object doesn't already own itself.

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

3 years agoUnreviewed, fix the iOS build.
wenson_hsieh@apple.com [Tue, 18 Jul 2017 00:15:42 +0000 (00:15 +0000)]
Unreviewed, fix the iOS build.

I missed a spot when renaming -synchronouslyLoadHTML: to -synchronouslyLoadHTMLString:.

* TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
(TestWebKitAPI::TEST):

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

3 years agoUserMediaPermissionRequestManagerProxy should not use WebCore::Timer
cdumez@apple.com [Mon, 17 Jul 2017 23:56:34 +0000 (23:56 +0000)]
UserMediaPermissionRequestManagerProxy should not use WebCore::Timer
https://bugs.webkit.org/show_bug.cgi?id=174599
<rdar://problem/33362600>

Reviewed by Tim Horton.

UserMediaPermissionRequestManagerProxy should not use WebCore::Timer since it runs in the
UIProcess. Switch to using RunLoop::Timer instead.

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

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

3 years agoNETWORK_SESSION does not need didReceiveAuthenticationChallenge(uint64_t, uint64_t...
cdumez@apple.com [Mon, 17 Jul 2017 23:55:22 +0000 (23:55 +0000)]
NETWORK_SESSION does not need didReceiveAuthenticationChallenge(uint64_t, uint64_t, const AuthenticationChallenge&)
https://bugs.webkit.org/show_bug.cgi?id=174595

Reviewed by Alex Christensen.

* Shared/Authentication/AuthenticationManager.cpp:
(WebKit::AuthenticationManager::didReceiveAuthenticationChallenge):
* Shared/Authentication/AuthenticationManager.h:

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

3 years agoFixed test expectations after r219518.
jlewis3@apple.com [Mon, 17 Jul 2017 23:49:16 +0000 (23:49 +0000)]
Fixed test expectations after r219518.
https://bugs.webkit.org/show_bug.cgi?id=174472

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

3 years ago[iOS DnD] Web process uses too much memory when beginning a drag on a very large...
wenson_hsieh@apple.com [Mon, 17 Jul 2017 23:17:09 +0000 (23:17 +0000)]
[iOS DnD] Web process uses too much memory when beginning a drag on a very large image
https://bugs.webkit.org/show_bug.cgi?id=174585
<rdar://problem/33302541>

Reviewed by Tim Horton.

Source/WebCore:

Currently, attempting to drag a very large image fails, either due to us telling CoreGraphics to create an image
buffer that is too large, or because the web process exceeds its memory limit and gets jetsamed. There are two
places where we can optimize our memory use during the drag initialization sequence, and this patch improves
both.

First, on iOS, we attempt to encode and send over a WebCore::Image in the PasteboardImage when writing to the
item providers upon starting a drag. Currently, this Image is only used in the drag and drop codepath, in
PlatformPasteboard::writeObjectRepresentations, to grab the size of the image being written for the purpose of
specifying estimated display size. Serializing and deserializing an Image calls into Image::nativeImage, which
attempts to draw the contents of the image into a buffer so that it can be shipped across to the UI process.
Instead, we can simply compute the size in the web process while we already have the Image, and simply send that
across. For copy/paste, this doesn't result in any behavior change, since we don't use the PasteboardImage's
image in the first place.

Secondly, when starting a drag, we try to allocate create an image buffer the size of the WebCore::Image for the
purpose of generating the drag preview. Instead, this patch establishes a limit on the size of this drag preview
image, such that if the Image's size is larger, we'll scale down the drag preview image to be the maximum
allowed size.

Test: DataInteractionTests.CanStartDragOnEnormousImage.

* editing/ios/EditorIOS.mm:
(WebCore::Editor::writeImageToPasteboard):
* platform/Pasteboard.h:
* platform/graphics/GeometryUtilities.cpp:
(WebCore::sizeWithAreaAndAspectRatio):

Introduce a new helper function to compute a size with the given aspect ratio and area.

* platform/graphics/GeometryUtilities.h:
* platform/ios/DragImageIOS.mm:
(WebCore::createDragImageFromImage):
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::writeObjectRepresentations):

Source/WebKit:

Add IPC support for serializing/deserializing the size of an image written to the pasteboard. See WebCore
ChangeLogs for more details.

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<PasteboardImage>::encode):
(IPC::ArgumentCoder<PasteboardImage>::decode):

Tools:

Adds a new test verifying that we don't try to allocate any image buffer equal to the true size of the image
being dragged when initiating a drag.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2Cocoa/enormous.svg: Added.
* TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
(TestWebKitAPI::TEST):
* TestWebKitAPI/cocoa/TestWKWebView.h:

Add a new -synchronouslyLoadHTMLString: helper that works like -synchronouslyLoadTestPage:, but takes markup.

* TestWebKitAPI/cocoa/TestWKWebView.mm:
(-[TestWKWebView synchronouslyLoadHTMLString:]):

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

3 years agoUnreviewed attempt to fix Mac cmake build
annulen@yandex.ru [Mon, 17 Jul 2017 23:12:56 +0000 (23:12 +0000)]
Unreviewed attempt to fix Mac cmake build

* PlatformMac.cmake: Remove reference to file which is gone since r219025

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

3 years ago[CMake] Include most CMake modules from WebKitCommon.cmake
mcatanzaro@igalia.com [Mon, 17 Jul 2017 22:50:40 +0000 (22:50 +0000)]
[CMake] Include most CMake modules from WebKitCommon.cmake
https://bugs.webkit.org/show_bug.cgi?id=174546

Reviewed by Konstantin Tokarev.

.:

* CMakeLists.txt:
* Source/cmake/OptionsCommon.cmake:
* Source/cmake/WebKitCommon.cmake:
* Source/cmake/WebKitMacros.cmake:

Source/WebCore:

* WebCoreMacros.cmake:

Source/WebKit:

* CMakeLists.txt:

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