WebKit-https.git
4 months agoBlob type cannot be stored correctly in IDB when IDBObjectStore has autoIncrement...
sihui_liu@apple.com [Wed, 3 Apr 2019 17:03:59 +0000 (17:03 +0000)]
Blob type cannot be stored correctly in IDB when IDBObjectStore has autoIncrement and keyPath options
https://bugs.webkit.org/show_bug.cgi?id=196128

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Updated test expectations to PASS.

* web-platform-tests/IndexedDB/nested-cloning-large-expected.txt:
* web-platform-tests/IndexedDB/nested-cloning-large-multiple-expected.txt:
* web-platform-tests/IndexedDB/nested-cloning-small-expected.txt:

Source/WebCore:

If a key is auto-generated, it should become a property of the value object. Network process would perform the
key injection by deserializing IDBValue into script value, setting the property, serializing the result and
storing it in a database record. But network process does not have a JSDOMGlobalObject, so it would fail to
deserialize types including Blob and File.

To solve this issue, we move the key injection to web process and let network process store the original value
it gets. In this case, when web process asks for some value, network process should return key, value and key
path so that web process can decide whether it should perform a key injection before returning the result. Note
that the auto-generated key would always be stored as the key in a ObjectStore record.

Test: storage/indexeddb/modern/objectstore-autoincrement-types.html

* Modules/indexeddb/IDBCursor.cpp:
(WebCore::IDBCursor::setGetResult):
* Modules/indexeddb/IDBCursor.h:
(WebCore::IDBCursor::primaryKeyPath):
* Modules/indexeddb/IDBGetAllResult.cpp:
(WebCore::IDBGetAllResult::isolatedCopy):
(WebCore::IDBGetAllResult::addKey):
(WebCore::IDBGetAllResult::addValue):
(WebCore::IDBGetAllResult::keys const):
(WebCore::IDBGetAllResult::values const):
(WebCore::IDBGetAllResult::allBlobFilePaths const):
(WebCore::isolatedCopyOfVariant): Deleted.

* Modules/indexeddb/IDBGetAllResult.h: Introduce an IDBKeyPath parameter. Also replace Variant with two Vectors,
because we only needed to store either key or value before, and now the stored value could be incomplete.
(WebCore::IDBGetAllResult::IDBGetAllResult):
(WebCore::IDBGetAllResult::keyPath const):
(WebCore::IDBGetAllResult::encode const):
(WebCore::IDBGetAllResult::decode):

* Modules/indexeddb/IDBGetResult.cpp:
(WebCore::IDBGetResult::setValue):
* Modules/indexeddb/IDBGetResult.h:
(WebCore::IDBGetResult::IDBGetResult):
(WebCore::IDBGetResult::keyPath const):
* Modules/indexeddb/IDBObjectStore.cpp:
* Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::setResult):
(WebCore::IDBRequest::setResultToStructuredClone):
* Modules/indexeddb/IDBRequest.h:
* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::didGetAllRecordsOnServer):
(WebCore::IDBTransaction::didGetRecordOnServer):
* Modules/indexeddb/server/MemoryIDBBackingStore.cpp:
(WebCore::IDBServer::MemoryIDBBackingStore::getRecord):
* Modules/indexeddb/server/MemoryIndex.cpp:
(WebCore::IDBServer::MemoryIndex::getResultForKeyRange const):
(WebCore::IDBServer::MemoryIndex::getAllRecords const):
* Modules/indexeddb/server/MemoryIndexCursor.cpp:
(WebCore::IDBServer::MemoryIndexCursor::currentData):
* Modules/indexeddb/server/MemoryObjectStore.cpp:
(WebCore::IDBServer::MemoryObjectStore::updateIndexesForPutRecord):
(WebCore::IDBServer::MemoryObjectStore::populateIndexWithExistingRecords):
(WebCore::IDBServer::MemoryObjectStore::getAllRecords const):
* Modules/indexeddb/server/MemoryObjectStoreCursor.cpp:
(WebCore::IDBServer::MemoryObjectStoreCursor::currentData):
* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::updateOneIndexForAddRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::updateAllIndexesForAddRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::cachedStatementForGetAllObjectStoreRecords):
(WebCore::IDBServer::SQLiteIDBBackingStore::getAllObjectStoreRecords):
(WebCore::IDBServer::SQLiteIDBBackingStore::getAllIndexRecords):
(WebCore::IDBServer::SQLiteIDBBackingStore::getIndexRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey):
(WebCore::IDBServer::SQLiteIDBBackingStore::openCursor):
(WebCore::IDBServer::SQLiteIDBBackingStore::iterateCursor):
* Modules/indexeddb/server/SQLiteIDBCursor.cpp:
(WebCore::IDBServer::SQLiteIDBCursor::currentData):
* Modules/indexeddb/server/SQLiteIDBCursor.h:

* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd): Remove the key injection from network process.
UniqueIDBDatabase stores any value it gets from IDBClient.

* Modules/indexeddb/shared/IDBResultData.cpp:
(WebCore::IDBResultData::getResultRef):
* Modules/indexeddb/shared/IDBResultData.h:

* bindings/js/IDBBindingUtilities.cpp:
(WebCore::injectIDBKeyIntoScriptValue): If property is read-only, set would fail and injectKeyIntoResult would
return null, but we expect it to return result as long as the property value is the same as target. Therefore,
we can add an early return here.
(WebCore::createKeyPathArray):

(WebCore::generateIndexKeyForValue): We used to generate IndexKey from value stored in database but now the
value gets stored does not include auto-generated key, as we remove the key injection from network process. In
this case if the IDBIndex has the same key path as the auto-generated key, IndexKey would be failed to create
for it cannot extract auto-generated key from value. Since the auto-generated key would always be the key in
database record, we could use value of that key when we find a match in key path.

(WebCore::deserializeIDBValueWithKeyInjection): If the key path in the result is single entry, the key is
probably auto-generated, so we could inject the result key into the result value unconditionally.

* bindings/js/IDBBindingUtilities.h:
* bindings/js/JSIDBCursorWithValueCustom.cpp:
(WebCore::JSIDBCursorWithValue::value const):
* bindings/js/JSIDBRequestCustom.cpp:
(WebCore::JSIDBRequest::result const):

LayoutTests:

* TestExpectations:
* storage/indexeddb/modern/objectstore-autoincrement-types-expected.txt: Added.
* storage/indexeddb/modern/objectstore-autoincrement-types.html: Added.
* storage/indexeddb/modern/resources/objectstore-autoincrement-types.js: Added.
(next):
(prepareDatabase.event.target.onsuccess):
(prepareDatabase):
(testSteps):

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

4 months agoResetting quota should take into account third party origins
youenn@apple.com [Wed, 3 Apr 2019 17:00:36 +0000 (17:00 +0000)]
Resetting quota should take into account third party origins
https://bugs.webkit.org/show_bug.cgi?id=196462

Reviewed by Geoffrey Garen.

Source/WebKit:

When clearing the storage quota, we were resetting it to the default value
without taking care of whether third party or not.
Updated the code to ensure that the default quota is computed based on the origin.

Updated existing test to cover this case.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::clearStorageQuota):
(WebKit::NetworkProcess::setCacheStorageParameters):
(WebKit::NetworkProcess::updateQuotaBasedOnSpaceUsageForTesting):
(WebKit::NetworkProcess::storageQuotaManager):
* NetworkProcess/NetworkProcess.h:
(WebKit::NetworkProcess::StorageQuotaManagers::defaultQuota const):
(WebKit::NetworkProcess::StorageQuotaManagers::setDefaultQuotas):
(WebKit::NetworkProcess::StorageQuotaManagers::managersPerOrigin):

LayoutTests:

* http/wpt/cache-storage/quota-third-party.https-expected.txt:
* http/wpt/cache-storage/quota-third-party.https.html:
* platform/mac-wk2/TestExpectations:

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

4 months ago[GTK] Unreviewed gardening, update test expectations
dpino@igalia.com [Wed, 3 Apr 2019 16:53:21 +0000 (16:53 +0000)]
[GTK] Unreviewed gardening, update test expectations

* platform/gtk/TestExpectations:

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

4 months agoGet rid of HTMLInputElement::setEditingValue
mcatanzaro@igalia.com [Wed, 3 Apr 2019 16:40:16 +0000 (16:40 +0000)]
Get rid of HTMLInputElement::setEditingValue
https://bugs.webkit.org/show_bug.cgi?id=196402

Reviewed by Darin Adler.

Source/WebCore:

HTMLInputElement::setEditingValue is only used for Epiphany password autofill. We did it
this way because that's what Chrome uses for autofill, but Apple uses
HTMLInputElement::setValueForUser. Let's switch to that instead, then we can get rid of
setEditingValue.

This fixes logging into ting.com after username and password are autofilled by Epiphany.
Before this change, the login would fail unless you first manually edit either the username
or the password field.

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::setEditingValue): Deleted.
* html/HTMLInputElement.h:
* testing/Internals.cpp:
(WebCore::Internals::setEditingValue): Deleted.
* testing/Internals.h:
* testing/Internals.idl:

Source/WebKit:

* WebProcess/InjectedBundle/API/glib/DOM/WebKitDOMElement.cpp:
(webkit_dom_element_html_input_element_set_editing_value):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp:
(webkit_dom_html_input_element_set_editing_value):

LayoutTests:

* fast/forms/editing-value-expected.txt: Removed.
* fast/forms/editing-value-null-renderer-expected.txt: Removed.
* fast/forms/editing-value-null-renderer.html: Removed.
* fast/forms/editing-value.html: Removed.

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

4 months ago[ews] Clean out ~/Library/Logs/CoreSimulator/ on reboot
jbedard@apple.com [Wed, 3 Apr 2019 16:39:58 +0000 (16:39 +0000)]
[ews] Clean out ~/Library/Logs/CoreSimulator/ on reboot
https://bugs.webkit.org/show_bug.cgi?id=196540

Reviewed by Aakash Jain.

* EWSTools/start-queue-mac.sh: Remove CoreSimulator logs.

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

4 months agoThe following layout tests are flaky failures
sroberts@apple.com [Wed, 3 Apr 2019 16:30:15 +0000 (16:30 +0000)]
The following layout tests are flaky failures
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/error-codes/error.html
https://bugs.webkit.org/show_bug.cgi?id=195466

Unreviewed test gardening.

* platform/ios-simulator/TestExpectations: Updating test expectations for flaky failures

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

4 months agoLayout Test http/wpt/resource-timing/rt-resources-per-worker.html is flaky
sroberts@apple.com [Wed, 3 Apr 2019 16:14:07 +0000 (16:14 +0000)]
Layout Test http/wpt/resource-timing/rt-resources-per-worker.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=180260

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

4 months agoAdd a WebKit internal feature flag to always enable modern compatibility mode by...
wenson_hsieh@apple.com [Wed, 3 Apr 2019 16:02:06 +0000 (16:02 +0000)]
Add a WebKit internal feature flag to always enable modern compatibility mode by default
https://bugs.webkit.org/show_bug.cgi?id=196526
<rdar://problem/49532923>

Reviewed by Antoine Quint.

* Shared/WebPreferences.yaml:

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

4 months agoMissing includes that were previously provided via UnifiedSources
commit-queue@webkit.org [Wed, 3 Apr 2019 15:58:04 +0000 (15:58 +0000)]
Missing includes that were previously provided via UnifiedSources
https://bugs.webkit.org/show_bug.cgi?id=196434

Unreviewed build fix.

Patch by Pablo Saavedra <psaavedra@igalia.com> on 2019-04-03

* html/InputType.h:

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

4 months agoIntroduce and add plumbing for a website policy for meta viewport tag handling
wenson_hsieh@apple.com [Wed, 3 Apr 2019 15:22:10 +0000 (15:22 +0000)]
Introduce and add plumbing for a website policy for meta viewport tag handling
https://bugs.webkit.org/show_bug.cgi?id=196285

Reviewed by Tim Horton.

Source/WebCore:

Add MetaViewportPolicy to DocumentLoader. See WebKit ChangeLog for more detail.

* loader/DocumentLoader.h:
(WebCore::DocumentLoader::metaViewportPolicy const):
(WebCore::DocumentLoader::setMetaViewportPolicy):

Source/WebKit:

Add WebsiteMetaViewportPolicy, a bit that can be used to determine whether to respect or ignore the meta
viewport tag and use native web page parameters instead of the default parameters.

* Shared/WebsiteMetaViewportPolicy.h: Copied from Source/WebKit/Shared/WebsitePoliciesData.h.
* Shared/WebsitePoliciesData.cpp:
(WebKit::WebsitePoliciesData::encode const):
(WebKit::WebsitePoliciesData::decode):
(WebKit::WebsitePoliciesData::applyToDocumentLoader):

Convert WebKit::WebsiteMetaViewportPolicy into WebCore::MetaViewportPolicy.

* Shared/WebsitePoliciesData.h:
* UIProcess/API/APIWebsitePolicies.cpp:
(API::WebsitePolicies::data):
* UIProcess/API/APIWebsitePolicies.h:

Add additional plumbing for the policy flag.

* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::resetViewportDefaultConfiguration):

Use native web page parameters if either "shouldIgnoreMetaViewport" is enabled, or the new policy is set.
Eventually, the policy should completely replace the former preference once no internal clients depend on it.

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

4 months agoAdd plumbing for a compatibility mode preference in WebKit
wenson_hsieh@apple.com [Wed, 3 Apr 2019 15:02:07 +0000 (15:02 +0000)]
Add plumbing for a compatibility mode preference in WebKit
https://bugs.webkit.org/show_bug.cgi?id=196005

Reviewed by Tim Horton.

Source/WebKit:

Add plumbing between the Cocoa API object (WKWebpagePreferences) and the inner C++ API object
(API::WebsitePolicies) for compatibility mode.

* Shared/WebCompatibilityMode.h: Added.
* UIProcess/API/APIWebsitePolicies.h:
* UIProcess/API/Cocoa/WKWebpagePreferences.mm:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::adjustPoliciesForCompatibilityMode):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WebPageProxyIOS.mm:
* WebKit.xcodeproj/project.pbxproj:

Tools:

Add new API tests.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/ios/PreferredCompatibilityMode.mm: Added.

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

4 months ago[CoordinatedGraphics] Hidden pages are not suspended after a web view resize
carlosgc@webkit.org [Wed, 3 Apr 2019 13:00:16 +0000 (13:00 +0000)]
[CoordinatedGraphics] Hidden pages are not suspended after a web view resize
https://bugs.webkit.org/show_bug.cgi?id=196487

Reviewed by Žan Doberšek.

When resizing the window, the hidden tabs are updated too, to avoid flickering or getting the old size when
switching tabs. For that we need to resume painting but we are not suspending it again after the update.

* WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:
(WebKit::DrawingAreaCoordinatedGraphics::updateBackingStoreState): Suspend the painting again after a
synchronous update if needed.

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

4 months agoWeb Inspector: Remote Inspector indicate callback should always happen on the main...
pecoraro@apple.com [Wed, 3 Apr 2019 12:42:38 +0000 (12:42 +0000)]
Web Inspector: Remote Inspector indicate callback should always happen on the main thread
https://bugs.webkit.org/show_bug.cgi?id=196513
<rdar://problem/49498284>

Reviewed by Devin Rousso.

Source/JavaScriptCore:

* inspector/remote/cocoa/RemoteInspectorCocoa.mm:
(Inspector::RemoteInspector::receivedIndicateMessage):
When we have a WebThread, don't just run on the WebThread,
run on the MainThread with the WebThreadLock.

Source/WebCore:

* platform/ios/wak/WebCoreThreadSystemInterface.cpp:
(InitWebCoreThreadSystemInterface):

Source/WTF:

* wtf/MainThread.h:
* wtf/cocoa/MainThreadCocoa.mm:
(WTF::dispatchAsyncOnMainThreadWithWebThreadLockIfNeeded):
* wtf/ios/WebCoreThread.cpp:
* wtf/ios/WebCoreThread.h:

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

4 months ago[WPE][GTK] Update libsrtp dependency package for Debian
csaavedra@igalia.com [Wed, 3 Apr 2019 08:33:41 +0000 (08:33 +0000)]
[WPE][GTK] Update libsrtp dependency package for Debian
https://bugs.webkit.org/show_bug.cgi?id=196528

Reviewed by Frédéric Wang.

* gtk/install-dependencies:
* wpe/install-dependencies:

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

4 months agoWeb Inspector: [GTK] Copy copies to nowhere
carlosgc@webkit.org [Wed, 3 Apr 2019 08:25:26 +0000 (08:25 +0000)]
Web Inspector: [GTK] Copy copies to nowhere
https://bugs.webkit.org/show_bug.cgi?id=181228

Reviewed by Michael Catanzaro.

The thing is that those items are actually submenu items, with options, for example in the case of Copy to copy
HTML, Text, XPath, etc. We are not correctly handling submenus when populating the context menu received from
the web process.

* UIProcess/gtk/WebContextMenuProxyGtk.cpp:
(WebKit::WebContextMenuProxyGtk::populateSubMenu): Helper to populate submenu items recursively.
(WebKit::WebContextMenuProxyGtk::populate): Handle submenu items.
* UIProcess/gtk/WebContextMenuProxyGtk.h:

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

4 months ago[Cocoa] Add new API around WKWebpagePreferences in WKNavigationDelegate and WKWebView...
wenson_hsieh@apple.com [Wed, 3 Apr 2019 04:58:04 +0000 (04:58 +0000)]
[Cocoa] Add new API around WKWebpagePreferences in WKNavigationDelegate and WKWebViewConfiguration
https://bugs.webkit.org/show_bug.cgi?id=196284
<rdar://problem/47228232>

Reviewed by Tim Horton.

Tests for both of these APIs will be added in a subsequent patch.

* Shared/API/Cocoa/WebKit.h:
* UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::defaultWebsitePolicies const):
(API::PageConfiguration::setDefaultWebsitePolicies):
* UIProcess/API/APIPageConfiguration.h:
* UIProcess/API/Cocoa/WKNavigationDelegate.h:

Add a new navigation delegate hook to allow clients to return a WKWebpagePreference targeting the given
navigation action.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
* UIProcess/API/Cocoa/WKWebViewConfiguration.h:
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

Add new API on WKWebViewConfiguration to specify a default WKWebpagePreference to use when navigating.

(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration defaultWebpagePreferences]):
(-[WKWebViewConfiguration setDefaultWebpagePreferences:]):
* UIProcess/API/Cocoa/WKWebpagePreferences.h:
* UIProcess/Cocoa/NavigationState.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

Invoke the new WKWebpagePreferences-based navigation delegate method.

* WebKit.xcodeproj/project.pbxproj:
* mac/postprocess-framework-headers.sh:
* mac/replace-webkit-additions-in-framework-headers.sh: Added.

Move logic in the "Postprocess Framework Headers" step responsible for stripping away included files from
WebKitAdditions out into a separate build phase, called "Replace WebKitAdditions in Framework Headers". This
ensures headers attempting to include from WebKitAdditions have these additional statements removed.

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

4 months agoREGRESSION (r238266): Exchange 2013 Outlook Web Access displays partially blank page...
simon.fraser@apple.com [Wed, 3 Apr 2019 04:20:24 +0000 (04:20 +0000)]
REGRESSION (r238266): Exchange 2013 Outlook Web Access displays partially blank page when creating new e-mail
https://bugs.webkit.org/show_bug.cgi?id=196522
Source/WebCore:

rdar://problem/49472941

Reviewed by Zalan Bujtas.

In this content a layer is composited to clip descendants, and has negative z-order children,
so we compute that it "paints into ancestor", and has a foreground layer. This combination doesn't
make sense, and when the layer becomes scrollable, we end up with bad paint phases on layers, and
fail to paint the contents.

Fix by ensuring that a layer has its own backing store if it requires a foreground layer
by virtue of having negative z-order children.

Test: compositing/backing/foreground-layer-no-paints-into-ancestor.html

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresOwnBackingStore const):

LayoutTests:

Reviewed by Zalan Bujtas.

* compositing/backing/foreground-layer-no-paints-into-ancestor-expected.html: Added.
* compositing/backing/foreground-layer-no-paints-into-ancestor.html: Added.

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

4 months agoCursor count badge reverts to Zero during Drag & Drop of multiple items.
timothy@apple.com [Wed, 3 Apr 2019 03:46:37 +0000 (03:46 +0000)]
Cursor count badge reverts to Zero during Drag & Drop of multiple items.
https://bugs.webkit.org/show_bug.cgi?id=196511

Reviewed by Daniel Bates.

* page/DragController.cpp:
(WebCore::DragController::tryDocumentDrag): Don't set m_numberOfItemsToBeAccepted to
zero when dragging to a non-file input element.

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

4 months agoEliminate plugin sandbox exceptions
ggaren@apple.com [Wed, 3 Apr 2019 03:24:29 +0000 (03:24 +0000)]
Eliminate plugin sandbox exceptions
https://bugs.webkit.org/show_bug.cgi?id=196510

Reviewed by Chris Dumez.

* PluginProcess/mac/PluginProcessMac.mm:
(WebKit::PluginProcess::initializeSandbox):
* UIProcess/Plugins/PluginInfoStore.cpp:
(WebKit::PluginInfoStore::shouldAllowPluginToRunUnsandboxed): Deleted.
* UIProcess/Plugins/PluginInfoStore.h:
* UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
(WebKit::PluginInfoStore::shouldUsePlugin):
(WebKit::PluginInfoStore::shouldAllowPluginToRunUnsandboxed): Deleted.

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

4 months ago[WK2] Add support for Window's beforeprint / afterprint events
Hironori.Fujii@sony.com [Wed, 3 Apr 2019 01:56:58 +0000 (01:56 +0000)]
[WK2] Add support for Window's beforeprint / afterprint events
https://bugs.webkit.org/show_bug.cgi?id=196478
<rdar://problem/49535124>

Unreviewed build fix for MSVC.

> WebKitTestRunner\TestController.cpp(267): error C2397: conversion from 'double' to 'float' requires a narrowing conversion

And, there is a style guideline. <https://webkit.org/code-style-guidelines/#floating-point-literals>

* WebKitTestRunner/TestController.cpp:
(WTR::printFrame): Use int and float literals.

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

4 months agoHTML Parser: Remove conditional parsing of <noembed> content
cdumez@apple.com [Wed, 3 Apr 2019 01:55:38 +0000 (01:55 +0000)]
HTML Parser: Remove conditional parsing of <noembed> content
https://bugs.webkit.org/show_bug.cgi?id=196514

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Resync WPT after https://github.com/web-platform-tests/wpt/pull/15471 to gain
test coverage. Both Gecko and Blink are passing the new check, only WebKit was
failing.

* web-platform-tests/domparsing/DOMParser-parseFromString-html-expected.txt:
* web-platform-tests/domparsing/DOMParser-parseFromString-html.html:

Source/WebCore:

Our HTML Parser has raw text handling for <noembed> content only if plugins are runnable.
However, the HTML specification doesn't ask such behavior [1], and it doesn't match to
our HTML serializer. We should always handle it as raw text.

Blink already made this change in https://chromium-review.googlesource.com/c/1477556.

[1] https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments:noembed

No new tests, updated existing test.

* html/parser/HTMLParserOptions.cpp:
(WebCore::HTMLParserOptions::HTMLParserOptions):
* html/parser/HTMLParserOptions.h:
* html/parser/HTMLTokenizer.cpp:
(WebCore::HTMLTokenizer::updateStateFor):
* html/parser/HTMLTreeBuilder.cpp:
(WebCore::HTMLTreeBuilder::processStartTagForInBody):

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

4 months agoWeb Inspector: Elements: DOM breakpoint icon should stroke when hovering selection...
drousso@apple.com [Wed, 3 Apr 2019 00:44:42 +0000 (00:44 +0000)]
Web Inspector: Elements: DOM breakpoint icon should stroke when hovering selection area
https://bugs.webkit.org/show_bug.cgi?id=196516
<rdar://problem/49540494>

Reviewed by Timothy Hatcher.

* UserInterface/Views/DOMTreeContentView.css:
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint,): Added.
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Added.
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, :hover) .status-image.breakpoint): Deleted.
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, :hover) .status-image.breakpoint.subtree): Deleted.

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

4 months agoSVG Animation (SMIL) on <text> or <tspan> doesn't work on second run
commit-queue@webkit.org [Wed, 3 Apr 2019 00:26:04 +0000 (00:26 +0000)]
SVG Animation (SMIL) on <text> or <tspan> doesn't work on second run
https://bugs.webkit.org/show_bug.cgi?id=150388

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-04-02
Reviewed by Simon Fraser.

The bug is fixed by removing the SVG tear off objects. See
https://bugs.webkit.org/show_bug.cgi?id=191237.

We need to add a layout test to ensure that no code change will break
this scenario in the future.

* svg/animations/smil-multiple-animate-list-expected.svg: Added.
* svg/animations/smil-multiple-animate-list.svg: Added.

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

4 months agoimported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint.html...
sroberts@apple.com [Wed, 3 Apr 2019 00:04:48 +0000 (00:04 +0000)]
imported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=196517

Unreviewed test gardening.

* platform/mac/TestExpectations: Skipping test for flaky crashing

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

4 months ago[Mojave] Layout test fast/text/complex-initial-advance.html is failing
ryanhaddad@apple.com [Tue, 2 Apr 2019 23:33:00 +0000 (23:33 +0000)]
[Mojave] Layout test fast/text/complex-initial-advance.html is failing
https://bugs.webkit.org/show_bug.cgi?id=196512

Unreviewed test gardening.

* platform/mac/TestExpectations: Mark test as failing.

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

4 months agoFix assertion in http/tests/adClickAttribution/store-ad-click-attribution.html
achristensen@apple.com [Tue, 2 Apr 2019 23:11:43 +0000 (23:11 +0000)]
Fix assertion in http/tests/adClickAttribution/store-ad-click-attribution.html
https://bugs.webkit.org/show_bug.cgi?id=196503

Reviewed by Chris Dumez.

Source/WebKit:

In WebPageProxy::didDestroyNavigation we try to ignore a request to destroy a navigation from a page being navigated from
during a cross-site navigation, but if the old web process sends the message after WebPageProxy::commitProvisionalPage
has been called, we can still destroy a navigation when we are continuing a navigation in another process.  To prevent this,
have the process not send the message when it knows the navigation is continuing in another process.
Also make the use of unchecked navigation pointers more robust by checking it for nullity.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didCommitLoadForFrame):
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::didReceivePolicyDecision):
(WebKit::WebFrame::documentLoaderDetached):
* WebProcess/WebPage/WebFrame.h:

LayoutTests:

* http/tests/adClickAttribution/store-ad-click-attribution-expected.txt:
* http/tests/adClickAttribution/store-ad-click-attribution.html:
* platform/wk2/TestExpectations:

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

4 months ago[ews-build] Reassign bots to queues
aakash_jain@apple.com [Tue, 2 Apr 2019 23:07:49 +0000 (23:07 +0000)]
[ews-build] Reassign bots to queues

* BuildSlaveSupport/ews-build/config.json: Reassigned ews150 and ews152.

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

4 months agoXMLHttpRequestUpload's loadstart event not correct initialized
cdumez@apple.com [Tue, 2 Apr 2019 23:00:47 +0000 (23:00 +0000)]
XMLHttpRequestUpload's loadstart event not correct initialized
https://bugs.webkit.org/show_bug.cgi?id=196174
<rdar://problem/49191412>

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

* web-platform-tests/xhr/event-error-order.sub.html:
Update test after https://github.com/web-platform-tests/wpt/pull/13365

* web-platform-tests/xhr/abort-during-upload-expected.txt:
* web-platform-tests/xhr/event-error-order.sub-expected.txt:
* web-platform-tests/xhr/event-loadstart-upload-expected.txt:
* web-platform-tests/xhr/event-timeout-order-expected.txt:
* web-platform-tests/xhr/send-response-event-order-expected.txt:
Rebaseline several WPT tests that are now passing.

Source/WebCore:

Align progress event firing with the XHR specification.

No new tests, rebaselined existing tests.

* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::createRequest):
As per [1], the loadstart event fired on the XMLHttpRequestUpload object should use
loaded=0 and total=`req’s body’s total bytes`.
[1] https://xhr.spec.whatwg.org/#the-send()-method (step 11.2.)

(WebCore::XMLHttpRequest::didSendData):
As per [2], the progress / load / loadend should use loaded=transmitted and total=length.
[2] https://xhr.spec.whatwg.org/#ref-for-process-request-end-of-body (steps 5, 6 and 7)

(WebCore::XMLHttpRequest::didReceiveData):
As per [3], we should fire the readystatechange event *before* the progress event.
This is covered by web-platform-tests/xhr/send-response-event-order.htm which was failing
differently after the other changes in this patch.
[3] https://xhr.spec.whatwg.org/#ref-for-process-response (steps 9.4 and 9.5)

(WebCore::XMLHttpRequest::dispatchErrorEvents):
As per [4], in case of an error, we should fire the provided 'event' and 'loadend' with
loaded=0 and total=0.
[4] https://xhr.spec.whatwg.org/#request-error-steps (steps 7 and 8)

* xml/XMLHttpRequestUpload.cpp:
(WebCore::XMLHttpRequestUpload::dispatchProgressEvent):
* xml/XMLHttpRequestUpload.h:
Simplify XMLHttpRequestUpload. It no longer needs to store loaded / total as data
members now that they are always passed by the call site. lengthComputable is set
to !!total as [5] says to set it to true if length/total is not 0.
[5] https://xhr.spec.whatwg.org/#concept-event-fire-progress

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

4 months ago[iOS] Fix iokit-get-properties sandbox violation in the WebContent process
pvollan@apple.com [Tue, 2 Apr 2019 22:39:11 +0000 (22:39 +0000)]
[iOS] Fix iokit-get-properties sandbox violation in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=196500
<rdar://problem/49497788>

Reviewed by Brent Fulgham.

Attempting to get the iokit properties 'product-description', 'artwork-display-gamut' and
'artwork-scale-factor' is causing sandbox violations.

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

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

4 months agoWeb Inspector: Canvas: add support for showing WebGPU contexts
drousso@apple.com [Tue, 2 Apr 2019 22:19:05 +0000 (22:19 +0000)]
Web Inspector: Canvas: add support for showing WebGPU contexts
https://bugs.webkit.org/show_bug.cgi?id=196413
<rdar://problem/49438898>

Reviewed by Timothy Hatcher.

Source/WebCore:

Tests: inspector/canvas/create-context-webgpu.html
       inspector/canvas/resolveCanvasContext-webgpu.html

* Modules/webgpu/GPUCanvasContext.idl:
* Modules/webgpu/GPUCanvasContext.h:
(WebCore::GPUCanvasContext::canvas const): Added.
* Modules/webgpu/GPUCanvasContext.cpp:
(WebCore::GPUCanvasContext::create):

* testing/InternalSettings.idl:
* testing/InternalSettings.h:
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::setWebGPUEnabled): Added.

LayoutTests:

* inspector/canvas/create-context-webgpu.html: Added.
* inspector/canvas/create-context-webgpu-expected.txt: Added.
* inspector/canvas/resolveCanvasContext-webgpu.html: Added.
* inspector/canvas/resolveCanvasContext-webgpu-expected.txt: Added.

* inspector/canvas/resources/create-context-utilities.js:
(createDetachedCanvas):
(createCSSCanvas):
(destroyCanvases):
(TestPage.registerInitializer.InspectorTest.CreateContextUtilities.initializeTestSuite): Added.
(TestPage.registerInitializer.InspectorTest.CreateContextUtilities.addSimpleTestCase): Added.
(TestPage.registerInitializer.InspectorTest.CreateContextUtilities.addCSSCanvasTestCase): Added.
(TestPage.registerInitializer.window.initializeTestSuite): Deleted.
(TestPage.registerInitializer.window.addSimpleTestCase): Deleted.
(TestPage.registerInitializer.window.addCSSCanvasTestCase): Deleted.

* inspector/canvas/create-context-2d.html:
* inspector/canvas/create-context-2d-expected.txt:
* inspector/canvas/create-context-bitmaprenderer.html:
* inspector/canvas/create-context-bitmaprenderer-expected.txt:
* inspector/canvas/create-context-webgl.html:
* inspector/canvas/create-context-webgl-expected.txt:
* inspector/canvas/create-context-webgl2.html:
* inspector/canvas/create-context-webgl2-expected.txt:

* platform/gtk/TestExpectations:
* platform/ios/TestExpectations:
* platform/mac-wk1/TestExpectations:
* platform/mac/TestExpectations:
* platform/win/TestExpectations:
* platform/wincairo/TestExpectations:
* platform/wpe/TestExpectations:

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

4 months ago[WK2] Add support for Window's beforeprint / afterprint events
cdumez@apple.com [Tue, 2 Apr 2019 21:43:24 +0000 (21:43 +0000)]
[WK2] Add support for Window's beforeprint / afterprint events
https://bugs.webkit.org/show_bug.cgi?id=196478

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

* web-platform-tests/html/browsers/the-window-object/security-window/window-security.https-expected.txt:
* web-platform-tests/html/browsers/the-window-object/security-window/window-security.sub-expected.txt:
* web-platform-tests/html/browsers/the-window-object/window-properties.https-expected.txt:
* web-platform-tests/html/dom/interfaces-expected.txt:
* web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers-expected.txt:
* web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt:

Source/WebCore:

Add support for Window's beforeprint / afterprint events as per:
- https://html.spec.whatwg.org/#dom-print

Blink and Gecko already support this.

Test: printing/printing-events.html

* dom/EventNames.h:
* html/HTMLAttributeNames.in:
* html/HTMLBodyElement.cpp:
(WebCore::HTMLBodyElement::createWindowEventHandlerNameMap):
* page/Page.cpp:
(WebCore::dispatchPrintEvent):
(WebCore::Page::dispatchBeforePrintEvent):
(WebCore::Page::dispatchAfterPrintEvent):
* page/Page.h:
* page/WindowEventHandlers.idl:

Source/WebKit:

Add support for Window's beforeprint / afterprint events as per:
- https://html.spec.whatwg.org/#dom-print

Blink and Gecko already support this.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::beginPrinting):
(WebKit::WebPage::endPrinting):

Tools:

Add minimal implementation for printFrame in WebKitTestRunner.

* WebKitTestRunner/TestController.cpp:
(WTR::printFrame):
(WTR::TestController::createOtherPage):
(WTR::TestController::createWebViewWithOptions):

LayoutTests:

Add layout test coverage.

* TestExpectations:
* platform/wk2/TestExpectations:
* printing/printing-events-expected.txt: Added.
* printing/printing-events.html: Added.

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

4 months ago[ews-app] Status bubble hover over message should clearly indicate that build is...
aakash_jain@apple.com [Tue, 2 Apr 2019 21:15:08 +0000 (21:15 +0000)]
[ews-app] Status bubble hover over message should clearly indicate that build is in-progress
https://bugs.webkit.org/show_bug.cgi?id=196491

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

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

4 months ago[ContentChangeObserver] Hover menus do not function on fidelity.com
zalan@apple.com [Tue, 2 Apr 2019 21:11:50 +0000 (21:11 +0000)]
[ContentChangeObserver] Hover menus do not function on fidelity.com
https://bugs.webkit.org/show_bug.cgi?id=196507
<rdar://problem/49496520>

Reviewed by Simon Fraser.

Source/WebCore:

fidelity.com has 400ms hover intent timer to bring up the main menus.

Test: fast/events/touch/ios/content-observation/400ms-hover-intent.html

* page/ios/ContentChangeObserver.cpp:

LayoutTests:

* fast/events/touch/ios/content-observation/400ms-hover-intent-expected.txt: Added.
* fast/events/touch/ios/content-observation/400ms-hover-intent.html: Added.

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

4 months ago[ews-build] Configure buildbot try credentials in environment variables
aakash_jain@apple.com [Tue, 2 Apr 2019 21:09:18 +0000 (21:09 +0000)]
[ews-build] Configure buildbot try credentials in environment variables
https://bugs.webkit.org/show_bug.cgi?id=196501

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-build/loadConfig.py: Read credentials from environment variables.
* BuildSlaveSupport/ews-app/ews/common/buildbot.py: Rename BUILDBOT_PB_USERNAME to BUILDBOT_TRY_USERNAME.
* BuildSlaveSupport/ews-app/ews/config.py: Ditto.

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

4 months agoNSAttributedString crashes when encoding text attachment cell for missing image.
timothy@apple.com [Tue, 2 Apr 2019 21:06:49 +0000 (21:06 +0000)]
NSAttributedString crashes when encoding text attachment cell for missing image.
https://bugs.webkit.org/show_bug.cgi?id=196504
rdar://problem/49161281

Reviewed by Tim Horton.

Clean up and fix a couple of errors and crashes in the missing image path of our
attributed string converter.

Fixes include:
* Removed manual call to release on a RetainPtr, leading to autorelease pool crash.
* No longer try to load an image that is missing on disk and has long been renamed.
* No longer use a NSTextAttachmentCell in the Mac code path which can't be encoded
  for sending to the UIProcess, so it was pretty useless in the web content process.
* Stopped using NSFileWrapper for the missing image so the attachment can contain the
  retina versions of the missing image.
* Simplified bundle finding code, since WebCore is assumed to be loaded.
* Fix leak of attachment by adding missing adoptNS().

* editing/cocoa/HTMLConverter.mm:
(HTMLConverter::_addAttachmentForElement): Unify and simplify missing image path.
(_NSFirstPathForDirectoriesInDomains): Deleted.
(_NSSystemLibraryPath): Deleted.
(_webKitBundle): Deleted.

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

4 months ago[Fetch API] Allow used body replacement in Request constructor
cdumez@apple.com [Tue, 2 Apr 2019 20:48:19 +0000 (20:48 +0000)]
[Fetch API] Allow used body replacement in Request constructor
https://bugs.webkit.org/show_bug.cgi?id=183703
<rdar://problem/49425609>

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT test now that one more check is passing.

* web-platform-tests/fetch/api/request/request-disturbed-expected.txt:

Source/WebCore:

Allow used body replacement in Request constructor as per:
- https://github.com/whatwg/fetch/pull/675

No new tests, rebaseline existing test.

* Modules/fetch/FetchRequest.cpp:
(WebCore::FetchRequest::initializeWith):

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

4 months agoUnreviewed, rolling out r243551.
cdumez@apple.com [Tue, 2 Apr 2019 20:30:02 +0000 (20:30 +0000)]
Unreviewed, rolling out r243551.

Seems to have broken file uploads to SoundCloud

Reverted changeset:

"XMLHttpRequestUpload's loadstart event not correct
initialized"
https://bugs.webkit.org/show_bug.cgi?id=196174
https://trac.webkit.org/changeset/243551

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

4 months agoSource/WebCore:
justin_fan@apple.com [Tue, 2 Apr 2019 19:59:55 +0000 (19:59 +0000)]
Source/WebCore:
[Web GPU] Implement blend states and color write mask for GPUColorStateDescriptor
https://bugs.webkit.org/show_bug.cgi?id=196474

Reviewed by Myles C. Maxfield.

Blend states and color write masks must now be specified on GPUColorStateDescriptor instead of
relying on underlying MTLRenderPipelineColorAttachmentDescriptor defaults.

Test: webgpu/blend-triangle-strip.html, webgpu/color-write-mask-triangle-strip.html

* CMakeLists.txt:
* DerivedSources-input.xcfilelist:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* Modules/webgpu/GPUBlendDescriptor.idl:
* Modules/webgpu/GPUColorStateDescriptor.idl:
* Modules/webgpu/GPUColorWriteBits.idl:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* platform/graphics/gpu/GPUBlendDescriptor.h:
* platform/graphics/gpu/GPUColorStateDescriptor.h:
* platform/graphics/gpu/GPUColorWriteBits.h:
* platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:
(WebCore::mtlColorWriteMaskForGPUColorWriteFlags):
(WebCore::mtlBlendOperationForGPUBlendOperation):
(WebCore::mtlBlendFactorForGPUBlendFactor):
(WebCore::setColorStatesForColorAttachmentArray):
(WebCore::tryCreateMtlRenderPipelineState):
(WebCore::trySetColorStatesForColorAttachmentArray): Deleted.

LayoutTests:
[Web GPU] Implement blend states and color write mask for  GPUColorStateDescriptor
https://bugs.webkit.org/show_bug.cgi?id=196474

Reviewed by Myles C. Maxfield.

Add blend-triangle-strip to test color blending and color-write-mask-triangle-strip.html to test color write mask.
Update other tests to specify blend states when creating a GPURenderPipeline.

* webgpu/blend-triangle-strip-expected.html: Added.
* webgpu/blend-triangle-strip.html: Added.
* webgpu/buffer-command-buffer-races.html:
* webgpu/buffer-resource-triangles.html:
* webgpu/color-write-mask-triangle-strip-expected.html: Added.
* webgpu/color-write-mask-triangle-strip.html: Added.
* webgpu/depth-enabled-triangle-strip.html:
* webgpu/js/webgpu-functions.js:
* webgpu/render-pipelines.html:
* webgpu/texture-triangle-strip.html:
* webgpu/vertex-buffer-triangle-strip.html:
* webgpu/whlsl.html:

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

4 months agoCrash in Options::setOptions() using --configFile option and libgmalloc
msaboff@apple.com [Tue, 2 Apr 2019 19:56:58 +0000 (19:56 +0000)]
Crash in Options::setOptions() using --configFile option and libgmalloc
https://bugs.webkit.org/show_bug.cgi?id=196506

Reviewed by Keith Miller.

Changed to call CString::data() while making the call to Options::setOptions().  This keeps
the implicit CString temporary alive until after setOptions() returns.

* runtime/ConfigFile.cpp:
(JSC::ConfigFile::parse):

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

4 months agoREGRESSION (r243726): Crash at unrecognized selector: -[WKWebpagePreferences webpageP...
wenson_hsieh@apple.com [Tue, 2 Apr 2019 19:46:30 +0000 (19:46 +0000)]
REGRESSION (r243726): Crash at unrecognized selector: -[WKWebpagePreferences webpagePreferences]
https://bugs.webkit.org/show_bug.cgi?id=196496
<rdar://problem/49521634>

Reviewed by Chris Dumez.

Source/WebKit:

r243726 made an incorrect assumption that all callers of -decidePolicyForNavigationAction:decisionHandler: and
-decidePolicyForNavigationAction:userInfo:decisionHandler: must be instances of _WKWebsitePolicies, as opposed
to the new WKWebpagePreferences. However, it's possible for clients (in this case, Safari) to already generate
and pass in an instance of WKWebpagePreferences by bridging the C API opaque ref (WKWebsitePoliciesRef) into the
Objective-C object (which is now WKWebpagePreferences, after my change).

To maintain binary compatibility of trunk WebKit against prior versions of Safari, we need to handle both
WKWebpagePreferences and the soon-to-be-deprecated _WKWebsitePolicies in the navigation action policy decision
handler.

Tests:  WebKit.WebsitePoliciesWithBridgingCast
        WebKit.WebsitePoliciesWithUnexpectedType

* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

Tools:

Add new API tests (see WebKit ChangeLog for more detail).

* TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
(-[WebsitePoliciesNavigationDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]):
(TEST):

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

4 months ago[ContentChangeObserver] Ignore reconstructed renderers when checking for visibility...
zalan@apple.com [Tue, 2 Apr 2019 19:43:51 +0000 (19:43 +0000)]
[ContentChangeObserver] Ignore reconstructed renderers when checking for visibility change
https://bugs.webkit.org/show_bug.cgi?id=196483
<rdar://problem/49288174>

Reviewed by Simon Fraser.

Source/WebCore:

This patch fixes the cases when the content gets reconstructed in a way that existing and visible elements gain
new renderers within one style recalc. We failed to recognize such cases and ended up detecting the newly constructed renderers
as "visible change" thereby triggering hover.

Test: fast/events/touch/ios/content-observation/visible-content-gains-new-renderer.html

* page/ios/ContentChangeObserver.cpp:
(WebCore::ContentChangeObserver::renderTreeUpdateDidStart):
(WebCore::ContentChangeObserver::renderTreeUpdateDidFinish):
(WebCore::ContentChangeObserver::reset):
(WebCore::ContentChangeObserver::willDestroyRenderer):
(WebCore::ContentChangeObserver::StyleChangeScope::StyleChangeScope):
(WebCore::ContentChangeObserver::RenderTreeUpdateScope::RenderTreeUpdateScope):
(WebCore::ContentChangeObserver::RenderTreeUpdateScope::~RenderTreeUpdateScope):
* page/ios/ContentChangeObserver.h:
(WebCore::ContentChangeObserver::visibleRendererWasDestroyed const):
* rendering/updating/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::updateRenderTree):
(WebCore::RenderTreeUpdater::tearDownRenderers):

LayoutTests:

* fast/events/touch/ios/content-observation/visible-content-gains-new-renderer-expected.txt: Added.
* fast/events/touch/ios/content-observation/visible-content-gains-new-renderer.html: Added.

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

4 months agoRename CLANG_ADDRESS_SANITIZER Xcode variable to ENABLE_ADDRESS_SANITIZER
ddkilzer@apple.com [Tue, 2 Apr 2019 19:41:02 +0000 (19:41 +0000)]
Rename CLANG_ADDRESS_SANITIZER Xcode variable to ENABLE_ADDRESS_SANITIZER
<https://webkit.org/b/196499>

Reviewed by Alexey Proskuryakov.

* asan/asan.xcconfig: Change CLANG_ADDRESS_SANITIZER to
ENABLE_ADDRESS_SANITIZER.

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

4 months agoaccessibility/mac/press-not-work-for-disabled-menu-list.html is a flaky failure
sroberts@apple.com [Tue, 2 Apr 2019 19:08:42 +0000 (19:08 +0000)]
accessibility/mac/press-not-work-for-disabled-menu-list.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196505

Unreviewed test gardening.

* platform/mac/TestExpectations: Updating test expectations for flaky failure

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

4 months agomedia/video-background-tab-playback.html is a flaky failure
sroberts@apple.com [Tue, 2 Apr 2019 18:36:38 +0000 (18:36 +0000)]
media/video-background-tab-playback.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196502

Unreviewed test gardening

* platform/mac-wk1/TestExpectations: Updating test expectations for flaky failure

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

4 months agoInhibit CFNetwork logging in private sessions
krollin@apple.com [Tue, 2 Apr 2019 17:46:07 +0000 (17:46 +0000)]
Inhibit CFNetwork logging in private sessions
https://bugs.webkit.org/show_bug.cgi?id=196268
<rdar://problem/48210793>

Fix a conditional in Platform.h where IOS should have been used
instead of IOS_FAMILY. The latter happened to work, but we really want
to be using the proper symbol here.

Reviewed by Alexey Proskuryakov.

* wtf/Platform.h:

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

4 months ago[CMake] WEBKIT_MAKE_FORWARDING_HEADERS shouldn't use POST_BUILD to copy generated...
Hironori.Fujii@sony.com [Tue, 2 Apr 2019 16:33:02 +0000 (16:33 +0000)]
[CMake] WEBKIT_MAKE_FORWARDING_HEADERS shouldn't use POST_BUILD to copy generated headers
https://bugs.webkit.org/show_bug.cgi?id=182757

Reviewed by Don Olmstead.

.:

Some generated headers need to be exported to its client modules.
Before this change, WEBKIT_MAKE_FORWARDING_HEADERS copies all *.h
files in the directory specified by DERIVED_SOURCE_DIRECTORIES
parameter. The copy operation was triggered by POST_BUILD event.

This caused build dependency issues for Ninja builds. This change
remove the DERIVED_SOURCE_DIRECTORIES parameter. And list all
generated headers explicitly which need to be copied.

* Source/cmake/WebKitMacros.cmake: Removed
DERIVED_SOURCE_DIRECTORIES parameter of
WEBKIT_MAKE_FORWARDING_HEADERS. Accept absolute paths for FILES
parameter.

Source/JavaScriptCore:

* CMakeLists.txt: Do not use DERIVED_SOURCE_DIRECTORIES parameter
of WEBKIT_MAKE_FORWARDING_HEADERS. Added generated headers to
JavaScriptCore_PRIVATE_FRAMEWORK_HEADERS.

Source/WebCore:

No new tests because no behavior changes.

* PlatformWin.cmake: Do not use DERIVED_SOURCE_DIRECTORIES of
WEBKIT_MAKE_FORWARDING_HEADERS. Added
WebCore_PRIVATE_FRAMEWORK_HEADERS.
* WebCoreMacros.cmake (GENERATE_DOM_NAMES): Added
${_namespace}ElementTypeHelpers.h to _outputfiles.

Source/WebKitLegacy:

* PlatformWin.cmake: Do not use DERIVED_SOURCE_DIRECTORIES
parameter of WEBKIT_MAKE_FORWARDING_HEADERS. Added
WebKitLegacyGUID_PRIVATE_FRAMEWORK_HEADERS.

Tools:

* TestWebKitAPI/PlatformGTK.cmake: Removed the workaround of using an intermediate target.
* TestWebKitAPI/PlatformWPE.cmake: Ditto.

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

4 months agoinspector/audit/basic.html is a flaky timeout on bots
sroberts@apple.com [Tue, 2 Apr 2019 16:23:22 +0000 (16:23 +0000)]
inspector/audit/basic.html is a flaky timeout on bots
https://bugs.webkit.org/show_bug.cgi?id=196448

Unreviewed test gardening

* platform/mac-wk1/TestExpectations:
* platform/mac-wk2/TestExpectations: Updating test expectaions for flaky timeout

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

4 months agoAdd a ValueRepReduction phase
sbarati@apple.com [Tue, 2 Apr 2019 15:58:34 +0000 (15:58 +0000)]
Add a ValueRepReduction phase
https://bugs.webkit.org/show_bug.cgi?id=196234

Reviewed by Filip Pizlo.

This patch adds a ValueRepReduction phase. The main idea here is
to try to reduce DoubleRep(RealNumberUse:ValueRep(DoubleRepUse:@x))
to just be @x. This patch handles such above strengh reduction rules
as long as we prove that all users of the ValueRep can be converted
to using the incoming double value. That way we prevent introducing
a parallel live range for the double value.

This patch tracks the uses of the ValueRep through Phi variables,
so we can convert entire Phi variables to being Double instead
of JSValue if the Phi also has only double uses.

This is implemented through a simple escape analysis. DoubleRep(RealNumberUse:)
and OSR exit hints are not counted as escapes. All other uses are counted
as escapes. Connected Phi graphs are converted to being Double only if the
entire graph is ok with the result being Double.

Some ways we could extend this phase in the future:
- There are a lot of DoubleRep(NumberUse:@ValueRep(@x)) uses. This ensures
  that the result of the DoubleRep of @x is not impure NaN. We could
  handle this case if we introduced a PurifyNaN node and replace the DoubleRep
  with PurifyNaN(@x). Alternatively, we could see if certain users of this
  DoubleRep are okay with impure NaN flowing into them and we'd need to ensure
  their output type is always treated as if the input is impure NaN.
- We could do sinking of ValueRep where we think it's profitable. So instead
  of an escape making it so we never represent the variable as a Double, we
  could make the escape reconstruct the JSValueRep where profitable.
- We can extend this phase to handle Int52Rep if it's profitable.
- We can opt other nodes into accepting incoming Doubles so we no longer
  treat them as escapes.

This patch is somewhere between neutral and a 1% progression on JetStream 2.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThreadImpl):
* dfg/DFGValueRepReductionPhase.cpp: Added.
(JSC::DFG::ValueRepReductionPhase::ValueRepReductionPhase):
(JSC::DFG::ValueRepReductionPhase::run):
(JSC::DFG::ValueRepReductionPhase::convertValueRepsToDouble):
(JSC::DFG::performValueRepReduction):
* dfg/DFGValueRepReductionPhase.h: Added.
* runtime/Options.h:

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

4 months agofast/viewport/ios/constant-width-viewport-after-changing-view-scale.html is a flaky...
sroberts@apple.com [Tue, 2 Apr 2019 15:57:38 +0000 (15:57 +0000)]
fast/viewport/ios/constant-width-viewport-after-changing-view-scale.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=195341

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations: Updating test expecations for flaky failure

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

4 months agofast/viewport/ios/viewport-shrink-to-fit-on-new-navigation.html is a flaky failure
sroberts@apple.com [Tue, 2 Apr 2019 15:50:13 +0000 (15:50 +0000)]
fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196495

Unreviewed test gardening

* platform/ios-simulator-wk2/TestExpectations: Updating test expectations for flaky failure

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

4 months ago[GSteamer][WebRTC] Fix building libwebrtc on ARM
commit-queue@webkit.org [Tue, 2 Apr 2019 14:47:41 +0000 (14:47 +0000)]
[GSteamer][WebRTC] Fix building libwebrtc on ARM
https://bugs.webkit.org/show_bug.cgi?id=196157

Patch by Thibault Saunier <tsaunier@igalia.com> on 2019-04-02
Reviewed by Philippe Normand.

Making sure neon files are built as required

* CMakeLists.txt:

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

4 months agoREGRESSION(r243512): Change locale of test in intl-datetimeformat.js
dpino@igalia.com [Tue, 2 Apr 2019 14:31:27 +0000 (14:31 +0000)]
REGRESSION(r243512): Change locale of test in intl-datetimeformat.js
https://bugs.webkit.org/show_bug.cgi?id=196395

r243512 modifes Intl.DateTimeFormat to obey 2-digit hour. A test was
added to test 2-digit hour in Russian using 12-hour setting as true and
false. In the former case, the expected string appends the string 'AM'
in Russian. This localised string made GTK-based ports fail since
according to Glib the 'am_pm' values in Russian are not localised.

This patch keeps the same test but changes locale to 'en' to prevent
the test from failing.

Reviewed by Michael Catanzaro.

* js/intl-datetimeformat-expected.txt:
* js/script-tests/intl-datetimeformat.js:
* platform/gtk/js/intl-datetimeformat-expected.txt:

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

4 months agoUpdate the status of ResizeObserver in features.json.
commit-queue@webkit.org [Tue, 2 Apr 2019 10:59:02 +0000 (10:59 +0000)]
Update the status of ResizeObserver in features.json.
https://bugs.webkit.org/show_bug.cgi?id=196443

Patch by Cathie Chen <cathiechen@igalia.com> on 2019-04-02
Reviewed by Rob Buis.

* features.json:

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

4 months agoNullptr crash in Document::open after calling policyChecker().stopCheck()
rniwa@webkit.org [Tue, 2 Apr 2019 06:44:45 +0000 (06:44 +0000)]
Nullptr crash in Document::open after calling policyChecker().stopCheck()
https://bugs.webkit.org/show_bug.cgi?id=196479

Reviewed by Antti Koivisto.

Added a missing nullptr check in Document::open after calling m_frame->loader().policyChecker().stopCheck()
since it invokes m_willSubmitFormCompletionHandlers in WebKit2, and that could clear m_frame.

Unfortunately, we don't have any reproducible test case.

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

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

4 months agoSkip the tests added in r236519 on iOS. This feature was never implemented in iOS.
rniwa@webkit.org [Tue, 2 Apr 2019 06:23:42 +0000 (06:23 +0000)]
Skip the tests added in r236519 on iOS. This feature was never implemented in iOS.

* platform/ios/TestExpectations:

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

4 months agoUnreviewed build fix.
timothy@apple.com [Tue, 2 Apr 2019 04:01:59 +0000 (04:01 +0000)]
Unreviewed build fix.

* crypto/mac/SerializedCryptoKeyWrapMac.mm:
(WebCore::createAndStoreMasterKey): Add ALLOW_DEPRECATED_DECLARATIONS_BEGIN/END
around SecTrustedApplicationCreateFromPath call.

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

4 months agoRemove some unused iOS scrolling-related code in Frame
simon.fraser@apple.com [Tue, 2 Apr 2019 03:16:48 +0000 (03:16 +0000)]
Remove some unused iOS scrolling-related code in Frame
https://bugs.webkit.org/show_bug.cgi?id=196473

Reviewed by Zalan Bujtas.

This code has no callers.

* page/Frame.cpp:
(WebCore::Frame::Frame):
(WebCore::Frame::scrollOverflowLayer): Deleted.
(WebCore::Frame::overflowAutoScrollTimerFired): Deleted.
(WebCore::Frame::startOverflowAutoScroll): Deleted.
(WebCore::Frame::checkOverflowScroll): Deleted.
* page/Frame.h:

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

4 months agoAttr nodes are not cloned properly
cdumez@apple.com [Tue, 2 Apr 2019 03:14:50 +0000 (03:14 +0000)]
Attr nodes are not cloned properly
https://bugs.webkit.org/show_bug.cgi?id=196466

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline WPT test now that one more check is passing.

* web-platform-tests/dom/nodes/Document-importNode-expected.txt:

Source/WebCore:

Attr nodes are not cloned properly according to:
- https://dom.spec.whatwg.org/#concept-node-clone

A cloned Attr node should retain its prefix and namespace.

Both Gecko and Blink agree with the DOM specification here.

No new tests, rebaselined existing test.

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

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

4 months agoUnreviewed, drop debug logging landed as part of r242903 by mistake.
cdumez@apple.com [Tue, 2 Apr 2019 03:12:39 +0000 (03:12 +0000)]
Unreviewed, drop debug logging landed as part of r242903 by mistake.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::decidePolicyForNavigationAction):

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

4 months agorun-api-tests: Upload test results
jbedard@apple.com [Tue, 2 Apr 2019 02:57:05 +0000 (02:57 +0000)]
run-api-tests: Upload test results
https://bugs.webkit.org/show_bug.cgi?id=196323
<rdar://problem/49356714>

Reviewed by Lucas Forschler.

* Scripts/webkitpy/api_tests/manager.py:
(Manager):
(Manager.run): Upload results to a results database.
* Scripts/webkitpy/api_tests/run_api_tests.py:
(parse_args): Add upload arguments.
* Scripts/webkitpy/port/base.py:
(Port):
(Port.configuration_for_upload): Creates a configuration dictionary for uploading results.
(Port.commits_for_upload): Create a list of commits from the WebKit repository tests are run from along
with commits from any other associated repositories.
* Scripts/webkitpy/port/device.py:
(Device):
(Device.build_version): Access build_versoin of underlying platform device.
* Scripts/webkitpy/port/ios_simulator_unittest.py:
(IOSSimulatorTest):
(IOSSimulatorTest.test_configuration_for_upload):
* Scripts/webkitpy/port/device_port.py:
(DevicePort):
(DevicePort.configuration_for_upload): Devices are unique because their configuration is not
the same as the machine uploading results.
* Scripts/webkitpy/port/mac.py:
(MacPort):
(MacPort.configuration_for_upload): Define SDK in upload configuration for Mac.
* Scripts/webkitpy/port/mac_unittest.py:
(MacTest):
(MacTest.test_configuration_for_upload):
* Scripts/webkitpy/xcode/simulated_device.py:
(SimulatedDeviceManager._create_device_with_runtime):
(SimulatedDevice.__init__): Create simulated device with a build_version.
* Scripts/webkitpy/xcode/simulated_device_unittest.py:
(test_existing_simulator):

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

4 months agoAdd SPI to give injected bundles access to displayed PDFDocuments
commit-queue@webkit.org [Tue, 2 Apr 2019 02:04:30 +0000 (02:04 +0000)]
Add SPI to give injected bundles access to displayed PDFDocuments
https://bugs.webkit.org/show_bug.cgi?id=196471
<rdar://problem/48080768>

Patch by Remy Demarest <rdemarest@apple.com> on 2019-04-01
Reviewed by Tim Horton.

* WebKit.xcodeproj/project.pbxproj:

* WebProcess/InjectedBundle/API/c/mac/WKBundlePageMac.h: Added.
* WebProcess/InjectedBundle/API/c/mac/WKBundlePageMac.mm: Added.
(WKBundlePageGetPDFDocumentInFrame):

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

4 months agoRemove the SVG tear off objects for SVGMatrix, SVGTransfrom, SVGTransformList and...
commit-queue@webkit.org [Tue, 2 Apr 2019 01:31:54 +0000 (01:31 +0000)]
Remove the SVG tear off objects for SVGMatrix, SVGTransfrom, SVGTransformList and SVGAnimatedTransformList
https://bugs.webkit.org/show_bug.cgi?id=196086

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-04-01
Reviewed by Simon Fraser.

Source/WebCore:

The IDL changes:

SVGTransform.idl:
    Remove the NewObject qualifier from matrix attribute. This matches
    the specs: https://www.w3.org/TR/SVG11/coords.html#InterfaceSVGTransform.
    SVGTransform will internally hold an SVGMatrix. A change in this
    SVGMatrix will affect the container SVGTransform.

SVGTransformList.idl:
    Remove the NewObject qualifier from consolidate() method. This matches
    the specs:
    https://www.w3.org/TR/SVG11/coords.html#__svg__SVGTransformList__consolidate
    The method consolidate() should return a reference to the first item
    in the list after consolidating it.

Code changes:

-- SVGMatrix is now a superclass of SVGValueProperty<AffineTransform>.
   No need for SVGMatrixValue since it was wrapper of AffineTransform.

-- SVGTransformValue now holds a Ref<SVGMatrix> member in addition to the
   angle and the rotationCenter. Ref<SVGMatrix> is what SVGTransform.matrix
   will return. So a change in this matrix will change the owner SVGTransform.

-- SVGTransform is now the owner of SVGMatrix via its SVGTransformValue.

-- SVGTransformList is now a superclass of SVGValuePropertyList<SVGTransform>.
   It is responsible for parsing a String to items of SVGTransform.

-- SVGAnimatedTransformList is now defined as SVGAnimatedPropertyList<
   SVGTransformList>.

Note the ownership chain of these objects is the following:

-- SVGAnimatedTransformList owns the SVGTransformList via its baseVal
   and animVal members.

-- SVGTransformList owns SVGTransform via its list of items

-- SVGTransform owns SVGMatrix via its SVGTransformValue.

   So a change in SVGMatrix will propagate to the owner SVGElement through
   the following ownership chain:

   SVGMatrix
     |_ SVGTransfrom
          |_ SVGTransformList
               |_ SVGAmimatedTransformList
                    |_ SVGElement

To get the mechanics of this change right, a new accessor, a new animator
and animation functions are added for the SVGAnimatedTransformList.

-- SVGViewSpec used to hold an SVGAnimatedTransformListAttribute for the
member m_transform although this member should not be animated. See the
comment in the old SVGViewSpec::transform(). This has been changed in this
patch. SVGViewSpec now holds Ref<SVGTransformList> which matches the specs:
https://www.w3.org/TR/SVG11/types.html#InterfaceSVGViewSpec.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* svg/SVGAnimateElementBase.cpp:
(WebCore::SVGAnimateElementBase::attributeAnimationController):
(WebCore::SVGAnimateElementBase::hasValidAttributeType const):
(WebCore::SVGAnimateElementBase::calculateToAtEndOfDurationValue):
(WebCore::SVGAnimateElementBase::calculateFromAndToValues):
(WebCore::SVGAnimateElementBase::calculateFromAndByValues):
* svg/SVGAnimateElementBase.h:
(WebCore::SVGAnimateElementBase::animateRangeString const):
* svg/SVGAnimateTransformElement.cpp:
(WebCore::SVGAnimateTransformElement::animateRangeString const):
* svg/SVGAnimateTransformElement.h:
        This change is needed because animating the transform attribute can be
written as
    <animate ... from="translate(100)" to="translate(200)"/>
or
    <animateTransform type="translate" from="100" to="200"/>"
So we need to surround the animation range string with the type qualifier
for animateTransform.

* svg/SVGAnimatedTransformList.cpp: Removed.
* svg/SVGAnimatedTransformList.h: Removed.
* svg/SVGAnimatedType.h: Removed.
* svg/SVGAnimatedTypeAnimator.cpp: Removed.
* svg/SVGAnimatedTypeAnimator.h: Removed.
* svg/SVGAnimationElement.cpp:
(WebCore::SVGAnimationElement::adjustForInheritance): Deleted.
* svg/SVGAnimationElement.h:
(WebCore::SVGAnimationElement::adjustForInheritance): Deleted.
(WebCore::SVGAnimationElement::adjustFromToListValues): Deleted.
(WebCore::SVGAnimationElement::animateDiscreteType): Deleted.
These functions were used by SVGLegacyAttributeAnimationController.

* svg/SVGAnimatorFactory.h: Removed.
* svg/SVGExternalResourcesRequired.h:
(WebCore::SVGExternalResourcesRequired::isKnownAttribute):
* svg/SVGFEImageElement.h:
* svg/SVGFEMorphologyElement.h:
* svg/SVGFETileElement.h:
* svg/SVGFitToViewBox.h:
(WebCore::SVGFitToViewBox::isKnownAttribute):
* svg/SVGGradientElement.cpp:
(WebCore::SVGGradientElement::SVGGradientElement):
(WebCore::SVGGradientElement::parseAttribute):
(WebCore::SVGGradientElement::registerAttributes): Deleted.
* svg/SVGGradientElement.h:
(WebCore::SVGGradientElement::gradientTransform const):
(WebCore::SVGGradientElement::gradientTransformAnimated):
(WebCore::SVGGradientElement::isKnownAttribute):
* svg/SVGGraphicsElement.cpp:
(WebCore::SVGGraphicsElement::SVGGraphicsElement):
(WebCore::SVGGraphicsElement::animatedLocalTransform const):
(WebCore::SVGGraphicsElement::parseAttribute):
(WebCore::SVGGraphicsElement::svgAttributeChanged):
There is one attribute for this element which is "SVGNames::transformAttr"
So there is no need to check for it twice.

(WebCore::SVGGraphicsElement::registerAttributes): Deleted.
* svg/SVGGraphicsElement.h:
(WebCore::SVGGraphicsElement::transform const):
(WebCore::SVGGraphicsElement::transformAnimated):
(WebCore::SVGGraphicsElement::isKnownAttribute): Deleted.
* svg/SVGLangSpace.cpp:
(WebCore::SVGLangSpace::SVGLangSpace):
(WebCore::SVGLangSpace::xmlspace const):
(WebCore::SVGLangSpace::isKnownAttribute):
(WebCore::SVGLangSpace::svgAttributeChanged):
(WebCore::SVGLangSpace::registerAttributes): Deleted.
* svg/SVGLangSpace.h:
(WebCore::SVGLangSpace::xmllang const):
(WebCore::SVGLangSpace::setXmllang):
(WebCore::SVGLangSpace::setXmlspace):
(WebCore::SVGLangSpace::attributeRegistry): Deleted.
(WebCore::SVGLangSpace::isKnownAttribute): Deleted.
* svg/SVGLegacyAttributeAnimationController.cpp: Removed.
* svg/SVGLegacyAttributeAnimationController.h: Removed.
* svg/SVGLinearGradientElement.cpp:
(WebCore::setGradientAttributes):
* svg/SVGMaskElement.h:
* svg/SVGMatrix.h:
(WebCore::SVGMatrix::create):
(WebCore::SVGMatrix::a const):
(WebCore::SVGMatrix::setA):
(WebCore::SVGMatrix::b const):
(WebCore::SVGMatrix::setB):
(WebCore::SVGMatrix::c const):
(WebCore::SVGMatrix::setC):
(WebCore::SVGMatrix::d const):
(WebCore::SVGMatrix::setD):
(WebCore::SVGMatrix::e const):
(WebCore::SVGMatrix::setE):
(WebCore::SVGMatrix::f const):
(WebCore::SVGMatrix::setF):
(WebCore::SVGMatrix::multiply const):
(WebCore::SVGMatrix::inverse const):
(WebCore::SVGMatrix::translate const):
(WebCore::SVGMatrix::scale const):
(WebCore::SVGMatrix::scaleNonUniform const):
(WebCore::SVGMatrix::rotate const):
(WebCore::SVGMatrix::rotateFromVector const):
(WebCore::SVGMatrix::flipX const):
(WebCore::SVGMatrix::flipY const):
(WebCore::SVGMatrix::skewX const):
(WebCore::SVGMatrix::skewY const):
* svg/SVGPatternElement.cpp:
(WebCore::SVGPatternElement::SVGPatternElement):
(WebCore::SVGPatternElement::parseAttribute):
(WebCore::SVGPatternElement::svgAttributeChanged):
(WebCore::SVGPatternElement::collectPatternAttributes const):
(WebCore::SVGPatternElement::localCoordinateSpaceTransform const):
(WebCore::SVGPatternElement::registerAttributes): Deleted.
* svg/SVGPatternElement.h:
* svg/SVGPoint.h:
(WebCore::SVGPoint::matrixTransform const):
* svg/SVGPolyElement.h:
(WebCore::SVGPolyElement::isKnownAttribute): Deleted.
* svg/SVGRadialGradientElement.cpp:
(WebCore::setGradientAttributes):
* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::createSVGTransform):
(WebCore::SVGSVGElement::createSVGTransformFromMatrix):
(WebCore::SVGSVGElement::viewBoxToViewTransform const):
* svg/SVGTextElement.cpp:
(WebCore::SVGTextElement::animatedLocalTransform const):
* svg/SVGTransform.cpp: Removed.
* svg/SVGTransform.h:
(WebCore::SVGTransform::create):
(WebCore::SVGTransform::~SVGTransform):
(WebCore::SVGTransform::clone const):
(WebCore::SVGTransform::type):
(WebCore::SVGTransform::angle):
(WebCore::SVGTransform::matrix):
(WebCore::SVGTransform::setMatrix):
(WebCore::SVGTransform::setTranslate):
(WebCore::SVGTransform::setScale):
(WebCore::SVGTransform::setRotate):
(WebCore::SVGTransform::setSkewX):
(WebCore::SVGTransform::setSkewY):
(WebCore::SVGTransform::SVGTransform):
* svg/SVGTransform.idl:
* svg/SVGTransformList.h:
* svg/SVGTransformList.idl:
* svg/SVGTransformListValues.cpp: Removed.
* svg/SVGTransformListValues.h: Removed.
* svg/SVGTransformValue.cpp: Removed.
* svg/SVGTransformValue.h:
(WebCore::SVGTransformValue::SVGTransformValue):
(WebCore::SVGTransformValue::operator=):
(WebCore::SVGTransformValue::matrix const):
(WebCore::SVGTransformValue::rotationCenter const):
(WebCore::SVGTransformValue::isValid const):
(WebCore::SVGTransformValue::setMatrix):
(WebCore::SVGTransformValue::matrixDidChange):
(WebCore::SVGTransformValue::translate const):
(WebCore::SVGTransformValue::setTranslate):
(WebCore::SVGTransformValue::scale const):
(WebCore::SVGTransformValue::setScale):
(WebCore::SVGTransformValue::setRotate):
(WebCore::SVGTransformValue::setSkewX):
(WebCore::SVGTransformValue::setSkewY):
(WebCore::SVGTransformValue::valueAsString const):
(WebCore::SVGTransformValue::prefixForTransfromType):
(WebCore::SVGTransformValue::appendNumbers const):
(WebCore::SVGTransformValue::appendMatrix const):
(WebCore::SVGTransformValue::appendTranslate const):
(WebCore::SVGTransformValue::appendScale const):
(WebCore::SVGTransformValue::appendRotate const):
(WebCore::SVGTransformValue::appendSkewX const):
(WebCore::SVGTransformValue::appendSkewY const):
(WebCore::SVGTransformValue::matrix): Deleted.
* svg/SVGTransformable.cpp:
(WebCore::SVGTransformable::parseAndSkipType):
(WebCore::parseAndSkipType): Deleted.
(WebCore::SVGTransformable::parseTransformAttribute): Deleted.
The code of this function was moved to SVGTransformList::parse().

* svg/SVGTransformable.h:
There is no need for enum TransformParsingMode. It was used by
SVGViewSpec::parseViewSpec() to tell SVGTransformable::parseTransformAttribute()
not to clear the list. SVGTransfromList now has two parse() functions:
one public and the second is private. The public one clear the list
before parsing the input String. The private one just does the parsing.
SVGViewSpec::parseViewSpec() calls the private once since it is a friend
of SVGTransfromList.

* svg/SVGValue.h: Removed.
* svg/SVGViewSpec.cpp:
(WebCore::SVGViewSpec::SVGViewSpec):
(WebCore::SVGViewSpec::reset):
(WebCore::SVGViewSpec::parseViewSpec):
(WebCore::SVGViewSpec::registerAttributes): Deleted.
(WebCore::SVGViewSpec::transform): Deleted.
* svg/SVGViewSpec.h:
* svg/properties/SVGAnimatedPropertyAccessorImpl.h:
* svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
* svg/properties/SVGAnimatedPropertyImpl.h:
* svg/properties/SVGAnimatedTransformListPropertyTearOff.h: Removed.
* svg/properties/SVGAnimationAdditiveListFunctionImpl.h:
(WebCore::SVGAnimationTransformListFunction::progress):
* svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
* svg/properties/SVGAttributeRegistry.h:
* svg/properties/SVGMatrixTearOff.h: Removed.
* svg/properties/SVGPropertyAccessorImpl.h:
* svg/properties/SVGPropertyOwnerRegistry.h:
(WebCore::SVGPropertyOwnerRegistry::registerProperty):

LayoutTests:

* svg/dom/SVGTransformList-basics-expected.txt:
* svg/dom/SVGTransformList-basics.xhtml:
These changes are required because SVGTransfromList will be following the
SVG2 specs regarding adding new items to the list.

See https://www.w3.org/TR/SVG/types.html#TermListInterface.

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

4 months ago[CMake] Remove EXTRA_DIRECTORIES parameter of WEBKIT_MAKE_FORWARDING_HEADERS
Hironori.Fujii@sony.com [Tue, 2 Apr 2019 01:08:38 +0000 (01:08 +0000)]
[CMake] Remove EXTRA_DIRECTORIES parameter of WEBKIT_MAKE_FORWARDING_HEADERS
https://bugs.webkit.org/show_bug.cgi?id=196436

Reviewed by Darin Adler.

The parameter was only for WebCore/ForwardingHeaders which was
removed in Bug 182347.

* Source/cmake/WebKitMacros.cmake: Remove unused EXTRA_DIRECTORIES parameter.

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

4 months agoRemove extra newline characters (Follow-up fix to r243707)
aakash_jain@apple.com [Tue, 2 Apr 2019 00:26:08 +0000 (00:26 +0000)]
Remove extra newline characters (Follow-up fix to r243707)

* BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

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

4 months agoWeb Inspector: Debugger: modernize serialization of breakpoints and the maps that...
drousso@apple.com [Tue, 2 Apr 2019 00:20:11 +0000 (00:20 +0000)]
Web Inspector: Debugger: modernize serialization of breakpoints and the maps that hold them
https://bugs.webkit.org/show_bug.cgi?id=196230
<rdar://problem/49236485>

Reviewed by Joseph Pecoraro.

* UserInterface/Controllers/DebuggerManager.js:
(WI.DebuggerManager):
(WI.DebuggerManager.prototype.breakpointsForSourceCode):
(WI.DebuggerManager.prototype.addBreakpoint):
(WI.DebuggerManager.prototype.removeBreakpoint):
(WI.DebuggerManager.prototype._setBreakpoint):
(WI.DebuggerManager.prototype._setBreakpoint.didSetBreakpoint):

* UserInterface/Models/Breakpoint.js:
(WI.Breakpoint):
(WI.Breakpoint.fromJSON): Added.
(WI.Breakpoint.prototype.toJSON):
(WI.Breakpoint.prototype.set resolved):
(WI.Breakpoint.prototype.recreateAction):
(WI.Breakpoint.prototype.saveIdentityToCookie):
(WI.Breakpoint.prototype._isSpecial): Added.
(WI.Breakpoint.set resolved.isSpecialBreakpoint): Deleted.
(WI.Breakpoint.serializeOptions): Deleted.

* UserInterface/Models/BreakpointAction.js:
(WI.BreakpointAction):
(WI.BreakpointAction.fromJSON): Added.
(WI.BreakpointAction.prototype.toProtocol): Added.

* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._addBreakpointsForSourceCode):

* UserInterface/Views/SourceCodeTextEditor.js:
(WI.SourceCodeTextEditor.prototype._prepareEditorForInitialContent):
(WI.SourceCodeTextEditor.prototype._breakpointsEnabledDidChange):

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

4 months ago[WebKit2] Introduce a public version of WKWebsitePolicies
wenson_hsieh@apple.com [Tue, 2 Apr 2019 00:01:05 +0000 (00:01 +0000)]
[WebKit2] Introduce a public version of WKWebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=195989
<rdar://problem/47228232>

Reviewed by Tim Horton.

Expose the existing _WKWebsitePolicies object as WKWebpagePreferences, in what will eventually become a public
header in the WebKit SDK (WKWebpagePreferences.h). Following a similar transitioning strategy as
_WKWebsiteDataStore and WKWebsiteDataStore, we move existing logic from _WKWebsitePolicies to WKWebpagePreferences
and make _WKWebsitePolicies a wrapper around WKWebpagePreferences.

No change in behavior.

* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):

Wrap API::WebsitePolicies with WKWebpagePreferences.

* SourcesCocoa.txt:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _updateWebsitePolicies:]):
* UIProcess/API/Cocoa/WKWebpagePreferences.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h.
* UIProcess/API/Cocoa/WKWebpagePreferences.mm: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.mm.

Introduce WKWebpagePreferences.

(+[WKWebpagePreferences defaultPreferences]):
(-[WKWebpagePreferences dealloc]):
(-[WKWebpagePreferences init]):
(-[WKWebpagePreferences _setContentBlockersEnabled:]):
(-[WKWebpagePreferences _contentBlockersEnabled]):
(-[WKWebpagePreferences _setAllowedAutoplayQuirks:]):
(-[WKWebpagePreferences _allowedAutoplayQuirks]):
(-[WKWebpagePreferences _setAutoplayPolicy:]):
(-[WKWebpagePreferences _autoplayPolicy]):
(-[WKWebpagePreferences _setDeviceOrientationAndMotionAccessPolicy:]):
(-[WKWebpagePreferences _deviceOrientationAndMotionAccessPolicy]):
(-[WKWebpagePreferences _setPopUpPolicy:]):
(-[WKWebpagePreferences _popUpPolicy]):
(-[WKWebpagePreferences _customHeaderFields]):
(-[WKWebpagePreferences _setCustomHeaderFields:]):
(-[WKWebpagePreferences _websiteDataStore]):
(-[WKWebpagePreferences _setWebsiteDataStore:]):
(-[WKWebpagePreferences _setCustomUserAgent:]):
(-[WKWebpagePreferences _customUserAgent]):
(-[WKWebpagePreferences _setCustomJavaScriptUserAgentAsSiteSpecificQuirks:]):
(-[WKWebpagePreferences _customJavaScriptUserAgentAsSiteSpecificQuirks]):
(-[WKWebpagePreferences _setCustomNavigatorPlatform:]):
(-[WKWebpagePreferences _customNavigatorPlatform]):
(-[WKWebpagePreferences _apiObject]):
* UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h.
* UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.h.

Reintroduce all the interfaces currently available on _WKWebsitePolicies as underscore-prefixed SPI on
WKWebpagePreferences.

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

Make _WKWebsitePolicies wrap WKWebpagePreferences, and plumb all existing SPI on WKWebsitePolicies through to
WKWebpagePreferences.

(-[_WKWebsitePolicies init]):
(-[_WKWebsitePolicies webpagePreferences]):
(-[_WKWebsitePolicies setContentBlockersEnabled:]):
(-[_WKWebsitePolicies contentBlockersEnabled]):
(-[_WKWebsitePolicies setAllowedAutoplayQuirks:]):
(-[_WKWebsitePolicies allowedAutoplayQuirks]):
(-[_WKWebsitePolicies setAutoplayPolicy:]):
(-[_WKWebsitePolicies autoplayPolicy]):
(-[_WKWebsitePolicies setDeviceOrientationAndMotionAccessPolicy:]):
(-[_WKWebsitePolicies deviceOrientationAndMotionAccessPolicy]):
(-[_WKWebsitePolicies setPopUpPolicy:]):
(-[_WKWebsitePolicies popUpPolicy]):
(-[_WKWebsitePolicies customHeaderFields]):
(-[_WKWebsitePolicies setCustomHeaderFields:]):
(-[_WKWebsitePolicies websiteDataStore]):
(-[_WKWebsitePolicies setWebsiteDataStore:]):
(-[_WKWebsitePolicies setCustomUserAgent:]):
(-[_WKWebsitePolicies customUserAgent]):
(-[_WKWebsitePolicies setCustomJavaScriptUserAgentAsSiteSpecificQuirks:]):
(-[_WKWebsitePolicies customJavaScriptUserAgentAsSiteSpecificQuirks]):
(-[_WKWebsitePolicies setCustomNavigatorPlatform:]):
(-[_WKWebsitePolicies customNavigatorPlatform]):
(-[_WKWebsitePolicies description]):
(-[_WKWebsitePolicies _apiObject]):
(-[_WKWebsitePolicies dealloc]): Deleted.
* UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
* WebKit.xcodeproj/project.pbxproj:

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

4 months agoWeb Inspector: DOMDebugger: disabling a breakpoint for a specific event listener...
drousso@apple.com [Mon, 1 Apr 2019 23:38:45 +0000 (23:38 +0000)]
Web Inspector: DOMDebugger: disabling a breakpoint for a specific event listener removes it from the UI
https://bugs.webkit.org/show_bug.cgi?id=196453
<rdar://problem/49489318>

Reviewed by Joseph Pecoraro.

Allow breakpoints for specific event listeners to be disabled, rather than immeditately
removing/deleting them when they are about to become disabled. This preserves the existing
functionality, but now allows for the tree element to stay in the UI in a disabled state.

* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager):
(WI.DOMManager.prototype.setBreakpointForEventListener):
(WI.DOMManager.prototype.removeBreakpointForEventListener):
(WI.DOMManager.prototype.removeEventListenerBreakpointsForNode): Added.
(WI.DOMManager.prototype._updateEventBreakpoint): Added.
(WI.DOMManager.prototype._handleEventBreakpointDisabledStateChanged): Added.

* UserInterface/Controllers/DOMDebuggerManager.js:
(WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged):

* UserInterface/Views/EventBreakpointTreeElement.js:
(WI.EventBreakpointTreeElement.prototype.populateContextMenu):
(WI.EventBreakpointTreeElement.prototype._toggleBreakpoint):

* UserInterface/Views/ContextMenuUtilities.js:
(WI.appendContextMenuItemsForDOMNodeBreakpoints):

* UserInterface/Views/DOMNodeTreeElement.js:
(WI.DOMNodeTreeElement.prototype.ondelete):

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

4 months agoWeb Inspector: Canvas: auto-record after page load sometimes shows the wrong UI
drousso@apple.com [Mon, 1 Apr 2019 22:41:28 +0000 (22:41 +0000)]
Web Inspector: Canvas: auto-record after page load sometimes shows the wrong UI
https://bugs.webkit.org/show_bug.cgi?id=196320
<rdar://problem/49356686>

Reviewed by Joseph Pecoraro.

It was previously possible that the timing of a recording being started and the preview
image being loaded would not always be in the same order.

Utilize the existing `View.prototype.layout` mechanics to ensure that updates are coalesced
and that the changes are always applied in a particular order.

* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.refreshPreview): Added.
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.layout):
(WI.CanvasContentView.prototype.shown):
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype._refreshPixelSize):
(WI.CanvasContentView.prototype.refresh): Deleted.
(WI.CanvasContentView.prototype._recordingStarted): Deleted.
(WI.CanvasContentView.prototype._recordingProgress): Deleted.
(WI.CanvasContentView.prototype._recordingStopped): Deleted.
(WI.CanvasContentView.prototype._shaderProgramAdded): Deleted.
(WI.CanvasContentView.prototype._shaderProgramRemoved): Deleted.

* UserInterface/Views/CanvasOverviewContentView.js:
(WI.CanvasOverviewContentView.prototype._refreshPreviews):

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

4 months agoWeb Inspector: DOMDebugger: breakpoints for attribute modifications still fire when...
drousso@apple.com [Mon, 1 Apr 2019 22:41:24 +0000 (22:41 +0000)]
Web Inspector: DOMDebugger: breakpoints for attribute modifications still fire when breakpoints are disabled
https://bugs.webkit.org/show_bug.cgi?id=196456
<rdar://problem/49489747>

Reviewed by Joseph Pecoraro.

Source/WebCore:

Test: inspector/dom-debugger/dom-breakpoints.html

* inspector/agents/InspectorDOMDebuggerAgent.cpp:
(WebCore::InspectorDOMDebuggerAgent::didInvalidateStyleAttr):
(WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):

LayoutTests:

* inspector/dom-debugger/dom-breakpoints.html:
* inspector/dom-debugger/dom-breakpoints-expected.txt:

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

4 months agoWeb Inspector: Canvas: add compatibility support for WebMetal
drousso@apple.com [Mon, 1 Apr 2019 22:38:29 +0000 (22:38 +0000)]
Web Inspector: Canvas: add compatibility support for WebMetal
https://bugs.webkit.org/show_bug.cgi?id=196412
<rdar://problem/49439417>

Reviewed by Joseph Pecoraro.

* UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
(WI.Canvas.displayNameForContextType):
* UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js:
* Versions/Inspector-iOS-12.2.json:

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

4 months agoWeb Inspector: "Copy as HTML" appears twice when showing a context menu for a logged...
drousso@apple.com [Mon, 1 Apr 2019 22:35:50 +0000 (22:35 +0000)]
Web Inspector: "Copy as HTML" appears twice when showing a context menu for a logged node
https://bugs.webkit.org/show_bug.cgi?id=196271
<rdar://problem/49290676>

Reviewed by Joseph Pecoraro.

* UserInterface/Views/ObjectTreeBaseTreeElement.js:
(WI.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):

* Localizations/en.lproj/localizedStrings.js:

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

4 months ago[ews-app] Use API_KEY to accept results data
aakash_jain@apple.com [Mon, 1 Apr 2019 21:57:13 +0000 (21:57 +0000)]
[ews-app] Use API_KEY to accept results data
https://bugs.webkit.org/show_bug.cgi?id=196461

Reviewed by Dewei Zhu.

* BuildSlaveSupport/ews-app/ews/views/results.py:
(Results.post): Validate EWS_API_KEY before accepting any data.
* BuildSlaveSupport/ews-build/events.py:
(Events.sendData): Send EWS_API_KEY if available along with event data.

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

4 months agoWeb Inspector: Debugger: breakpoints don't populate in inspector2 on first load
drousso@apple.com [Mon, 1 Apr 2019 21:50:02 +0000 (21:50 +0000)]
Web Inspector: Debugger: breakpoints don't populate in inspector2 on first load
https://bugs.webkit.org/show_bug.cgi?id=196063
<rdar://problem/49097787>

Reviewed by Joseph Pecoraro.

In the case that a breakpoint becomes resolved after the resource has finished loaded, there
won't be an already existing `TreeElement` for the breakpoint to replace.

This can realistically only happen if the IndexedDB lookup is super slow, or the resource is
extremely fast (e.g. a `data` url).

* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):
(WI.DebuggerSidebarPanel.prototype._addDebuggerObject): Deleted.

* UserInterface/Views/SourcesNavigationSidebarPanel.js:
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpointsForSourceCode):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):

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

4 months ago[Win10] Look into platform specific layout test failures
pvollan@apple.com [Mon, 1 Apr 2019 21:27:01 +0000 (21:27 +0000)]
[Win10] Look into platform specific layout test failures
https://bugs.webkit.org/show_bug.cgi?id=196463

Unreviewed test gardening.

* platform/win/TestExpectations:

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

4 months agoUnable to copy and paste a PDF from Notes into Mail compose body
wenson_hsieh@apple.com [Mon, 1 Apr 2019 21:21:24 +0000 (21:21 +0000)]
Unable to copy and paste a PDF from Notes into Mail compose body
https://bugs.webkit.org/show_bug.cgi?id=196442
<rdar://problem/48573098>

Reviewed by Tim Horton.

Source/WebCore:

Refactor some logic for inserting attachment elements upon paste or drop. Currently, we only prefer inserting
content as attachment elements if the items are annotated with UIPreferredPresentationStyleAttachment. However,
many data sources around the system (both first and third party) have not adopted this API, which makes it
difficult to determine whether a given item provider should be treated as a file or not. In this bug in
particular, no preferred presentation style is set, so we fail to handle the paste command by inserting an
attachment element.

However, most apps around the system that write file or attachment-like data to the pasteboard will at least
offer a suggested name for the file, in the form of -[NSItemProvider suggestedName]. To address this, instead of
relying solely on the preferredPresentationStyle, additionally take a suggested name as an indicator that the
item is probably a file.

In fact, Pasteboard::fileContentState already has similar logic to check for either a suggested file name or
explicitly specified presentation style. We pull this out into a separate helper method on PasteboardItemInfo,
and use it for both Pasteboard::fileContentState and prefersAttachmentRepresentation.

Tests:  WKAttachmentTestsIOS.InsertPastedContactAsAttachment
        WKAttachmentTestsIOS.InsertPastedMapItemAsAttachment

* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::mimeTypeFromContentType):

Work around <rdar://problem/49478229> by using the "text/vcard" MIME type to handle "public.vcard". CoreServices
currently maps "public.vcard" to "text/directory" when using UTTypeCopyPreferredTagWithClass, despite the SPI
-[NSURLFileTypeMappings MIMETypeForExtension:] returning "text/vcard" for a ".vcf" file.

* platform/PasteboardItemInfo.h:
(WebCore::PasteboardItemInfo::canBeTreatedAsAttachmentOrFile const):

Add a helper method to determine whether the PasteboardItemInfo prefers to be represented as inline data, or an
attachment, or neither. This differs slightly from the existing value of preferredPresentationStyle in that we
consider having a suggested file name as a strong indicator that the item should be treated as an attachment,
even if the presentation style is unspecified.

* platform/cocoa/PasteboardCocoa.mm:
(WebCore::Pasteboard::fileContentState):

Use PasteboardItemInfo::canBeTreatedAsAttachmentOrFile().

* platform/ios/PasteboardIOS.mm:
(WebCore::prefersAttachmentRepresentation):

Use PasteboardItemInfo::canBeTreatedAsAttachmentOrFile().

Source/WebKit:

Relax the -canPerformAction: logic in the case of pasting an attachment. Consider an NSItemProvider to possibly
paste as an attachment if either it has a preferred presentation style of UIPreferredPresentationStyleAttachment
or has a style of UIPreferredPresentationStyleUnspecified, but has a suggested file name.

This allows for the "Paste" action to be shown in the callout menu when copying and pasting a non-text file.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView canPerformActionForWebView:withSender:]):

Tools:

Add new API tests to exercise pasting CNContact and MKMapItem-backed item providers. Additionally, adjust an
existing test that pastes a PDF file as an attachment to not require UIPreferredPresentationStyleAttachment
to be specified on the item providers.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(TestWebKitAPI::mapItemForTesting):
(TestWebKitAPI::contactItemForTesting):

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

4 months agoMake UIWKDocumentContext rects per-character instead of per-word
timothy_horton@apple.com [Mon, 1 Apr 2019 21:08:31 +0000 (21:08 +0000)]
Make UIWKDocumentContext rects per-character instead of per-word
https://bugs.webkit.org/show_bug.cgi?id=196459

Reviewed by Wenson Hsieh.

Source/WebCore:

No new tests; adjusted expected results of WebKit.DocumentEditingContext.

* editing/TextIterator.cpp:
(WebCore::CharacterIterator::CharacterIterator):
* editing/TextIterator.h:
(WebCore::CharacterIterator::atEnd const):
(WebCore::CharacterIterator::text const):
Add WEBCORE_EXPORT to some things.
Introduce a CharacterIterator constructor that takes Positions, like one that TextIterator has.
Move initializers to the header.

Source/WebKit:

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::requestDocumentEditingContext):
Switch to CharacterIterator instead of TextIterator directly, to get
per-character rects as the API requests.

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:
(TEST):
Adjust test results due to switching to per-character rects.

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

4 months agoUIProcess crash when a prewarmed process is terminated
cdumez@apple.com [Mon, 1 Apr 2019 20:52:36 +0000 (20:52 +0000)]
UIProcess crash when a prewarmed process is terminated
https://bugs.webkit.org/show_bug.cgi?id=196451
<rdar://problem/49245471>

Reviewed by Geoffrey Garen.

Source/WebKit:

Stop assuming that WebProcessProxy::m_websiteDataStore is non-null as this is no longer
true after r243384. For example, prewarmed WebContent processe do not get a data store
until they actually get used.

* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _prewarmedProcessIdentifier]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::networkProcessIdentifier):
(WebKit::WebProcessPool::prewarmedProcessIdentifier):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didClose):
(WebKit::WebProcessProxy::didFinishLaunching):
(WebKit::WebProcessProxy::requestTermination):
(WebKit::WebProcessProxy::isReleaseLoggingAllowed const):
* UIProcess/WebProcessProxy.h:

Tools:

Add API test coverage.

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

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

4 months agoaccessibility/Mac/async-increment-decrement-action.html is crashing and blaming other...
sroberts@apple.com [Mon, 1 Apr 2019 20:46:23 +0000 (20:46 +0000)]
accessibility/Mac/async-increment-decrement-action.html is crashing and blaming other tests on bots
https://bugs.webkit.org/show_bug.cgi?id=187391

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations: Updating test expectations to skip crashing test

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

4 months agoUpdate event region when toggling pointer-events:none
antti@apple.com [Mon, 1 Apr 2019 19:53:00 +0000 (19:53 +0000)]
Update event region when toggling pointer-events:none
https://bugs.webkit.org/show_bug.cgi?id=195902
<rdar://problem/48988384>

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/scrolling/ios/event-region-pointer-events.html

Normally paint invalidation requests compositing configuration update whenever anything that would
affect event region changes. However mutating 'pointer-events' property does not cause paint invalidation.

* rendering/RenderElement.cpp:
(WebCore::RenderElement::styleWillChange):

Request compositing update explicitly from the containing layer.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::invalidateEventRegion):
* rendering/RenderLayer.h:

LayoutTests:

* fast/scrolling/ios/event-region-pointer-events-expected.txt: Added.
* fast/scrolling/ios/event-region-pointer-events.html: Added.

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

4 months ago[GTK][WPE] Add more websitedatastore directories to web process sandbox
commit-queue@webkit.org [Mon, 1 Apr 2019 19:51:09 +0000 (19:51 +0000)]
[GTK][WPE] Add more websitedatastore directories to web process sandbox
https://bugs.webkit.org/show_bug.cgi?id=196447

Patch by Patrick Griffis <pgriffis@igalia.com> on 2019-04-01
Reviewed by Michael Catanzaro.

* UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
(WebKit::bubblewrapSpawn):
* UIProcess/glib/WebProcessProxyGLib.cpp:
(WebKit::WebProcessProxy::platformGetLaunchOptions):

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

4 months ago[ews-app] Display OS and Xcode configuration in status-bubble's hover-over message
aakash_jain@apple.com [Mon, 1 Apr 2019 19:48:22 +0000 (19:48 +0000)]
[ews-app] Display OS and Xcode configuration in status-bubble's hover-over message
https://bugs.webkit.org/show_bug.cgi?id=196449

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
(StatusBubble.get_os_details): Method to get OS and Xcode details.
(StatusBubble._build_bubble): Moved the timestamp logic to common method.
(StatusBubble.get_build_timestamp): Method to get the timestamp to display for the build.

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

4 months ago[ews-build] Remove force schedulers from OpenSource EWS Buildbot
aakash_jain@apple.com [Mon, 1 Apr 2019 19:45:56 +0000 (19:45 +0000)]
[ews-build] Remove force schedulers from OpenSource EWS Buildbot
https://bugs.webkit.org/show_bug.cgi?id=196444

Reviewed by Lucas Forschler.

* BuildSlaveSupport/ews-build/loadConfig.py: Remove ForceSchedulers.

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

4 months agoSupport "noreferrer" for window.open()
cdumez@apple.com [Mon, 1 Apr 2019 19:05:17 +0000 (19:05 +0000)]
Support "noreferrer" for window.open()
https://bugs.webkit.org/show_bug.cgi?id=194533

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline WPT test now that all checks are passing.

* web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noreferrer-expected.txt:

Source/WebCore:

Support "noreferrer" for window.open() as per:
- https://github.com/whatwg/html/pull/4331

Tests: imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noreferrer.html
       http/wpt/html/browsers/the-window-object/window-open-noopener-webkit.html

* page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
* page/WindowFeatures.cpp:
(WebCore::setWindowFeature):
* page/WindowFeatures.h:

LayoutTests:

Add equivalent test to imported/w3c/web-platform-tests/html/browsers/the-window-object/window-open-noopener.html
but which relies on localStorage instead of BroadcastChannel so that it works with WebKit.

* http/wpt/html/browsers/the-window-object/support/noreferrer-target-webkit.html: Added.
* http/wpt/html/browsers/the-window-object/window-open-noopener-webkit-expected.txt: Added.
* http/wpt/html/browsers/the-window-object/window-open-noopener-webkit.html: Added.

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

4 months agoWeb Inspector: CPU Usage Timeline - Adjust Energy Impact Threshholds
joepeck@webkit.org [Mon, 1 Apr 2019 18:54:36 +0000 (18:54 +0000)]
Web Inspector: CPU Usage Timeline - Adjust Energy Impact Threshholds
https://bugs.webkit.org/show_bug.cgi?id=196421
<rdar://problem/49125703>

Reviewed by Devin Rousso.

- Low - Keep Below 3% to continue to encourage idle pages stay below 3%
  Might want to reduce to 2.5 or 2 after fixing bug 196419.

- High - Make Above 30% instead of 50% to encourage long running interactivity to stay below 30%
  Depends on interaction, but sustained (1-2min) at 30%+ will certainly impact battery.

- Very High - Make above 100% instead of 150%
  CPU Usage spikes around page load and is quite often still under 100% despite many threads.
  Drop this a bit as we dropped High down.

Reduce the size of the Medium section, and increase the High section
Having 70% of the chart be "Medium" is just too much Medium, and
we've now made it more possible to be in the High range.

* UserInterface/Views/CPUTimelineView.js:
(WI.CPUTimelineView.prototype.get mediumEnergyThreshold):
(WI.CPUTimelineView.prototype.get highEnergyThreshold):
(WI.CPUTimelineView.prototype.get lowEnergyGraphBoundary):
(WI.CPUTimelineView.prototype.get mediumEnergyGraphBoundary):
(WI.CPUTimelineView.prototype.get highEnergyGraphBoundary):
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype.layout.bestThreadLayoutMax):
(WI.CPUTimelineView.prototype._layoutEnergyChart):

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

4 months agoSVGMatrix.IDL methods do not conform to the specs
commit-queue@webkit.org [Mon, 1 Apr 2019 18:46:44 +0000 (18:46 +0000)]
SVGMatrix.IDL methods do not conform to the specs
https://bugs.webkit.org/show_bug.cgi?id=196263

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-04-01
Reviewed by Simon Fraser.

Source/WebCore:

I think there was a misconception about these functions. The specs link
is: https://www.w3.org/TR/SVG11/coords.html#InterfaceSVGMatrix.

Notice that the specs does not state that the SVGMethod methods should
raise the exception NO_MODIFICATION_ALLOWED_ERR if the object is read
only. Notice setting the attribute 'a' for example may raise this
exception. Therefore, I think the specs wanted to make these operations
read-only. None of the methods should raise the exception
NO_MODIFICATION_ALLOWED_ERR.

In fact the SVG code was doing the right thing. For example SVGMatrix::scale()
was calling SVGMatrixValue::scale() which was making a copy of itself,
applying the scale on the copy and then returning the copy. When
SVGMatrix::scale() receives the copy of the SVGMatrixValue it creates and
returns a new SVGMatrix object.

* WebCore.xcodeproj/project.pbxproj:
* svg/SVGMatrix.h:
(WebCore::SVGMatrix::create):
(WebCore::SVGMatrix::a const):
(WebCore::SVGMatrix::b const):
(WebCore::SVGMatrix::c const):
(WebCore::SVGMatrix::d const):
(WebCore::SVGMatrix::e const):
(WebCore::SVGMatrix::f const):
(WebCore::SVGMatrix::multiply const):
(WebCore::SVGMatrix::inverse const):
(WebCore::SVGMatrix::translate const):
(WebCore::SVGMatrix::scale const):
(WebCore::SVGMatrix::scaleNonUniform const):
(WebCore::SVGMatrix::rotate const):
(WebCore::SVGMatrix::rotateFromVector const):
(WebCore::SVGMatrix::flipX const):
(WebCore::SVGMatrix::flipY const):
(WebCore::SVGMatrix::skewX const):
(WebCore::SVGMatrix::skewY const):
(WebCore::SVGMatrix::a): Deleted.
(WebCore::SVGMatrix::b): Deleted.
(WebCore::SVGMatrix::c): Deleted.
(WebCore::SVGMatrix::d): Deleted.
(WebCore::SVGMatrix::e): Deleted.
(WebCore::SVGMatrix::f): Deleted.
(WebCore::SVGMatrix::multiply): Deleted.
(WebCore::SVGMatrix::inverse): Deleted.
(WebCore::SVGMatrix::translate): Deleted.
(WebCore::SVGMatrix::scale): Deleted.
(WebCore::SVGMatrix::scaleNonUniform): Deleted.
(WebCore::SVGMatrix::rotate): Deleted.
(WebCore::SVGMatrix::rotateFromVector): Deleted.
(WebCore::SVGMatrix::flipX): Deleted.
(WebCore::SVGMatrix::flipY): Deleted.
(WebCore::SVGMatrix::skewX): Deleted.
(WebCore::SVGMatrix::skewY): Deleted.
(WebCore::SVGMatrix::SVGMatrix): Deleted.
* svg/SVGMatrix.idl:
* svg/SVGMatrixValue.h: Removed.
* svg/SVGTransform.cpp:
(WebCore::SVGTransform::matrix):
* svg/SVGTransformDistance.cpp:
(WebCore::SVGTransformDistance::addToSVGTransform const):
* svg/SVGTransformValue.h:
(WebCore::SVGTransformValue::matrix const):
(WebCore::SVGTransformValue::matrix):
(WebCore::SVGTransformValue::svgMatrix): Deleted.
(WebCore::operator==): Deleted.
(WebCore::operator!=): Deleted.
* svg/properties/SVGMatrixTearOff.h:
* svg/properties/SVGPropertyTearOff.h:
(WebCore::SVGPropertyTearOff::propertyReference const):

LayoutTests:

* svg/dom/SVGMatrix-expected.txt:
* svg/dom/SVGMatrix.html:
Clean this test. Make it test the case when valid arguments are passed to
the methods of the SVGMatrix. Make sure the methods are read-only. All
of them should be making a copy of the matrix, applying the transform and
returning the copy.

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

4 months ago[JSC] JSRunLoopTimer::Manager should be small
ysuzuki@apple.com [Mon, 1 Apr 2019 18:33:45 +0000 (18:33 +0000)]
[JSC] JSRunLoopTimer::Manager should be small
https://bugs.webkit.org/show_bug.cgi?id=196425

Reviewed by Darin Adler.

Using very large Key or Value in HashMap potentially bloats memory since HashMap pre-allocates large size of
memory ((sizeof(Key) + sizeof(Value)) * N) for its backing storage's array. Using std::unique_ptr<> for JSRunLoopTimer's
PerVMData to keep HashMap's backing store size small.

* runtime/JSRunLoopTimer.cpp:
(JSC::JSRunLoopTimer::Manager::timerDidFire):
(JSC::JSRunLoopTimer::Manager::registerVM):
(JSC::JSRunLoopTimer::Manager::scheduleTimer):
(JSC::JSRunLoopTimer::Manager::cancelTimer):
(JSC::JSRunLoopTimer::Manager::timeUntilFire):
(JSC::JSRunLoopTimer::Manager::didChangeRunLoop):
* runtime/JSRunLoopTimer.h:

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

4 months agoPlumb through a ScrollType value that indicates whether a scroll was a user or progra...
simon.fraser@apple.com [Mon, 1 Apr 2019 18:33:04 +0000 (18:33 +0000)]
Plumb through a ScrollType value that indicates whether a scroll was a user or programmatic scroll
https://bugs.webkit.org/show_bug.cgi?id=196424

Reviewed by Zalan Bujtas.

In preparation for fixing webkit.org/b/195584, we need to know if an overflow scroll
is programmatic, so plumb through an enum value. The functions touched by this patch are
only ever called for programmatic scrolls.

* dom/Element.cpp:
(WebCore::Element::scrollTo):
(WebCore::Element::setScrollLeft):
(WebCore::Element::setScrollTop):
* platform/ScrollTypes.h:
* rendering/RenderBox.cpp:
(WebCore::RenderBox::setScrollLeft):
(WebCore::RenderBox::setScrollTop):
* rendering/RenderBox.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollToXPosition):
(WebCore::RenderLayer::scrollToYPosition):
* rendering/RenderLayer.h:
* rendering/RenderListBox.cpp:
(WebCore::RenderListBox::setScrollLeft):
(WebCore::RenderListBox::setScrollTop):
* rendering/RenderListBox.h:
* rendering/RenderTextControlSingleLine.cpp:
(WebCore::RenderTextControlSingleLine::setScrollLeft):
(WebCore::RenderTextControlSingleLine::setScrollTop):
* rendering/RenderTextControlSingleLine.h:

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

4 months ago[PlayStation] Add initialization for JSC shell for PlayStation port
stephan.szabo@sony.com [Mon, 1 Apr 2019 18:25:11 +0000 (18:25 +0000)]
[PlayStation] Add initialization for JSC shell for PlayStation port
https://bugs.webkit.org/show_bug.cgi?id=195411

Reviewed by Ross Kirsling.

.:

Add functions for doing the automatic libc, floating point
initializations, signing of binaries and libraries and
wrapping of libc functions on PlayStation port.

* Source/cmake/OptionsPlayStation.cmake:

Source/JavaScriptCore:

Add ps options

* shell/PlatformPlayStation.cmake: Added.
* shell/playstation/Initializer.cpp: Added.
(initializer):

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

4 months ago[macOS] Crash when loading Twitter with autoplay video enabled.
pvollan@apple.com [Mon, 1 Apr 2019 18:23:56 +0000 (18:23 +0000)]
[macOS] Crash when loading Twitter with autoplay video enabled.
https://bugs.webkit.org/show_bug.cgi?id=196446
<rdar://problem/49060359>

Reviewed by Brent Fulgham.

This is caused by a syscall violation.

* WebProcess/com.apple.WebProcess.sb.in:

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

4 months agoAdd SPI to canonicalize NSURLs with WTF::URL
commit-queue@webkit.org [Mon, 1 Apr 2019 18:21:01 +0000 (18:21 +0000)]
Add SPI to canonicalize NSURLs with WTF::URL
https://bugs.webkit.org/show_bug.cgi?id=196415
<rdar://problem/44980271>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-04-01
Reviewed by Darin Adler.

Source/WebKitLegacy/mac:

* Misc/WebNSURLExtras.h:
* Misc/WebNSURLExtras.mm:
(-[NSURL _webkit_canonicalize_with_wtf]):
_webkit_canonicalize is old and changing it causes strange bugs like rdar://problem/5315926
Instead, make a new version that uses WTF::URL to canonicalize an NSURL.

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitLegacy/mac/URLCanonicalization.mm: Added.
(TestWebKitAPI::TEST):

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

4 months agoStop trying to support building JSC with clang 3.8
mcatanzaro@igalia.com [Mon, 1 Apr 2019 17:27:53 +0000 (17:27 +0000)]
Stop trying to support building JSC with clang 3.8
https://bugs.webkit.org/show_bug.cgi?id=195947
<rdar://problem/49069219>

Reviewed by Darin Adler.

It seems WebKit hasn't built with clang 3.8 in a while, no devs are using this compiler, we
don't know how much effort it would be to make JSC work again, and it's making the code
Source/JavaScriptCore:

worse. Remove my hacks to support clang 3.8 from JSC.

* bindings/ScriptValue.cpp:
(Inspector::jsToInspectorValue):
* bytecode/GetterSetterAccessCase.cpp:
(JSC::GetterSetterAccessCase::create):
(JSC::GetterSetterAccessCase::clone const):
* bytecode/InstanceOfAccessCase.cpp:
(JSC::InstanceOfAccessCase::clone const):
* bytecode/IntrinsicGetterAccessCase.cpp:
(JSC::IntrinsicGetterAccessCase::clone const):
* bytecode/ModuleNamespaceAccessCase.cpp:
(JSC::ModuleNamespaceAccessCase::clone const):
* bytecode/ProxyableAccessCase.cpp:
(JSC::ProxyableAccessCase::clone const):

Source/WTF:

worse. Remove my hacks to support clang 3.8 from WTF.

* wtf/MetaAllocator.cpp:
(WTF::MetaAllocator::allocate):
* wtf/text/StringConcatenate.h:
(WTF::tryMakeStringFromAdapters):

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

4 months agostorage/indexeddb/modern/deletedatabase-2-private.html is a flaky failure on Mac...
sroberts@apple.com [Mon, 1 Apr 2019 17:21:46 +0000 (17:21 +0000)]
storage/indexeddb/modern/deletedatabase-2-private.html is a flaky failure on Mac Debug
https://bugs.webkit.org/show_bug.cgi?id=196445

Unreviewed test gardening

* platform/ios-simulator-wk2/TestExpectations: Updating test expectations for flaky test

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

4 months ago[iOS] Refactor some logic for inserting pasted or dropped virtual card files as attac...
wenson_hsieh@apple.com [Mon, 1 Apr 2019 16:45:25 +0000 (16:45 +0000)]
[iOS] Refactor some logic for inserting pasted or dropped virtual card files as attachment elements
https://bugs.webkit.org/show_bug.cgi?id=196435
Work towards <rdar://problem/48573098>

Reviewed by Darin Adler.

Refactor some existing codepaths on iOS for inserting VCard files as attachment elements. Instead of using a
separate readVirtualContactFile method for converting a vcard file or data into an attachment element (possibly
accompanied by a link), use the existing readFilePaths WebContentReader method.

To handle links which may accompany the attachment element, add a helper method in PasteboardIOS that reads a
titled URL prior to inserting an attachment element, in the case of pasting or dropping a VCF.

This means we no longer need to handle attachment reading in readPasteboardWebContentDataForType, so we can
simply bail before reading "public.vcard" here and defer to reading other data types.

Covered by existing API tests in WKAttachmentTests and DragAndDropTestsIOS.

* editing/WebContentReader.h:
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::WebContentReader::readVirtualContactFile): Deleted.
* platform/Pasteboard.h:
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::readPasteboardWebContentDataForType):
(WebCore::readURLAlongsideAttachmentIfNecessary):
(WebCore::prefersAttachmentRepresentation):
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::readRespectingUTIFidelities):

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

4 months agoTrying to scroll the compose pane on gmail.com scrolls the message list behind
antti@apple.com [Mon, 1 Apr 2019 16:38:03 +0000 (16:38 +0000)]
Trying to scroll the compose pane on gmail.com scrolls the message list behind
https://bugs.webkit.org/show_bug.cgi?id=196426
<rdar://problem/49402667>

Reviewed by Darin Adler.

Source/WebCore:

Test: fast/scrolling/ios/event-region-visibility-hidden.html

We fail to gather event region from desdendants of non-overflowing elements with 'visibility:hidden'.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::paintObject):

Skip the subtree walk only if the current region covers the box already.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintList):

Remove the (wrong) optimization, we bail out quickly on first renderer if possible so this is not high value.

LayoutTests:

* fast/scrolling/ios/event-region-visibility-hidden-expected.txt: Added.
* fast/scrolling/ios/event-region-visibility-hidden.html: Added.

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

4 months agoChange expectation for imported/w3c/web-platform-tests/resize-observer/eventloop...
commit-queue@webkit.org [Mon, 1 Apr 2019 13:36:16 +0000 (13:36 +0000)]
Change expectation for imported/w3c/web-platform-tests/resize-observer/eventloop.html.
https://bugs.webkit.org/show_bug.cgi?id=196422

Patch by Cathie Chen <cathiechen@igalia.com> on 2019-04-01
Reviewed by Frédéric Wang.

At current implement, notifyResizeObservers is not synchronized to requestAnimationFrame, so the test would be flaky.

* TestExpectations: eventloop.html is flaky because it depend on the order of requestAnimationFrame and ResizeObserver timer.

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

4 months ago[GTK][WPE] Fix seccomp rule for blacklisting TIOCSTI
commit-queue@webkit.org [Mon, 1 Apr 2019 13:02:39 +0000 (13:02 +0000)]
[GTK][WPE] Fix seccomp rule for blacklisting TIOCSTI
https://bugs.webkit.org/show_bug.cgi?id=196297

Patch by Patrick Griffis <pgriffis@igalia.com> on 2019-04-01
Reviewed by Michael Catanzaro.

More information can be found here: https://www.exploit-db.com/exploits/46594

Note that this sandbox never made it into production so does not
warrant any CVE specific to WebKit.

* UIProcess/Launcher/glib/BubblewrapLauncher.cpp:
(WebKit::setupSeccomp):

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

4 months agoBe less strict about closing blocks in attribute and functional pseudo-element selectors.
emilio@crisal.io [Mon, 1 Apr 2019 12:50:44 +0000 (12:50 +0000)]
Be less strict about closing blocks in attribute and functional pseudo-element selectors.
https://bugs.webkit.org/show_bug.cgi?id=142167

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

* web-platform-tests/dom/nodes/selectors.js: Add tests for ::slotted

Source/WebCore:

This was also an issue for, e.g., "::slotted(foo", turns out.

This matches Chromium, Firefox, and the spec:

https://drafts.csswg.org/css-syntax/#parse-error:

> Certain points in the parsing algorithm are said to be parse errors. The error
> handling for parse errors is well-defined: user agents must either act as
> described below when encountering such problems, or must abort processing at
> the first error that they encounter for which they do not wish to apply the
> rules described below.

https://drafts.csswg.org/css-syntax/#consume-simple-block:

> <EOF-token>
>   This is a parse error. Return the block.

Tests: web-platform-tests/dom/nodes/selectors.js (and probably others)

* css/parser/CSSSelectorParser.cpp:
(WebCore::CSSSelectorParser::consumeAttribute):
(WebCore::CSSSelectorParser::consumePseudo):

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

4 months agoBuild failure after r243644 in GTK Linux 64-bit stable builds
commit-queue@webkit.org [Mon, 1 Apr 2019 09:47:08 +0000 (09:47 +0000)]
Build failure after r243644 in GTK Linux 64-bit stable builds
https://bugs.webkit.org/show_bug.cgi?id=196440

Patch by Pablo Saavedra <psaavedra@igalia.com> on 2019-04-01
Reviewed by Philippe Normand.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::updateTextureMapperFlags):

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

4 months ago[WPE] EventSenderProxy constructor is called before a PlatformWindow is usable
zandobersek@gmail.com [Mon, 1 Apr 2019 09:07:04 +0000 (09:07 +0000)]
[WPE] EventSenderProxy constructor is called before a PlatformWindow is usable
https://bugs.webkit.org/show_bug.cgi?id=196441

Reviewed by Carlos Garcia Campos.

Don't cache the wpe_view_backend object that might not exist yet at the
time of EventSenderProxy constructor invocation, but instead retrieve
that object whenever it's required for event dispatching. This should
avoid crashes in this constructor now that it's invoked before any
PlatformWindow has been set up (as changed in r243496).

* WebKitTestRunner/EventSenderProxy.h:
* WebKitTestRunner/wpe/EventSenderProxyWPE.cpp:
(WTR::viewBackend):
(WTR::EventSenderProxy::EventSenderProxy):
(WTR::EventSenderProxy::mouseDown):
(WTR::EventSenderProxy::mouseUp):
(WTR::EventSenderProxy::mouseMoveTo):
(WTR::EventSenderProxy::mouseScrollBy):
(WTR::EventSenderProxy::keyDown):
(WTR::EventSenderProxy::prepareAndDispatchTouchEvent):

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

4 months ago[JSC] Butterfly allocation from LargeAllocation should try "realloc" behavior if...
ysuzuki@apple.com [Mon, 1 Apr 2019 06:51:11 +0000 (06:51 +0000)]
[JSC] Butterfly allocation from LargeAllocation should try "realloc" behavior if collector thread is not active
https://bugs.webkit.org/show_bug.cgi?id=196160

Reviewed by Saam Barati.

Source/JavaScriptCore:

"realloc" can be effective in terms of peak/current memory footprint when realloc succeeds because,

1. It does not allocate additional memory while expanding a vector
2. It does not deallocate an old memory, just reusing the current memory by expanding, so that memory footprint is tight even before scavenging

We found that we can "realloc" large butterflies in certain conditions are met because,

1. If it goes to LargeAllocation, this memory region is never reused until GC sweeps it.
2. Butterflies are owned by owner JSObjects, so we know the lifetime of Butterflies.

This patch attempts to use "realloc" onto butterflies if,

1. Butterflies are allocated in LargeAllocation kind
2. Concurrent collector is not active
3. Butterflies do not have property storage

The condition (2) is required to avoid deallocating butterflies while the concurrent collector looks into it. The condition (3) is
also required to avoid deallocating butterflies while the concurrent compiler looks into it.

We also change LargeAllocation mechanism to using "malloc" and "free" instead of "posix_memalign". This allows us to use "realloc"
safely in all the platforms. Since LargeAllocation uses alignment to distinguish LargeAllocation and MarkedBlock, we manually adjust
16B alignment by allocating 8B more memory in "malloc".

Speedometer2 and JetStream2 are neutral. RAMification shows about 1% progression (even in some of JIT tests).

* heap/AlignedMemoryAllocator.h:
* heap/CompleteSubspace.cpp:
(JSC::CompleteSubspace::tryAllocateSlow):
(JSC::CompleteSubspace::reallocateLargeAllocationNonVirtual):
* heap/CompleteSubspace.h:
* heap/FastMallocAlignedMemoryAllocator.cpp:
(JSC::FastMallocAlignedMemoryAllocator::tryAllocateMemory):
(JSC::FastMallocAlignedMemoryAllocator::freeMemory):
(JSC::FastMallocAlignedMemoryAllocator::tryReallocateMemory):
* heap/FastMallocAlignedMemoryAllocator.h:
* heap/GigacageAlignedMemoryAllocator.cpp:
(JSC::GigacageAlignedMemoryAllocator::tryAllocateMemory):
(JSC::GigacageAlignedMemoryAllocator::freeMemory):
(JSC::GigacageAlignedMemoryAllocator::tryReallocateMemory):
* heap/GigacageAlignedMemoryAllocator.h:
* heap/IsoAlignedMemoryAllocator.cpp:
(JSC::IsoAlignedMemoryAllocator::tryAllocateMemory):
(JSC::IsoAlignedMemoryAllocator::freeMemory):
(JSC::IsoAlignedMemoryAllocator::tryReallocateMemory):
* heap/IsoAlignedMemoryAllocator.h:
* heap/LargeAllocation.cpp:
(JSC::isAlignedForLargeAllocation):
(JSC::LargeAllocation::tryCreate):
(JSC::LargeAllocation::tryReallocate):
(JSC::LargeAllocation::LargeAllocation):
(JSC::LargeAllocation::destroy):
* heap/LargeAllocation.h:
(JSC::LargeAllocation::indexInSpace):
(JSC::LargeAllocation::setIndexInSpace):
(JSC::LargeAllocation::basePointer const):
* heap/MarkedSpace.cpp:
(JSC::MarkedSpace::sweepLargeAllocations):
(JSC::MarkedSpace::prepareForConservativeScan):
* heap/WeakSet.h:
(JSC::WeakSet::isTriviallyDestructible const):
* runtime/Butterfly.h:
* runtime/ButterflyInlines.h:
(JSC::Butterfly::reallocArrayRightIfPossible):
* runtime/JSObject.cpp:
(JSC::JSObject::ensureLengthSlow):

Source/WTF:

* wtf/FastMalloc.h:
(WTF::FastMalloc::tryRealloc):
* wtf/Gigacage.cpp:
(Gigacage::tryRealloc):
* wtf/Gigacage.h:

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