rmorisset@apple.com [Wed, 3 Jan 2018 17:35:35 +0000 (17:35 +0000)]
Inlining of a function that ends in op_unreachable crashes
https://bugs.webkit.org/show_bug.cgi?id=181027
Reviewed by Filip Pizlo.
JSTests:
* stress/inlining-unreachable.js: Added.
(bar):
(baz):
(i.catch):
Source/JavaScriptCore:
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::allocateTargetableBlock):
(JSC::DFG::ByteCodeParser::inlineCall):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226362
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
commit-queue@webkit.org [Wed, 3 Jan 2018 17:32:31 +0000 (17:32 +0000)]
Select service worker for documents with data/blob URLS
https://bugs.webkit.org/show_bug.cgi?id=181213
Patch by Youenn Fablet <youenn@apple.com> on 2018-01-03
Reviewed by Alex Christensen.
Source/WebCore:
Covered by updated test.
Reusing the service worker of the parent for blob/data URL documents.
* loader/DocumentLoader.cpp:
(WebCore::isLocalURL):
(WebCore::DocumentLoader::commitData):
LayoutTests:
* http/tests/workers/service/serviceworkerclients-claim.https-expected.txt:
* http/tests/workers/service/serviceworkerclients-claim.https.html:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226361
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
Ms2ger@igalia.com [Wed, 3 Jan 2018 17:28:37 +0000 (17:28 +0000)]
[GTK] Remove crash annotation for createImageBitmap-invalid-args.html.
https://bugs.webkit.org/show_bug.cgi?id=181238
Unreviewed test gardening.
I forgot to remove this when fixing the bug.
* platform/gtk/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226360
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
ryanhaddad@apple.com [Wed, 3 Jan 2018 17:05:12 +0000 (17:05 +0000)]
Unreviewed, rolling out r226352.
Breaks Sierra and El Capitan builds.
Reverted changeset:
"Web Inspector: Slow open time enumerating system fonts
(FontCache::systemFontFamilies)"
https://bugs.webkit.org/show_bug.cgi?id=180979
https://trac.webkit.org/changeset/226352
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226359
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
philn@webkit.org [Wed, 3 Jan 2018 11:01:32 +0000 (11:01 +0000)]
[GStreamer] The bus synchronous handler should be in the base player class
https://bugs.webkit.org/show_bug.cgi?id=181237
Reviewed by Carlos Garcia Campos.
Because this is where video rendering is handled.
No new tests, this is only a refactoring.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::setPipeline):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226358
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
philn@webkit.org [Wed, 3 Jan 2018 10:58:21 +0000 (10:58 +0000)]
[GStreamer] move MediaSample implementation out of mse/
https://bugs.webkit.org/show_bug.cgi?id=179165
Reviewed by Carlos Garcia Campos.
This module isn't specific to MSE and can potentially be reused
elsewhere, for WebRTC for instance. Additionally the
::platformSample() method was implemented and the code was cleaned up.
* platform/GStreamer.cmake:
* platform/MediaSample.h:
* platform/graphics/gstreamer/GStreamerMediaSample.cpp: Renamed from Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaSample.cpp.
(WebCore::GStreamerMediaSample::platformSample):
* platform/graphics/gstreamer/GStreamerMediaSample.h: Renamed from Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaSample.h.
* platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:
(WebCore::PlaybackPipeline::enqueueSample):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226357
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
carlosgc@webkit.org [Wed, 3 Jan 2018 10:05:06 +0000 (10:05 +0000)]
Unreviewed. Fix resource load stats tests on GLib based ports after r226355.
The monitor can be created in the work queue thread too.
* platform/glib/FileMonitorGLib.cpp:
(WebCore::FileMonitor::FileMonitor):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226356
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
carlosgc@webkit.org [Wed, 3 Jan 2018 08:23:29 +0000 (08:23 +0000)]
[GTK] Crash destroying WebCore::FileMonitor
https://bugs.webkit.org/show_bug.cgi?id=181138
Reviewed by Michael Catanzaro.
Source/WebCore:
Ensure that platform file monitor is always created and destroyed in the work queue thread synchronously.
* platform/FileMonitor.h:
* platform/glib/FileMonitorGLib.cpp:
(WebCore::FileMonitor::FileMonitor):
(WebCore::FileMonitor::~FileMonitor):
(WebCore::FileMonitor::didChange):
LayoutTests:
Remove test expectations associated to this bug.
* platform/gtk/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226355
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
carlosgc@webkit.org [Wed, 3 Jan 2018 08:18:13 +0000 (08:18 +0000)]
Unreviewed. Really fix plugin process after r226327.
* PluginProcess/unix/PluginProcessMainUnix.cpp:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226354
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
bfulgham@apple.com [Wed, 3 Jan 2018 05:10:37 +0000 (05:10 +0000)]
[macOS, iOS] Adopt new secure coding APIs in WebKit
https://bugs.webkit.org/show_bug.cgi?id=181085
<rdar://problem/
34837397>
Reviewed by Tim Horton.
Source/WebCore/PAL:
Add a new helper function to allow WebKit code to use NSSecureCoding in more
places when the underlying operating system supports it.
* pal/spi/cocoa/NSKeyedArchiverSPI.h:
(decodeObjectOfClassForKeyFromCoder): New wrapper method.
Source/WebKit:
Update WebKit code to use NSSecureCoding when the underlying operating system supports it. Use new
wrapper functions so the same code can be built on all supported OS releases, while enabling
seure coding when possible.
Note that NSView-based classes cannot be migrated at present due to AppKit not supporting NSSecureCoding
in its class hierarchy.
Tested by exising TestWebKitAPI tests for Coding and data transfer.
* Platform/ios/AccessibilityIOS.mm:
(WebKit::newAccessibilityRemoteToken): Encode using NSSecureCoding.
* UIProcess/API/Cocoa/WKPreferences.h:
* UIProcess/API/Cocoa/WKPreferences.mm:
(+[WKPreferences supportsSecureCoding]): Added to enable NSSecureCoding.
* UIProcess/API/Cocoa/WKProcessPool.h:
* UIProcess/API/Cocoa/WKProcessPool.mm:
(+[WKProcessPool supportsSecureCoding]): Ditto.
* UIProcess/API/Cocoa/WKUserContentController.h:
* UIProcess/API/Cocoa/WKUserContentController.mm:
(+[WKUserContentController supportsSecureCoding]): Ditto.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView initWithCoder:]): Use coding initialization that supports secure coding if
it is available in the supplied class.
* UIProcess/API/Cocoa/WKWebViewConfiguration.h:
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(+[WKWebViewConfiguration supportsSecureCoding]): Added to enable NSSecureCoding.
(-[WKWebViewConfiguration initWithCoder:]): Use secure coding when possible.
* UIProcess/API/Cocoa/WKWebsiteDataStore.h:
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(+[WKWebsiteDataStore supportsSecureCoding]): Added to enable NSSecureCoding.
* UIProcess/API/Cocoa/_WKApplicationManifest.h:
* UIProcess/API/Cocoa/_WKApplicationManifest.mm:
(+[_WKApplicationManifest supportsSecureCoding]): Added to enable NSSecureCoding.
(-[_WKApplicationManifest initWithCoder:]): Use secure coding when possible.
Tools:
Update API tests to use secure coding wherever possible. Currently, NSView/UIView-based classes are not
capable of supporting NSSecureCoding, so pass through the current coding routines.
* TestWebKitAPI/Tests/WebKitCocoa/ApplicationManifest.mm: Updated for NSSecureCoding.
* TestWebKitAPI/Tests/WebKitCocoa/Coding.mm:
(encodeAndDecode): Check if class supports the NSSecureCoding protocol and use non-secure coding
routines if necessary.
(TEST): Updated for NSSecureCoding.
* TestWebKitAPI/Tests/mac/EarlyKVOCrash.mm:
(TestWebKitAPI::TEST): Updated for NSSecureCoding.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226353
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
joepeck@webkit.org [Wed, 3 Jan 2018 04:16:06 +0000 (04:16 +0000)]
Web Inspector: Slow open time enumerating system fonts (FontCache::systemFontFamilies)
https://bugs.webkit.org/show_bug.cgi?id=180979
<rdar://problem/
36146670>
Reviewed by Matt Baker.
Source/WebCore:
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontCache::systemFontFamilies):
Switch to the original Mac algorithm before r180979 that uses
CTFontManagerCopyAvailableFontFamilyNames. Previously this wasn't
available on iOS but now it is. This is a performance improvement on
both platforms, but significantly so on macOS. It also finds more,
valid, family names.
LayoutTests:
* inspector/css/get-system-fonts.html:
Cleanup the test a bit.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226352
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
sbarati@apple.com [Wed, 3 Jan 2018 03:59:16 +0000 (03:59 +0000)]
Incorrect assertion inside AccessCase
https://bugs.webkit.org/show_bug.cgi?id=181200
<rdar://problem/
35494754>
Reviewed by Yusuke Suzuki.
JSTests:
* stress/setter-same-base-and-rhs-invalid-assertion-inside-access-case.js: Added.
(ctor):
(theFunc):
(run):
Source/JavaScriptCore:
Consider a PutById compiled to a setter in a function like so:
```
function foo(o) { o.f = o; }
```
The DFG will often assign the same registers to the baseGPR (o in o.f) and the
valueRegsPayloadGPR (o in the RHS). The code totally works when these are assigned
to the same register. However, we're asserting that they're not the same register.
This patch just removes this invalid assertion.
* bytecode/AccessCase.cpp:
(JSC::AccessCase::generateImpl):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226351
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
utatane.tea@gmail.com [Wed, 3 Jan 2018 03:44:01 +0000 (03:44 +0000)]
Unreviewed, fix GCC warning by using #include
https://bugs.webkit.org/show_bug.cgi?id=181189
This file is included in C++ files. Use #include instead of #import to suppress warning in GCC.
* platform/PromisedBlobInfo.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226350
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
utatane.tea@gmail.com [Wed, 3 Jan 2018 03:39:57 +0000 (03:39 +0000)]
Remove std::chrono completely
https://bugs.webkit.org/show_bug.cgi?id=181186
Reviewed by Alex Christensen.
Source/WebCore:
Use MonotonicTime, WallTime, and Seconds instead.
Changes are mechanical ones. But persistent network cache data is changed.
So we bump the version number of the cache storage.
* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::closeAndDeleteDatabasesModifiedSince):
(WebCore::IDBServer::removeAllDatabasesForOriginPath):
(WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesModifiedSince):
(WebCore::IDBServer::IDBServer::performCloseAndDeleteDatabasesForOrigins):
* Modules/indexeddb/server/IDBServer.h:
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::DatabaseTracker::deleteDatabasesModifiedSince):
* Modules/webdatabase/DatabaseTracker.h:
* dom/Document.cpp:
(WebCore::Document::lastModified):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::clearMediaCache):
* html/HTMLMediaElement.h:
(WebCore::HTMLMediaElement::clearMediaCache):
* loader/CrossOriginPreflightResultCache.cpp:
(WebCore::parseAccessControlMaxAge):
(WebCore::CrossOriginPreflightResultCacheItem::parse):
(WebCore::CrossOriginPreflightResultCacheItem::allowsRequest const):
* loader/CrossOriginPreflightResultCache.h:
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::CachedResource):
(WebCore::CachedResource::freshnessLifetime const):
(WebCore::CachedResource::responseReceived):
(WebCore::CachedResource::updateResponseAfterRevalidation):
* loader/cache/CachedResource.h:
* platform/FileSystem.cpp:
(WebCore::FileSystem::getFileModificationTime):
* platform/FileSystem.h:
* platform/SearchPopupMenu.h:
* platform/cocoa/SearchPopupMenuCocoa.h:
* platform/cocoa/SearchPopupMenuCocoa.mm:
(WebCore::toSystemClockTime):
(WebCore::toNSDateFromSystemClock):
(WebCore::removeRecentlyModifiedRecentSearches):
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::clearMediaCache):
* platform/graphics/MediaPlayer.h:
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::clearMediaCache):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::toSystemClockTime):
(WebCore::MediaPlayerPrivateAVFoundationObjC::clearMediaCache):
* platform/graphics/mac/MediaPlayerPrivateQTKit.h:
* platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
(WebCore::MediaPlayerPrivateQTKit::clearMediaCache):
* platform/network/CacheValidation.cpp:
(WebCore::computeCurrentAge):
(WebCore::computeFreshnessLifetimeForHTTPFamily):
(WebCore::updateRedirectChainStatus):
(WebCore::redirectChainAllowsReuse):
(WebCore::parseCacheControlDirectives):
* platform/network/CacheValidation.h:
(WebCore::RedirectChainCacheStatus::RedirectChainCacheStatus):
* platform/network/HTTPParsers.cpp:
(WebCore::parseHTTPDate):
* platform/network/HTTPParsers.h:
* platform/network/PlatformCookieJar.h:
* platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::cacheControlMaxAge const):
(WebCore::parseDateValueInHeader):
(WebCore::ResourceResponseBase::date const):
(WebCore::ResourceResponseBase::age const):
(WebCore::ResourceResponseBase::expires const):
(WebCore::ResourceResponseBase::lastModified const):
* platform/network/ResourceResponseBase.h:
* platform/network/cf/CookieJarCFNet.cpp:
(WebCore::deleteAllCookiesModifiedSince):
* platform/network/curl/CookieJarCurl.cpp:
(WebCore::CookieJarCurlFileSystem::deleteAllCookiesModifiedSince):
(WebCore::deleteAllCookiesModifiedSince):
* platform/network/curl/CookieJarCurl.h:
* platform/network/curl/CurlCacheEntry.cpp:
(WebCore::CurlCacheEntry::CurlCacheEntry):
(WebCore::CurlCacheEntry::isCached):
(WebCore::CurlCacheEntry::parseResponseHeaders):
* platform/network/curl/CurlCacheEntry.h:
* platform/network/mac/CookieJarMac.mm:
(WebCore::deleteAllCookiesModifiedSince):
* platform/network/soup/CookieJarSoup.cpp:
(WebCore::deleteAllCookiesModifiedSince):
* platform/win/SearchPopupMenuWin.cpp:
(WebCore::SearchPopupMenuWin::loadRecentSearches):
* rendering/RenderSearchField.cpp:
(WebCore::RenderSearchField::addSearchResult):
Source/WebKit:
Use MonotonicTime, WallTime, and Seconds instead.
Changes are mechanical ones.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::deleteWebsiteData):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::clear):
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::responseHasExpired):
(WebKit::NetworkCache::responseNeedsRevalidation):
(WebKit::NetworkCache::makeStoreDecision):
(WebKit::NetworkCache::Cache::clear):
(WebKit::NetworkCache::Cache::storeData):
* NetworkProcess/cache/NetworkCache.h:
* NetworkProcess/cache/NetworkCacheEntry.cpp:
(WebKit::NetworkCache::Entry::Entry):
(WebKit::NetworkCache::Entry::asJSON const):
* NetworkProcess/cache/NetworkCacheEntry.h:
(WebKit::NetworkCache::Entry::timeStamp const):
* NetworkProcess/cache/NetworkCacheFileSystem.cpp:
(WebKit::NetworkCache::fileTimes):
(WebKit::NetworkCache::updateFileModificationTimeIfNeeded):
* NetworkProcess/cache/NetworkCacheFileSystem.h:
* NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
(WebKit::NetworkCache::IOChannel::IOChannel):
* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
(WebKit::NetworkCache::responseNeedsRevalidation):
(WebKit::NetworkCache::canRevalidate):
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::readRecord):
(WebKit::NetworkCache::Storage::clear):
(WebKit::NetworkCache::computeRecordWorth):
* NetworkProcess/cache/NetworkCacheStorage.h:
Bump the cache version. We now change the data in persistent cache.
* NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:
(WebKit::NetworkCache::SubresourceInfo::SubresourceInfo):
(WebKit::NetworkCache::SubresourcesEntry::SubresourcesEntry):
* NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:
(WebKit::NetworkCache::SubresourceInfo::lastSeen const):
(WebKit::NetworkCache::SubresourceInfo::firstSeen const):
(WebKit::NetworkCache::SubresourcesEntry::timeStamp const):
* NetworkProcess/cocoa/NetworkProcessCocoa.mm:
(WebKit::NetworkProcess::clearHSTSCache):
(WebKit::clearNSURLCache):
(WebKit::NetworkProcess::clearDiskCache):
* NetworkProcess/curl/NetworkProcessCurl.cpp:
(WebKit::NetworkProcess::clearDiskCache):
* NetworkProcess/mac/NetworkProcessMac.mm:
(WebKit::NetworkProcess::clearCacheForAllOrigins):
* NetworkProcess/soup/NetworkProcessSoup.cpp:
(WebKit::NetworkProcess::clearCacheForAllOrigins):
(WebKit::NetworkProcess::clearDiskCache):
* Platform/IPC/ArgumentCoders.cpp:
(IPC::ArgumentCoder<WallTime>::encode):
(IPC::ArgumentCoder<WallTime>::decode):
(IPC::ArgumentCoder<std::chrono::system_clock::time_point>::encode): Deleted.
(IPC::ArgumentCoder<std::chrono::system_clock::time_point>::decode): Deleted.
* Platform/IPC/ArgumentCoders.h:
* PluginProcess/PluginProcess.cpp:
(WebKit::PluginProcess::deleteWebsiteData):
* PluginProcess/PluginProcess.h:
* PluginProcess/PluginProcess.messages.in:
* Scripts/webkit/messages.py:
(headers_for_type):
* Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
(WebKit::RemoteLayerBackingStore::lastDisplayTime const):
* Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::RemoteLayerBackingStore):
(WebKit::RemoteLayerBackingStore::display):
* Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
* Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:
(WebKit::RemoteLayerBackingStoreCollection::markBackingStoreVolatile):
(WebKit::RemoteLayerBackingStoreCollection::volatilityTimerFired):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<RecentSearch>::decode):
(IPC::ArgumentCoder<WallTime>::encode): Deleted.
(IPC::ArgumentCoder<WallTime>::decode): Deleted.
* Shared/WebCoreArgumentCoders.h:
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::deleteWebsiteData):
* StorageProcess/StorageProcess.h:
* StorageProcess/StorageProcess.messages.in:
* UIProcess/API/C/WKApplicationCacheManager.cpp:
(WKApplicationCacheManagerDeleteAllEntries):
* UIProcess/API/C/WKCookieManager.cpp:
(WKCookieManagerDeleteAllCookiesModifiedAfterDate):
* UIProcess/API/C/WKKeyValueStorageManager.cpp:
(WKKeyValueStorageManagerDeleteAllEntries):
* UIProcess/API/C/WKResourceCacheManager.cpp:
(WKResourceCacheManagerClearCacheForAllOrigins):
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
(WKWebsiteDataStoreStatisticsClearThroughWebsiteDataRemoval):
(WKWebsiteDataStoreRemoveAllFetchCaches):
(WKWebsiteDataStoreRemoveAllIndexedDatabases):
(WKWebsiteDataStoreRemoveAllServiceWorkerRegistrations):
* UIProcess/API/Cocoa/WKWebsiteDataStore.mm:
(toSystemClockTime):
(-[WKWebsiteDataStore _resourceLoadStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours:]):
* UIProcess/API/glib/WebKitWebContext.cpp:
(webkit_web_context_clear_cache):
* UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
(webkit_website_data_manager_clear):
* UIProcess/DrawingAreaProxy.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::deleteWebsiteData):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Plugins/PluginProcessManager.cpp:
(WebKit::PluginProcessManager::deleteWebsiteData):
* UIProcess/Plugins/PluginProcessManager.h:
* UIProcess/Plugins/PluginProcessProxy.cpp:
(WebKit::PluginProcessProxy::deleteWebsiteData):
* UIProcess/Plugins/PluginProcessProxy.h:
* UIProcess/Storage/StorageProcessProxy.cpp:
(WebKit::StorageProcessProxy::deleteWebsiteData):
* UIProcess/Storage/StorageProcessProxy.h:
* UIProcess/WebCookieManagerProxy.cpp:
(WebKit::WebCookieManagerProxy::deleteAllCookiesModifiedSince):
* UIProcess/WebCookieManagerProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::deleteWebsiteData):
* UIProcess/WebProcessProxy.h:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::scheduleClearInMemoryAndPersistent):
* UIProcess/WebResourceLoadStatisticsStore.h:
* UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
(WebKit::LocalStorageDatabaseTracker::deleteDatabasesModifiedSince):
* UIProcess/WebStorage/LocalStorageDatabaseTracker.h:
* UIProcess/WebStorage/StorageManager.cpp:
(WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
* UIProcess/WebStorage/StorageManager.h:
* UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:
(WebKit::WebsiteDataStore::platformRemoveRecentSearches):
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::removeData):
(WebKit::WebsiteDataStore::removeMediaKeys):
* UIProcess/WebsiteData/WebsiteDataStore.h:
* UIProcess/gtk/WebPageProxyGtk.cpp:
(WebKit::WebsiteDataStore::platformRemoveRecentSearches):
* UIProcess/wpe/WebPageProxyWPE.cpp:
(WebKit::WebsiteDataStore::platformRemoveRecentSearches):
* WebProcess/Cookies/WebCookieManager.cpp:
(WebKit::WebCookieManager::deleteAllCookiesModifiedSince):
* WebProcess/Cookies/WebCookieManager.h:
* WebProcess/Cookies/WebCookieManager.messages.in:
* WebProcess/Plugins/PluginView.cpp:
(WebKit::lastModifiedDateMS):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::deleteWebsiteData):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
Source/WebKitLegacy:
* Storage/WebDatabaseProvider.cpp:
(WebDatabaseProvider::deleteAllDatabases):
Source/WebKitLegacy/win:
* Plugins/PluginStream.cpp:
(WebCore::lastModifiedDateMS):
Source/WTF:
std::chrono's overflow unaware design is dangerous[1]. Even small code like
`condition.wait_for(std::chrono::seconds::max())` is broken in some platforms
due to overflow of std::chrono::time_point. So we intentionally avoid using
std::chrono, and use WallTime, MonotonicTime, Seconds instead.
This patch removes all the remaining use of std::chrono from WebKit tree.
[1]: https://lists.webkit.org/pipermail/webkit-dev/2016-May/028242.html
* wtf/CrossThreadCopier.h:
Remove std::chrono support from cross thread copiers.
* wtf/Forward.h:
* wtf/MonotonicTime.h:
(WTF::MonotonicTime::isolatedCopy const):
Add isolatedCopy function.
* wtf/RunLoop.h:
(WTF::RunLoop::TimerBase::startRepeating):
(WTF::RunLoop::TimerBase::startOneShot):
Just remove these helpers.
* wtf/Seconds.h:
(WTF::Seconds::isolatedCopy const):
Add isolatedCopy function.
* wtf/WallTime.h:
(WTF::WallTime::isolatedCopy const):
Add isolatedCopy function.
* wtf/persistence/PersistentCoders.h:
(WTF::Persistence::Coder<Seconds>::encode):
(WTF::Persistence::Coder<Seconds>::decode):
(WTF::Persistence::Coder<WallTime>::encode):
(WTF::Persistence::Coder<WallTime>::decode):
Add persistent coder support for Seconds and WallTime.
(WTF::Persistence::Coder<std::chrono::system_clock::time_point>::encode): Deleted.
(WTF::Persistence::Coder<std::chrono::system_clock::time_point>::decode): Deleted.
Remove std::chrono support from persistent coders.
Tools:
* WebKitTestRunner/gtk/TestControllerGtk.cpp:
(WTR::TestController::platformRunUntil):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226349
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
wenson_hsieh@apple.com [Wed, 3 Jan 2018 02:54:47 +0000 (02:54 +0000)]
[Attachment Support] Introduce data structures and IPC support for writing promised blobs
https://bugs.webkit.org/show_bug.cgi?id=181189
Reviewed by Tim Horton.
Source/WebCore:
Introduces a new header containing structs to be used for writing blob data when dragging. PromisedBlobInfo
represents information needed to declare data on the pasteboard that will eventually be provided via a Blob.
This includes the type and filename of the Blob-backed content. PromisedBlobData represents information needed
to actually deliver the Blob's content to the platform, and is sent some time after its corresponding
PromisedBlobInfo. The content may either be in the form of a file path (as is the case using the previous
declareAndWriteAttachment codepath) or a data buffer (which we would use if the Blob is not already backed by a
file on disk).
No new tests, since there is no observable change in functionality yet.
* WebCore.xcodeproj/project.pbxproj:
* platform/PromisedBlobInfo.h: Added.
(WebCore::PromisedBlobInfo::operator bool const):
(WebCore::PromisedBlobData::hasData const):
(WebCore::PromisedBlobData::hasFile const):
(WebCore::PromisedBlobData::operator bool const):
(WebCore::PromisedBlobData::fulfills const):
Source/WebKit:
Add IPC support for PromisedBlobInfo and PromisedBlobData. See WebCore/ChangeLog for more detail.
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<PromisedBlobData>::encode):
(IPC::ArgumentCoder<PromisedBlobData>::decode):
(IPC::ArgumentCoder<PromisedBlobInfo>::encode):
(IPC::ArgumentCoder<PromisedBlobInfo>::decode):
* Shared/WebCoreArgumentCoders.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226348
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
commit-queue@webkit.org [Wed, 3 Jan 2018 02:52:04 +0000 (02:52 +0000)]
Web Inspector: Clicking source location link in Console unexpectedly jumps to Network tab
https://bugs.webkit.org/show_bug.cgi?id=181229
<rdar://problem/
36075219>
Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-01-02
Reviewed by Matt Baker.
* UserInterface/Base/Main.js:
Cleanup linkifyURLAsNode. Ignore Search tab in generic handlePossibleLinkClick
when not already in the Search tab.
* UserInterface/Views/CallFrameView.js:
(WI.CallFrameView):
Ignore Search and Network tab in CallFrame links.
* UserInterface/Views/TabBrowser.js:
(WI.TabBrowser.prototype.bestTabContentViewForRepresentedObject):
Improve style.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226347
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Wed, 3 Jan 2018 02:34:18 +0000 (02:34 +0000)]
REGRESSION(r223253): Broke ResourceLoadStatistics layout tests for non-Cocoa ports
https://bugs.webkit.org/show_bug.cgi?id=181231
Reviewed by Alex Christensen.
Source/WebKit:
Add new C API for use by WebKitTestRunner.
* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreIsStatisticsRegisteredAsSubFrameUnder):
(WKWebsiteDataStoreIsStatisticsRegisteredAsRedirectingTo):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
Tools:
Implement TestController APIs needed by ResourceLoadStatistics tests.
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::isStatisticsRegisteredAsSubFrameUnder):
(WTR::TestController::isStatisticsRegisteredAsRedirectingTo):
LayoutTests:
Unskip the tests.
* platform/gtk/TestExpectations:
* platform/wpe/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226346
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mark.lam@apple.com [Wed, 3 Jan 2018 01:43:37 +0000 (01:43 +0000)]
Refactoring: Rename DummyClass to DummyStruct because it's a struct.
https://bugs.webkit.org/show_bug.cgi?id=181230
Reviewed by JF Bastien.
* wtf/WTFAssertions.cpp:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226345
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mark.lam@apple.com [Wed, 3 Jan 2018 00:56:55 +0000 (00:56 +0000)]
Ensure that poisoned pointers do not look like double or int32 JSValues.
https://bugs.webkit.org/show_bug.cgi?id=181221
<rdar://problem/
36248638>
Reviewed by JF Bastien.
Changed poison values to ensure that poisoned bits (i.e. pointer ^ poison)
satisfies the following conditions:
1. bits 48-63 are 0: this ensures that poisoned bits look like a pointer and
not a double or int32 JSValue.
2. bits 32-47 are not completely 0.
3. bit 2 is never 0: this ensures that the poisoned value of a non-null pointer
will never be null.
4. bit 0-1 is always 0: this ensures that clients can still use the 2 bottom
bits of the poisoned value as flag bits (just like they were able to do with
pointer values). The only difference is that bit 2 can no longer be used for
flag bits because poisoned values need it to always be set.
* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/PointerAsserts.cpp: Removed.
* wtf/Poisoned.cpp:
(WTF::makePoison):
- Updated to satisfy the above requirements.
* wtf/Poisoned.h:
(WTF::makeConstExprPoison):
(WTF::makePoison): Deleted.
* wtf/WTFAssertions.cpp: Copied from Source/WTF/wtf/PointerAsserts.cpp.
- Renamed from PointerAsserts.cpp because we assert more things than just
pointers here.
- Added some assertions to test makeConstExprPoison() to ensure that it satisfies
the above requirements.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226344
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
beidson@apple.com [Wed, 3 Jan 2018 00:51:01 +0000 (00:51 +0000)]
Make MessagePortChannel::takeAllMessagesFromRemote asynchronous.
https://bugs.webkit.org/show_bug.cgi?id=181205
Reviewed by Alex Christensen.
No new tests (No behavior change)
This is needed for the ongoing WK2 MessagePort work.
For WK1 in-process MessagePorts it is still synchronous; no behavior change.
* dom/InProcessMessagePortChannel.cpp:
(WebCore::InProcessMessagePortChannel::takeAllMessagesFromRemote):
* dom/InProcessMessagePortChannel.h:
* dom/MessagePort.cpp:
(WebCore::MessagePort::dispatchMessages):
* dom/MessagePortChannel.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226343
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
timothy_horton@apple.com [Wed, 3 Jan 2018 00:20:48 +0000 (00:20 +0000)]
Disable WKAttachmentTests if UIPasteboard.itemProviders is not available
https://bugs.webkit.org/show_bug.cgi?id=181219
Reviewed by Wenson Hsieh.
* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226342
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
jiewen_tan@apple.com [Wed, 3 Jan 2018 00:10:10 +0000 (00:10 +0000)]
Add a WebAuthentication runtime feature flag
https://bugs.webkit.org/show_bug.cgi?id=181220
<rdar://problem/
36055305>
Reviewed by Brent Fulgham.
Source/WebCore:
This patch basically renames the CredentialManagement runtime feature flag into
WebAuthentication runtime feature flag.
No tests.
* Modules/credentialmanagement/BasicCredential.idl:
* Modules/credentialmanagement/CredentialsContainer.idl:
* Modules/credentialmanagement/NavigatorCredentials.idl:
* Modules/webauthn/PublicKeyCredential.idl:
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setWebAuthenticationEnabled):
(WebCore::RuntimeEnabledFeatures::webAuthenticationEnabled const):
(WebCore::RuntimeEnabledFeatures::setCredentialManagementEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::credentialManagementEnabled const): Deleted.
Source/WebKit:
Renames the CredentialManagement runtime feature flag into WebAuthentication.
* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetWebAuthenticationEnabled):
(WKPreferencesGetWebAuthenticationEnabled):
(WKPreferencesSetCredentialManagementEnabled): Deleted.
(WKPreferencesGetCredentialManagementEnabled): Deleted.
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
Source/WebKitLegacy/mac:
Renames the CredentialManagement runtime feature flag into WebAuthentication.
* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences webAuthenticationEnabled]):
(-[WebPreferences setWebAuthenticationEnabled:]):
(-[WebPreferences credentialManagementEnabled]): Deleted.
(-[WebPreferences setCredentialManagementEnabled:]): Deleted.
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):
Tools:
Renames the CredentialManagement runtime feature flag into WebAuthentication.
* DumpRenderTree/TestOptions.h:
* DumpRenderTree/TestOptions.mm:
(TestOptions::TestOptions):
* DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures):
(setWebPreferencesForTestOptions):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::updateTestOptionsFromTestHeader):
* WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::hasSameInitializationOptions const):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226341
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
wenson_hsieh@apple.com [Wed, 3 Jan 2018 00:06:41 +0000 (00:06 +0000)]
[Attachment Support] Don't Blob-convert images and attachments with https:, http: or data: urls
https://bugs.webkit.org/show_bug.cgi?id=181143
<rdar://problem/
36200381>
Reviewed by Tim Horton.
Source/WebCore:
Clients such as Mail would expect pasting or dropping an image with src="https://..." to result in the source
URL being preserved (i.e. staying as remote images) instead of creating image attachments out of them. This
patch hooks into the shouldConvertToBlob() check added in r226272 so that it applies to attachment element
replacement as well.
Test: WKAttachmentTests.DoNotInsertDataURLImagesAsAttachments
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::shouldConvertToBlob):
(WebCore::replaceRichContentWithAttachments):
Tools:
Add a new API test to ensure that a copied image with a data URL does not get pasted as an attachment when
attachment elements are enabled.
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(TestWebKitAPI::TEST):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226340
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Tue, 2 Jan 2018 23:39:40 +0000 (23:39 +0000)]
Unreviewed WPE test gardening.
* platform/wpe/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226339
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
ticaiolima@gmail.com [Tue, 2 Jan 2018 23:38:36 +0000 (23:38 +0000)]
[ESNext][BigInt] Implement BigIntConstructor and BigIntPrototype
https://bugs.webkit.org/show_bug.cgi?id=175359
Reviewed by Yusuke Suzuki.
JSTests:
* bigIntTests.yaml:
* stress/big-int-as-key.js: Added.
* stress/big-int-constructor-gc.js: Added.
* stress/big-int-constructor-oom.js: Added.
* stress/big-int-constructor-properties.js: Added.
* stress/big-int-constructor-prototype-prop-descriptor.js: Added.
* stress/big-int-constructor-prototype.js: Added.
* stress/big-int-constructor.js: Added.
* stress/big-int-function-apply.js:
* stress/big-int-length.js: Added.
* stress/big-int-prop-descriptor.js: Added.
* stress/big-int-proto-constructor.js: Added.
* stress/big-int-proto-name.js: Added.
* stress/big-int-prototype-properties.js: Added.
* stress/big-int-prototype-proto.js: Added.
* stress/big-int-prototype-value-of.js: Added.
* stress/big-int-prototype-symbol-to-string-tag.js: Added.
* stress/big-int-prototype-to-string-apply.js: Added.
* stress/big-int-to-object.js: Added.
* stress/big-int-to-string.js: Added.
Source/JavaScriptCore:
This patch is implementing BigIntConstructor and BigIntPrototype
following spec[1, 2]. As addition, we are also implementing BigIntObject
warapper to handle ToObject(v) abstract operation when "v" is a BigInt
primitive. With these classes, now it's possible to syntetize
BigInt.prototype and then call "toString", "valueOf" and
"toLocaleString" when the primitive is a BigInt.
BigIntConstructor exposes an API to parse other primitives such as
Number, Boolean and String to BigInt.
We decided to skip parseInt implementation, since it was removed from
spec.
[1] - https://tc39.github.io/proposal-bigint/#sec-bigint-constructor
[2] - https://tc39.github.io/proposal-bigint/#sec-properties-of-the-bigint-prototype-object
* CMakeLists.txt:
* DerivedSources.make:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* jsc.cpp:
* runtime/BigIntConstructor.cpp: Added.
(JSC::BigIntConstructor::BigIntConstructor):
(JSC::BigIntConstructor::finishCreation):
(JSC::isSafeInteger):
(JSC::toBigInt):
(JSC::callBigIntConstructor):
(JSC::bigIntConstructorFuncAsUintN):
(JSC::bigIntConstructorFuncAsIntN):
* runtime/BigIntConstructor.h: Added.
(JSC::BigIntConstructor::create):
(JSC::BigIntConstructor::createStructure):
* runtime/BigIntObject.cpp: Added.
(JSC::BigIntObject::BigIntObject):
(JSC::BigIntObject::finishCreation):
(JSC::BigIntObject::toStringName):
(JSC::BigIntObject::defaultValue):
* runtime/BigIntObject.h: Added.
(JSC::BigIntObject::create):
(JSC::BigIntObject::internalValue const):
(JSC::BigIntObject::createStructure):
* runtime/BigIntPrototype.cpp: Added.
(JSC::BigIntPrototype::BigIntPrototype):
(JSC::BigIntPrototype::finishCreation):
(JSC::toThisBigIntValue):
(JSC::bigIntProtoFuncToString):
(JSC::bigIntProtoFuncToLocaleString):
(JSC::bigIntProtoFuncValueOf):
* runtime/BigIntPrototype.h: Added.
(JSC::BigIntPrototype::create):
(JSC::BigIntPrototype::createStructure):
* runtime/IntlCollator.cpp:
(JSC::IntlCollator::initializeCollator):
* runtime/IntlNumberFormat.cpp:
(JSC::IntlNumberFormat::initializeNumberFormat):
* runtime/JSBigInt.cpp:
(JSC::JSBigInt::createFrom):
(JSC::JSBigInt::parseInt):
(JSC::JSBigInt::toObject const):
* runtime/JSBigInt.h:
* runtime/JSCJSValue.cpp:
(JSC::JSValue::synthesizePrototype const):
* runtime/JSCPoisonedPtr.cpp:
* runtime/JSCell.cpp:
(JSC::JSCell::toObjectSlow const):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::bigIntPrototype const):
(JSC::JSGlobalObject::bigIntObjectStructure const):
* runtime/StructureCache.h:
* runtime/StructureInlines.h:
(JSC::prototypeForLookupPrimitiveImpl):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226338
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Tue, 2 Jan 2018 22:45:39 +0000 (22:45 +0000)]
REGRESSION(r226327): [GTK] Plugin process is broken
https://bugs.webkit.org/show_bug.cgi?id=181187
Unreviewed, fix PluginProcessMainUnix after r226327.
* PluginProcess/unix/PluginProcessMainUnix.cpp:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226337
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
beidson@apple.com [Tue, 2 Jan 2018 22:42:16 +0000 (22:42 +0000)]
Identify MessagePorts by a globally unique MessagePortIdentifier.
https://bugs.webkit.org/show_bug.cgi?id=181172
Reviewed by Alex Christensen.
No new tests (Behavior change covered by all existing tests).
This cleans up the abstract MessagePortChannel interface to be in terms of identifiers
instead of actual MessagePort objects.
The identifiers are compounded with the current ProcessIdentifier meaning they are global
across all processes for the running UI process, enabling easy cross-process communication.
(Actual cross-process communication comes in a followup)
* WebCore.xcodeproj/project.pbxproj:
* dom/InProcessMessagePortChannel.cpp:
(WebCore::InProcessMessagePortChannel::createChannelBetweenPorts):
(WebCore::InProcessMessagePortChannel::isConnectedTo):
(WebCore::InProcessMessagePortChannel::entangleWithRemoteIfOpen):
(WebCore::InProcessMessagePortChannel::entangleIfOpen): Deleted.
* dom/InProcessMessagePortChannel.h:
* dom/MessageChannel.cpp:
(WebCore::MessageChannel::MessageChannel):
(WebCore::m_port2):
* dom/MessagePort.cpp:
(WebCore::allMessagePortsLock):
(WebCore::MessagePort::ref const):
(WebCore::MessagePort::deref const):
(WebCore::MessagePort::existingMessagePortForIdentifier):
(WebCore::MessagePort::MessagePort):
(WebCore::MessagePort::~MessagePort):
(WebCore::MessagePort::postMessage):
(WebCore::MessagePort::entangleWithRemote):
(WebCore::MessagePort::entanglePorts):
(WebCore::MessagePort::entangle): Deleted.
* dom/MessagePort.h:
* dom/MessagePortChannel.h:
* dom/MessagePortIdentifier.h: Added.
(WebCore::operator==):
(WebCore::MessagePortIdentifier::encode const):
(WebCore::MessagePortIdentifier::decode):
(WebCore::MessagePortIdentifier::hash const):
(WTF::MessagePortIdentifierHash::hash):
(WTF::MessagePortIdentifierHash::equal):
(WTF::HashTraits<WebCore::MessagePortIdentifier>::emptyValue):
(WTF::HashTraits<WebCore::MessagePortIdentifier>::constructDeletedValue):
(WTF::HashTraits<WebCore::MessagePortIdentifier>::isDeletedValue):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226336
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
timothy_horton@apple.com [Tue, 2 Jan 2018 21:06:46 +0000 (21:06 +0000)]
Fix the build on platforms where UICurrentUserInterfaceIdiomIsPad is defined to false
https://bugs.webkit.org/show_bug.cgi?id=181218
Reviewed by Alex Christensen.
* Platform/spi/ios/UIKitSPI.h:
(currentUserInterfaceIdiomIsPad):
* UIProcess/ios/SmartMagnificationController.mm:
(WebKit::SmartMagnificationController::didCollectGeometryForSmartMagnificationGesture):
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKFormInputSession setAccessoryViewCustomButtonTitle:]):
(-[WKContentView _requiresKeyboardWhenFirstResponder]):
(-[WKContentView _displayFormNodeInputView]):
(-[WKContentView requiresAccessoryView]):
(-[WKContentView _updateAccessory]):
* UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
(-[WKAirPlayRoutePicker show:fromRect:]):
* UIProcess/ios/forms/WKFileUploadPanel.mm:
(-[WKFileUploadPanel _showPhotoPickerWithSourceType:]):
(-[WKFileUploadPanel _presentMenuOptionForCurrentInterfaceIdiom:]):
* UIProcess/ios/forms/WKFormInputControl.mm:
(-[WKDateTimePicker initWithView:datePickerMode:]):
(-[WKFormInputControl initWithView:]):
* UIProcess/ios/forms/WKFormSelectControl.mm:
(-[WKFormSelectControl initWithView:]):
On platforms where UICurrentUserInterfaceIdiomIsPad is defined to false,
blocks that conditionally execute based on its value are unreachable.
This causes the compiler to complain. Hide it away inside an inline function
and make use of that everywhere we used to use the macro.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226335
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
achristensen@apple.com [Tue, 2 Jan 2018 20:50:30 +0000 (20:50 +0000)]
Remove SVN file accidentally added in r226160
https://bugs.webkit.org/show_bug.cgi?id=180934
* UIProcess/WebPageProxy.cpp.orig: Removed.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226334
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
commit-queue@webkit.org [Tue, 2 Jan 2018 20:38:04 +0000 (20:38 +0000)]
Memory cache should not reuse resources with different credential fetch option
https://bugs.webkit.org/show_bug.cgi?id=181212
Patch by Youenn Fablet <youenn@apple.com> on 2018-01-02
Reviewed by Alex Christensen.
LayoutTests/imported/w3c:
* web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https-expected.txt:
Source/WebCore:
Covered by rebased test.
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::determineRevalidationPolicy const):
LayoutTests:
* TestExpectations: Removing test flakiness expectation.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226333
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
jiewen_tan@apple.com [Tue, 2 Jan 2018 20:28:31 +0000 (20:28 +0000)]
Update Credential Management API for WebAuthentication
https://bugs.webkit.org/show_bug.cgi?id=181082
<rdar://problem/
36055239>
Reviewed by Brent Fulgham.
LayoutTests/imported/w3c:
* web-platform-tests/credential-management/credentialscontainer-create-basics.https-expected.txt:
* web-platform-tests/credential-management/idl.https-expected.txt:
Source/WebCore:
Part 2/2
This patch implements Core API from Credential Management API: https://www.w3.org/TR/credential-management-1/#core.
which is required by WebAuthN. It also sets the CredentialManagement runtime flag to enable testing. Note that it
introduces a dummy PublicKeyCredential interface for testing functionalities of the Credential interface, which
cannot be instantiated.
Tests: http/wpt/credential-management/credentialscontainer-create-basics.https.html
http/wpt/credential-management/credentialscontainer-get-basics.https.html
http/wpt/credential-management/credentialscontainer-preventSilentAccess-basics.https.html
http/wpt/credential-management/idl.https.html
* CMakeLists.txt:
* DerivedSources.make:
* Modules/credentialmanagement/BasicCredential.cpp:
(WebCore::BasicCredential::BasicCredential):
(WebCore::BasicCredential::type const):
* Modules/credentialmanagement/BasicCredential.h:
(WebCore::BasicCredential::discovery const):
* Modules/credentialmanagement/BasicCredential.idl:
* Modules/credentialmanagement/CredentialCreationOptions.h:
* Modules/credentialmanagement/CredentialCreationOptions.idl:
* Modules/credentialmanagement/CredentialRequestOptions.h:
* Modules/credentialmanagement/CredentialRequestOptions.idl:
* Modules/credentialmanagement/CredentialsContainer.cpp:
(WebCore::CredentialsContainer::CredentialsContainer):
(WebCore::CredentialsContainer::isSameOriginWithItsAncestors):
(WebCore::CredentialsContainer::dispatchTask):
(WebCore::CredentialsContainer::get):
(WebCore::CredentialsContainer::store):
(WebCore::CredentialsContainer::isCreate):
(WebCore::CredentialsContainer::preventSilentAccess):
* Modules/credentialmanagement/CredentialsContainer.h:
(WebCore::CredentialsContainer::create):
(WebCore::CredentialsContainer::CredentialsContainer): Deleted.
* Modules/credentialmanagement/CredentialsContainer.idl:
* Modules/credentialmanagement/NavigatorCredentials.cpp:
(WebCore::NavigatorCredentials::credentials):
* Modules/credentialmanagement/NavigatorCredentials.h:
* Modules/credentialmanagement/NavigatorCredentials.idl:
* Modules/webauthn/PublicKeyCredential.cpp: Copied from Source/WebCore/Modules/credentialmanagement/BasicCredential.cpp.
(WebCore::PublicKeyCredential::PublicKeyCredential):
(WebCore::PublicKeyCredential::collectFromCredentialStore):
(WebCore::PublicKeyCredential::discoverFromExternalSource):
(WebCore::PublicKeyCredential::store):
(WebCore::PublicKeyCredential::create):
* Modules/webauthn/PublicKeyCredential.h: Copied from Source/WebCore/Modules/credentialmanagement/BasicCredential.cpp.
* Modules/webauthn/PublicKeyCredential.idl: Copied from Source/WebCore/Modules/credentialmanagement/BasicCredential.idl.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/WebCoreBuiltinNames.h:
* page/RuntimeEnabledFeatures.h:
Tools:
Enable Credential Management API for testing.
* DumpRenderTree/TestOptions.h:
* WebKitTestRunner/TestOptions.h:
LayoutTests:
This patch moves original tests for Credential Management API to http/wpt/ to better integrate
with web-platform-tests infrastructure. Hopefully this will help us later on contribute tests
back to W3C.
* credentials/idlharness-expected.txt: Removed.
* credentials/idlharness.html: Removed.
* fast/dom/navigator-detached-no-crash-expected.txt:
* http/wpt/credential-management/credentialscontainer-create-basics.https-expected.txt: Added.
* http/wpt/credential-management/credentialscontainer-create-basics.https.html: Added.
* http/wpt/credential-management/credentialscontainer-get-basics.https-expected.txt: Added.
* http/wpt/credential-management/credentialscontainer-get-basics.https.html: Added.
* http/wpt/credential-management/credentialscontainer-preventSilentAccess-basics.https-expected.txt: Added.
* http/wpt/credential-management/credentialscontainer-preventSilentAccess-basics.https.html: Added.
* http/wpt/credential-management/idl.https-expected.txt: Added.
* http/wpt/credential-management/idl.https.html: Added.
* platform/gtk/TestExpectations:
* platform/gtk/fast/dom/navigator-detached-no-crash-expected.txt:
* platform/mac-elcapitan-wk2/fast/dom/navigator-detached-no-crash-expected.txt:
* platform/mac-wk1/fast/dom/navigator-detached-no-crash-expected.txt:
* platform/win/TestExpectations:
* platform/win/fast/dom/navigator-detached-no-crash-expected.txt:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226332
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
timothy_horton@apple.com [Tue, 2 Jan 2018 20:20:16 +0000 (20:20 +0000)]
Fix the MathCommon build with a recent compiler
https://bugs.webkit.org/show_bug.cgi?id=181216
Reviewed by Sam Weinig.
* runtime/MathCommon.cpp:
(JSC::fdlibmPow):
This cast drops the 'const' qualifier from the pointer to 'one',
but it doesn't have to, and it makes the compiler sad.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226331
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
achristensen@apple.com [Tue, 2 Jan 2018 20:02:50 +0000 (20:02 +0000)]
Use BlockPtrs and lambdas instead of new/delete to pass parameters to blocks in WebViewImpl::performDragOperation
https://bugs.webkit.org/show_bug.cgi?id=180795
Reviewed by Brent Fulgham.
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::performDragOperation):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226330
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
commit-queue@webkit.org [Tue, 2 Jan 2018 19:52:35 +0000 (19:52 +0000)]
[Win] Web Inspector: Wrongly placed inspector highlight in HiDPI
https://bugs.webkit.org/show_bug.cgi?id=181173
Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2018-01-02
Reviewed by Alex Christensen.
* WebNodeHighlight.cpp:
(WebNodeHighlight::update): Scale the GraphicsContext.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226329
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
Ms2ger@igalia.com [Tue, 2 Jan 2018 18:29:40 +0000 (18:29 +0000)]
LayoutTests/imported/w3c:
Update imported/w3c/web-platform-tests/html/browsers/windows/browsing-context.html from upstream wpt.
https://bugs.webkit.org/show_bug.cgi?id=172255
Unreviewed test gardening.
* web-platform-tests/html/browsers/windows/browsing-context-expected.txt: rebaseline.
* web-platform-tests/html/browsers/windows/browsing-context.html: update.
LayoutTests:
Remove obsolete expectations for updated imported/w3c/web-platform-tests/html/browsers/windows/browsing-context.html.
https://bugs.webkit.org/show_bug.cgi?id=172255
Unreviewed test gardening.
* platform/gtk/TestExpectations:
* platform/mac/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226328
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Tue, 2 Jan 2018 18:17:12 +0000 (18:17 +0000)]
[WPE][GTK] Implement the assignment of ProcessIdentifiers to child processes
https://bugs.webkit.org/show_bug.cgi?id=181187
Reviewed by Brady Eidson.
* Shared/ChildProcess.cpp: Make the ProcessIdentifier mandatory.
(WebKit::ChildProcess::initialize):
* Shared/unix/ChildProcessMain.cpp: Initialize ChildProcessInitializationParameters with the
ProcessIdentifier.
(WebKit::ChildProcessMainBase::parseCommandLine):
* UIProcess/Launcher/glib/ProcessLauncherGLib.cpp: Copy the ProcessIdentifier from
LaunchOptions into argv.
(WebKit::ProcessLauncher::launchProcess):
* WebProcess/wpe/WebProcessMainWPE.cpp: Expect the WPE socket ID later in the command line.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226327
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Tue, 2 Jan 2018 18:17:07 +0000 (18:17 +0000)]
[GTK] Test /webkit2/WebKitWebExtension/form-controls-associated-signal is flaky
https://bugs.webkit.org/show_bug.cgi?id=168194
Reviewed by Carlos Garcia Campos.
Fix an assertion and unskip the test. The order that form controls are associated is not
guaranteed.
* Scripts/run-gtk-tests:
(GtkTestRunner):
* TestWebKitAPI/Tests/WebKitGLib/TestWebExtensions.cpp:
(didAssociateFormControlsCallback):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226326
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
achristensen@apple.com [Tue, 2 Jan 2018 17:21:37 +0000 (17:21 +0000)]
Use new WebsiteDataStore passed in through decidePolicyForNavigation SPI
https://bugs.webkit.org/show_bug.cgi?id=180897
<rdar://problem/
35535328>
Reviewed by Brent Fulgham.
Source/WebKit:
* Shared/WebsitePoliciesData.cpp:
(WebKit::WebsitePoliciesData::applyToDocumentLoader):
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::changeWebsiteDataStore):
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::pageBeginUsingWebsiteDataStore):
(WebKit::WebProcessPool::pageEndUsingWebsiteDataStore):
(WebKit::WebProcessPool::pageAddedToProcess): Deleted.
(WebKit::WebProcessPool::pageRemovedFromProcess): Deleted.
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::addExistingWebPage):
(WebKit::WebProcessProxy::removeWebPage):
* WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
Tools:
Test two forms of storage to be sure we are using a different WebsiteDataStore: cookies and sessionStorage.
* TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
(-[WebsitePoliciesWebsiteDataStoreDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[WebsitePoliciesWebsiteDataStoreDelegate webView:startURLSchemeTask:]):
(-[WebsitePoliciesWebsiteDataStoreDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(websiteDataStoreTestWebView):
(TEST):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226325
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
achristensen@apple.com [Tue, 2 Jan 2018 17:18:17 +0000 (17:18 +0000)]
Only use CookieStorageShim when we aren't using NetworkSession
https://bugs.webkit.org/show_bug.cgi?id=180766
Reviewed by Brent Fulgham.
* Shared/mac/CookieStorageShim.h:
* Shared/mac/CookieStorageShim.mm:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226324
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
achristensen@apple.com [Tue, 2 Jan 2018 17:17:19 +0000 (17:17 +0000)]
Clean up context menu code
https://bugs.webkit.org/show_bug.cgi?id=181074
Reviewed by Brent Fulgham.
Use Ref instead of RefPtr where possible.
Use move semantics instead of copying from const references when possible.
Remove dead iOS code. Reduce allocations. Add stub for WPE.
* UIProcess/API/APIContextMenuClient.h:
(API::ContextMenuClient::getContextMenuFromProposedMenu):
(API::ContextMenuClient::getContextMenuFromProposedMenuAsync):
(API::ContextMenuClient::showContextMenu):
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageContextMenuClient):
* UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::createContextMenuProxy):
* UIProcess/API/gtk/PageClientImpl.h:
* UIProcess/PageClient.h:
* UIProcess/WebContextMenuListenerProxy.cpp:
(WebKit::WebContextMenuListenerProxy::useContextMenuItems):
* UIProcess/WebContextMenuProxy.cpp:
(WebKit::WebContextMenuProxy::WebContextMenuProxy):
* UIProcess/WebContextMenuProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::showContextMenu):
(WebKit::WebPageProxy::internalShowContextMenu): Deleted.
* UIProcess/WebPageProxy.h:
* UIProcess/gtk/WebContextMenuProxyGtk.cpp:
(WebKit::WebContextMenuProxyGtk::showContextMenuWithItems):
(WebKit::WebContextMenuProxyGtk::WebContextMenuProxyGtk):
* UIProcess/gtk/WebContextMenuProxyGtk.h:
(WebKit::WebContextMenuProxyGtk::create):
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::createContextMenuProxy): Deleted.
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::createContextMenuProxy):
* UIProcess/mac/WebContextMenuProxyMac.h:
(WebKit::WebContextMenuProxyMac::create):
* UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::WebContextMenuProxyMac::WebContextMenuProxyMac):
(WebKit::WebContextMenuProxyMac::showContextMenuWithItems):
(WebKit::WebContextMenuProxyMac::showContextMenu):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226323
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
gskachkov@gmail.com [Tue, 2 Jan 2018 15:38:39 +0000 (15:38 +0000)]
WebAssembly: sending module to iframe fails
https://bugs.webkit.org/show_bug.cgi?id=179263
Reviewed by JF Bastien.
Source/WebCore:
Allow use WebAssembly.Module as input parameters for postMessage
in window and iframe object. To prevent sending message to iframe
that is not ready, in iframe-* test we are waiting message from
iframe only after that we send message to it.
Tests: wasm/iframe-parent-postmessage.html
wasm/iframe-postmessage.html
wasm/window-postmessage.html
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::dumpIfTerminal):
* bindings/js/SerializedScriptValue.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::postMessage):
LayoutTests:
* platform/ios-simulator/TestExpectations:
* platform/win/TestExpectations:
* resources/wasm-builder.js: Renamed from LayoutTests/workers/wasm-resources/builder.js.
* wasm/iframe-parent-postmessage-expected.txt: Added.
* wasm/iframe-parent-postmessage.html: Added.
* wasm/iframe-postmessage-expected.txt: Added.
* wasm/iframe-postmessage.html: Added.
* wasm/resources/frame-parent.html: Added.
* wasm/resources/frame.html: Added.
* wasm/resources/load_wasm.js: Added.
(createWasmModule):
* wasm/window-postmessage-expected.txt: Added.
* wasm/window-postmessage.html: Added.
* workers/wasm-mem-post-message.html:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226322
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
Ms2ger@igalia.com [Tue, 2 Jan 2018 15:19:35 +0000 (15:19 +0000)]
[WPE] Update some test expectations
https://bugs.webkit.org/show_bug.cgi?id=181211
Unreviewed test gardening.
* platform/wpe/TestExpectations: disable more SW tests.
* platform/wpe/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt:
rebaseline to match the features enabled on the bot.
* platform/wpe/imported/w3c/web-platform-tests/encrypted-media/encrypted-media-default-feature-policy.https.sub-expected.txt:
rebaseline for r225963.
* platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt:
rebaseline for r226162.
* platform/wpe/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.worker-expected.txt:
rebaseline for r226162.
* platform/wpe/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt:
Added: rebaseline to match the features enabled on the bot.
* platform/wpe/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt:
Added: rebaseline to match the features enabled on the bot.
* platform/wpe/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
Added: rebaseline to match the features enabled on the bot.
* platform/wpe/imported/w3c/web-platform-tests/html/dom/reflection-text-expected.txt:
Added: rebaseline to match the features enabled on the bot.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226321
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Tue, 2 Jan 2018 04:27:34 +0000 (04:27 +0000)]
== Rolled over to ChangeLog-2018-01-01 ==
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226320
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Tue, 2 Jan 2018 04:18:47 +0000 (04:18 +0000)]
Unreviewed, add some more GTK crash expectations
* platform/gtk/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226319
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
jeffm@apple.com [Mon, 1 Jan 2018 23:42:50 +0000 (23:42 +0000)]
Source/JavaScriptCore:
Update user-visible copyright strings to include 2018
https://bugs.webkit.org/show_bug.cgi?id=181141
Reviewed by Dan Bernstein.
* Info.plist:
Source/WebCore:
Update user-visible copyright strings to include 2018
https://bugs.webkit.org/show_bug.cgi?id=181141
Reviewed by Dan Bernstein.
* Info.plist:
Source/WebKit:
[Attachment Support] Remove current macOS support for dragging file-backed attachments
https://bugs.webkit.org/show_bug.cgi?id=181188
Patch by Wenson Hsieh <wenson_hsieh@apple.com> on 2017-12-30
Reviewed by Dan Bernstein.
See WebCore/ChangeLog for more detail.
* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::setPromisedDataForAttachment): Deleted.
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::setPromisedDataForAttachment): Deleted.
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::setPromisedDataForAttachment): Deleted.
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::setPromisedDataForAttachment): Deleted.
* WebProcess/WebCoreSupport/WebDragClient.h:
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::WebDragClient::declareAndWriteAttachment): Deleted.
Source/WebKitLegacy/mac:
Update user-visible copyright strings to include 2018
https://bugs.webkit.org/show_bug.cgi?id=181141
Reviewed by Dan Bernstein.
* Info.plist:
WebKitLibraries:
Update user-visible copyright strings to include 2018
https://bugs.webkit.org/show_bug.cgi?id=181141
Reviewed by Dan Bernstein.
* win/tools/scripts/COPYRIGHT-END-YEAR:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226318
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
simon.fraser@apple.com [Mon, 1 Jan 2018 20:32:33 +0000 (20:32 +0000)]
REGRESSION (r225122): fePointLights don't work
https://bugs.webkit.org/show_bug.cgi?id=181142
Reviewed by Dan Bates.
Source/WebCore:
r225122 refactored the initialLightingData code, but failed to set the lighting
color in the return value of PointLightSource::computePixelLightingData, so fePointLights
always used black.
Also fix a spelling error in initialLightingData.
Tests: svg/filters/fePointLight-color.svg
* platform/graphics/filters/DistantLightSource.cpp:
(WebCore::DistantLightSource::initPaintingData):
(WebCore::DistantLightSource::computePixelLightingData const):
* platform/graphics/filters/FELighting.cpp:
(WebCore::FELighting::drawLighting):
* platform/graphics/filters/LightSource.h:
* platform/graphics/filters/PointLightSource.cpp:
(WebCore::PointLightSource::computePixelLightingData const):
* platform/graphics/filters/SpotLightSource.cpp:
(WebCore::SpotLightSource::computePixelLightingData const):
LayoutTests:
Ref test that compares a point light with a flood color.
* svg/filters/fePointLight-color-expected.svg: Added.
* svg/filters/fePointLight-color.svg: Added.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226317
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
simon.fraser@apple.com [Mon, 1 Jan 2018 20:28:32 +0000 (20:28 +0000)]
Bottom right pixel of feDiffuseLighting has the wrong color
https://bugs.webkit.org/show_bug.cgi?id=181203
Reviewed by Antti Koivisto.
Source/WebCore:
The lower right pixel of a feDiffuseLighting was the wrong color, because the kernel
values didn't match the spec for the bottom right Y values.
Test: svg/filters/feDiffuseLighting-bottomRightPixel.html
* platform/graphics/filters/FELighting.cpp:
(WebCore::FELighting::LightingData::bottomRightNormal const):
LayoutTests:
Test that draws an SVG image into a canvas, and scales it up without interpolation.
* svg/filters/feDiffuseLighting-bottomRightPixel-expected.html: Added.
* svg/filters/feDiffuseLighting-bottomRightPixel.html: Added.
* svg/filters/resources/feDiffuseLighting-rect.svg: Added.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226316
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
simon.fraser@apple.com [Mon, 1 Jan 2018 19:53:39 +0000 (19:53 +0000)]
SVG lighting colors need to be converted into linearSRGB
https://bugs.webkit.org/show_bug.cgi?id=181196
Reviewed by Dan Bates.
Source/WebCore:
SVG filters, like feLighting, that poke values directly into buffers rather than going
through CG like feFlood, need to convert colors into the operating color space. So add
conversion functions to go between linear and sRGB colors, and use these in feLighting,
and in ImageBuffer (which is only used for non-CG platforms).
Tests: svg/filters/feSpotLight-color.svg
* platform/graphics/ColorUtilities.cpp:
(WebCore::linearToSRGBColorComponent):
(WebCore::sRGBToLinearColorComponent):
(WebCore::linearToSRGBColor):
(WebCore::sRGBToLinearColor):
* platform/graphics/ColorUtilities.h:
* platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::transformColorSpace):
* platform/graphics/filters/FELighting.cpp:
(WebCore::FELighting::drawLighting):
LayoutTests:
Compare a far-away green spotlight with a green flood. The bottom right pixel always
has the wrong color (webkit.org/b/181203), so mask it out.
* svg/filters/feSpotLight-color-expected.svg: Added.
* svg/filters/feSpotLight-color.svg: Added.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226315
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
jiewen_tan@apple.com [Sun, 31 Dec 2017 09:25:47 +0000 (09:25 +0000)]
[WebCrypto] Avoid promises being destroyed in secondary threads
https://bugs.webkit.org/show_bug.cgi?id=180499
<rdar://problem/
35890680>
Reviewed by Youenn Fablet.
This patch adds pending promise queue to SubtleCrypto such that it no longer
passes promises around different threads, which could cause crashes when
promises are destroyed in secondary threads.
Covered by existing tests.
* crypto/SubtleCrypto.cpp:
(WebCore::getPromise):
(WebCore::SubtleCrypto::encrypt):
(WebCore::SubtleCrypto::decrypt):
(WebCore::SubtleCrypto::sign):
(WebCore::SubtleCrypto::verify):
(WebCore::SubtleCrypto::digest):
(WebCore::SubtleCrypto::generateKey):
(WebCore::SubtleCrypto::deriveKey):
(WebCore::SubtleCrypto::deriveBits):
(WebCore::SubtleCrypto::importKey):
(WebCore::SubtleCrypto::exportKey):
(WebCore::SubtleCrypto::wrapKey):
(WebCore::SubtleCrypto::unwrapKey):
* crypto/SubtleCrypto.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226314
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mitz@apple.com [Sun, 31 Dec 2017 04:38:52 +0000 (04:38 +0000)]
REGRESSION (r225494): Mouse pointer reappears shortly after hiding when scrolling using arrow keys
https://bugs.webkit.org/show_bug.cgi?id=181193
Reviewed by Alexey Proskuryakov.
* page/EventHandler.cpp:
(WebCore::EventHandler::cancelAutoHideCursorTimer): Removed a call to unhide the cursor
here.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226313
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
wenson_hsieh@apple.com [Sat, 30 Dec 2017 19:30:40 +0000 (19:30 +0000)]
[Attachment Support] Remove current macOS support for dragging file-backed attachments
https://bugs.webkit.org/show_bug.cgi?id=181188
Reviewed by Dan Bernstein.
Source/WebCore:
Support for dragging attachments out as files on the NSPasteboard was introduced in r181760. However, this is
(1) a macOS-specific implementation, and (2) does not support attachments whose files are backed by inline data
rather than a filepath. As part of adding further WebKit attachment element support, subsequent patches will
reimplement support for dragging attachment elements in a cross-Cocoa-platform way that also allows for either
data- or file-backed blobs to be written to the pasteboard.
No new functionality; no new tests. All existing layout and API tests still pass.
* page/DragClient.h:
(WebCore::DragClient::declareAndWriteDragImage):
(WebCore::DragClient::declareAndWriteAttachment): Deleted.
* page/DragController.cpp:
(WebCore::DragController::startDrag):
* page/DragController.h:
(WebCore::DragController::draggingImageURL const):
(WebCore::DragController::draggingAttachmentURL const): Deleted.
* page/gtk/DragControllerGtk.cpp:
(WebCore::DragController::declareAndWriteAttachment): Deleted.
* page/mac/DragControllerMac.mm:
(WebCore::DragController::declareAndWriteAttachment): Deleted.
* page/win/DragControllerWin.cpp:
(WebCore::DragController::declareAndWriteAttachment): Deleted.
* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::absoluteAttachmentURL const): Deleted.
* rendering/HitTestResult.h:
Source/WebKit:
See WebCore/ChangeLog for more detail.
* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::setPromisedDataForAttachment): Deleted.
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::setPromisedDataForAttachment): Deleted.
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::setPromisedDataForAttachment): Deleted.
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::setPromisedDataForAttachment): Deleted.
* WebProcess/WebCoreSupport/WebDragClient.h:
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::WebDragClient::declareAndWriteAttachment): Deleted.
Source/WebKitLegacy/mac:
See WebCore/ChangeLog for more detail.
* WebCoreSupport/WebDragClient.h:
* WebCoreSupport/WebDragClient.mm:
(WebDragClient::declareAndWriteAttachment): Deleted.
* WebView/WebHTMLView.mm:
(-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226312
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
utatane.tea@gmail.com [Sat, 30 Dec 2017 19:05:32 +0000 (19:05 +0000)]
[JSC] Remove unused JSTypes
https://bugs.webkit.org/show_bug.cgi?id=181184
Reviewed by Saam Barati.
JSType includes some unused types such as NullType. They are for
primitive values in old days. But now JSType is only used for JSCells.
* runtime/JSType.h:
* runtime/TypedArrayType.cpp:
(JSC::typeForTypedArrayType):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226311
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
sbarati@apple.com [Fri, 29 Dec 2017 07:52:24 +0000 (07:52 +0000)]
Remove op_assert and make @assert in builtins a function call so we have DFG/FTL coverage for builtins that use @assert in debug builds
https://bugs.webkit.org/show_bug.cgi?id=181176
Reviewed by Yusuke Suzuki.
Previously, op_assert was only implemented in the LLInt and baseline JIT. This
meant that any builtin that used @assert was not tiering up to the DFG/FTL
in debug builds. This patch changes @assert to just call a host function when
!ASSERT_DISABLED. It's a no-op when ASSERT_DISABLED. Now, builtins that use @assert
will tier up to the DFG/FTL on debug builds.
* builtins/BuiltinNames.h:
* bytecode/BytecodeDumper.cpp:
(JSC::BytecodeDumper<Block>::dumpBytecode):
* bytecode/BytecodeIntrinsicRegistry.h:
* bytecode/BytecodeList.json:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitAssert): Deleted.
* bytecompiler/BytecodeGenerator.h:
* bytecompiler/NodesCodegen.cpp:
(JSC::FunctionCallResolveNode::emitBytecode):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_assert): Deleted.
* jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
* llint/LowLevelInterpreter.asm:
* runtime/CommonSlowPaths.cpp:
* runtime/CommonSlowPaths.h:
* runtime/JSGlobalObject.cpp:
(JSC::assertCall):
(JSC::JSGlobalObject::init):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226310
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
zalan@apple.com [Fri, 29 Dec 2017 06:18:48 +0000 (06:18 +0000)]
RenderTreeUpdater::GeneratedContent should hold a weak reference to RenderQuote.
https://bugs.webkit.org/show_bug.cgi?id=181185
<rdar://problem/
36235307>
Reviewed by David Kilzer.
Source/WebCore:
Test: fast/css/content/content-quotes-crash-with-details.html
* rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:
(WebCore::RenderTreeUpdater::GeneratedContent::updateQuotesUpTo):
* rendering/updating/RenderTreeUpdaterGeneratedContent.h:
(): Deleted.
LayoutTests:
* fast/css/content/content-quotes-crash-with-details-expected.txt: Added.
* fast/css/content/content-quotes-crash-with-details.html: Added.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226309
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
beidson@apple.com [Fri, 29 Dec 2017 05:56:29 +0000 (05:56 +0000)]
Add a ProcessIdentifier, vended from the UI process, to each child process
https://bugs.webkit.org/show_bug.cgi?id=181155
Reviewed by Brent Fulgham.
Source/WebCore:
No new tests (Not yet testable)
More than once we've needed to create an identifier for an object that is unique across
all processes no matter which process it came from.
Sometimes we have an object or proxy object to the UI, Storage, or Network process
that allows us to augment a process-unique identifier to be globally unique. Due to multiple
sessions even this isn't good enough. Other times we have to create more hair-brained solutions.
In upcoming MessagePort work (Next step is https://bugs.webkit.org/show_bug.cgi?id=181172)
there was no truly workable solution for this.
By introducing a new ProcessIdentifier to each WK2 child processes that is guaranteed to be
unique over the run of a given UI process, we can easily create an object in any process and
identify it uniquely across all processes.
Obviously "process identifier" brings to mind a processes PID but that isn't good enough.
The number of PIDs on the system is fairly low and they are global across all
processes on the system. It is easy to see how a given UI process that runs for long enough
(such as a web browser that the user rarely quits) will start to run in to recycled PIDs,
therefore breaking the uniqueness guarantee that is required.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/Process.cpp: Added.
(WebCore::Process::setIdentifier): Sets the process-wise identifier (to be used during WK2
child process initialization)
(WebCore::Process::identifier): Get the process-wide identifier.
* platform/Process.h: Added.
Source/WebKit:
* Shared/ChildProcess.cpp:
(WebKit::ChildProcess::initialize): Set the process-wide identifier if the initialization
parameters have it. Cocoa ASSERTS it exists; non-Cocoa platforms will have to figure this
out soon.
* Shared/ChildProcess.h:
* Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:
(WebKit::XPCServiceInitializer):
* Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm:
(WebKit::XPCServiceInitializerDelegate::getProcessIdentifier):
* UIProcess/ChildProcessProxy.cpp:
(WebKit::ChildProcessProxy::getLaunchOptions):
* UIProcess/ChildProcessProxy.h:
(WebKit::ChildProcessProxy::coreProcessIdentifier const):
* UIProcess/Launcher/ProcessLauncher.h:
* UIProcess/Launcher/mac/ProcessLauncherMac.mm:
(WebKit::ProcessLauncher::launchProcess):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226308
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
utatane.tea@gmail.com [Fri, 29 Dec 2017 01:41:45 +0000 (01:41 +0000)]
Remove std::chrono if it is not used for ArgumentCoder or PersistentCoder
https://bugs.webkit.org/show_bug.cgi?id=181174
Reviewed by Konstantin Tokarev.
Source/WebCore:
We would like to remove std::chrono as much as possible due to the danger of
its overflow unawareness. This patch removes std::chrono if it is not used
for ArgumentCoder or PersistentCoder.
No behavior change.
* fileapi/FileReader.cpp:
(WebCore::FileReader::didReceiveData):
* fileapi/FileReader.h:
* inspector/InspectorOverlay.cpp:
(WebCore::InspectorOverlay::showPaintRect):
(WebCore::InspectorOverlay::updatePaintRectsTimerFired):
* inspector/InspectorOverlay.h:
* page/ResourceUsageThread.cpp:
(WebCore::ResourceUsageThread::threadBody):
* page/cocoa/MemoryReleaseCocoa.mm:
(WebCore::jettisonExpensiveObjectsOnTopLevelNavigation):
* platform/network/curl/SocketStreamHandleImpl.h:
* platform/network/curl/SocketStreamHandleImplCurl.cpp:
(WebCore::SocketStreamHandleImpl::waitForAvailableData):
(WebCore::SocketStreamHandleImpl::startThread):
Source/WebKit:
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::retrieve):
* NetworkProcess/cache/NetworkCacheStatistics.cpp:
(WebKit::NetworkCache::Statistics::initialize):
* UIProcess/Cocoa/ViewGestureController.cpp:
(WebKit::ViewGestureController::SnapshotRemovalTracker::log const):
(WebKit::ViewGestureController::SnapshotRemovalTracker::start):
* UIProcess/Cocoa/ViewGestureController.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didCommitLoad):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::loadCommitTime const):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::registerWithStateDumper):
Source/WTF:
Make WallTime more constexpr friendly. This change is already applied to MonoTonicTime.
We would like to move std::{isfinite,isinf,isnan} overloadings from std:: to each class scope in a separate patch[1].
[1]: https://bugs.webkit.org/show_bug.cgi?id=181183
* wtf/WallTime.h:
(WTF::WallTime::WallTime):
(WTF::WallTime::fromRawSeconds):
(WTF::WallTime::infinity):
(WTF::WallTime::secondsSinceEpoch const):
(WTF::WallTime::operator bool const):
(WTF::WallTime::operator+ const):
(WTF::WallTime::operator- const):
(WTF::WallTime::operator== const):
(WTF::WallTime::operator!= const):
(WTF::WallTime::operator< const):
(WTF::WallTime::operator> const):
(WTF::WallTime::operator<= const):
(WTF::WallTime::operator>= const):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226307
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
commit-queue@webkit.org [Thu, 28 Dec 2017 22:06:35 +0000 (22:06 +0000)]
[Win][CMake] Use add_custom_command to copy each forwarding header files
https://bugs.webkit.org/show_bug.cgi?id=180921
Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2017-12-28
Reviewed by Brent Fulgham.
.:
Modifying WTF header files didn't trigger the recompilation of
TestWTF because Ninja doesn't know which command generates the
forwarding header.
Use add_custom_command to copy each forwarding header files.
* Source/cmake/WebKitMacros.cmake: Added a new function WEBKIT_MAKE_FORWARDING_HEADERS.
Source/JavaScriptCore:
* PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.
Source/WebCore:
No new tests because there is no behavior change.
* PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.
Source/WebKitLegacy:
* PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.
Source/WTF:
* wtf/PlatformWin.cmake: Use WEBKIT_MAKE_FORWARDING_HEADERS.
Tools:
TestWTFLib needs forwarding headers of WebCore. Use
add_dependencies instead of invoking the DerivedSources/WebCore/preBuild.cmd.
* TestWebKitAPI/PlatformWin.cmake:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226306
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
sbarati@apple.com [Thu, 28 Dec 2017 18:13:15 +0000 (18:13 +0000)]
Assertion used to determine if something is an async generator is wrong
https://bugs.webkit.org/show_bug.cgi?id=181168
<rdar://problem/
35640560>
Reviewed by Yusuke Suzuki.
JSTests:
* stress/async-generator-assertion.js: Added.
Source/JavaScriptCore:
Previous assertions were doing a get on the base value for @@asyncIterator.
This symbol is defined on AsyncGeneratorPrototype. The base value may change
its prototype, but it's still an async generator as far as our system is
concerned. This patch updates the assertion to check for a private property
on the base value.
* builtins/AsyncGeneratorPrototype.js:
(globalPrivate.asyncGeneratorReject):
(globalPrivate.asyncGeneratorResolve):
(globalPrivate.asyncGeneratorResumeNext):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226305
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
utatane.tea@gmail.com [Thu, 28 Dec 2017 14:17:06 +0000 (14:17 +0000)]
[WTF] Add clock_gettime based monotonicallyIncreasingTime implementation for Linux and BSDs
https://bugs.webkit.org/show_bug.cgi?id=181175
Reviewed by Michael Catanzaro.
Use platform-provided POSIX APIs to get monotonic time.
* wtf/CurrentTime.cpp:
(WTF::monotonicallyIncreasingTime):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226304
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
dewei_zhu@apple.com [Wed, 27 Dec 2017 22:55:43 +0000 (22:55 +0000)]
Test freshness page should use build time instead of commit time to determine the freshness of the data point.
https://bugs.webkit.org/show_bug.cgi?id=181156
Reviewed by Alexey Proskuryakov.
Build time is a better data point freshness indicator. Test freshness page is designed to highlight test failures.
Using commit time will result in including the compiling and test running time which does not quite match the
definition of data point fresshness.
* public/v3/pages/test-freshness-page.js:
(TestFreshnessPage.prototype._fetchTestResults): Use build time instead of commit time.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226303
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
clopez@igalia.com [Wed, 27 Dec 2017 17:41:19 +0000 (17:41 +0000)]
Build fix after r226299 (3)
https://bugs.webkit.org/show_bug.cgi?id=181160
Unreviewed build fix.
* API/tests/TypedArrayCTest.cpp: fix typo in header name.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226302
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
clopez@igalia.com [Wed, 27 Dec 2017 17:38:14 +0000 (17:38 +0000)]
Build fix after r226299 (2)
https://bugs.webkit.org/show_bug.cgi?id=181160
Unreviewed build fix.
* API/tests/TypedArrayCTest.cpp: Add missing header include.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226301
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
clopez@igalia.com [Wed, 27 Dec 2017 17:29:28 +0000 (17:29 +0000)]
Build fix after r226299
https://bugs.webkit.org/show_bug.cgi?id=181160
Unreviewed build fix.
Source/JavaScriptCore:
* API/tests/TypedArrayCTest.cpp:
(assertEqualsAsNumber): Disambiguate usage of isnan.
Source/WebCore:
No new tests, its a build fix.
* platform/graphics/FontSelectionAlgorithm.h: Add missing include.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226300
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
clopez@igalia.com [Wed, 27 Dec 2017 16:46:02 +0000 (16:46 +0000)]
REGRESSION(r225769): Build error with constexpr std::max // std::min in libdstdc++4
https://bugs.webkit.org/show_bug.cgi?id=181160
Reviewed by Myles C. Maxfield.
Source/JavaScriptCore:
Disambiguate usage of min and max (Use the version from stdlib).
* runtime/JSArray.cpp:
(JSC::JSArray::unshiftCountSlowCase):
(JSC::JSArray::setLengthWithArrayStorage):
(JSC::JSArray::shiftCountWithArrayStorage):
(JSC::JSArray::fillArgList):
(JSC::JSArray::copyToArguments):
Source/WebCore:
No new tests, its a build fix.
* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
(WebCore::MediaPlayerPrivateAVFoundationCF::currentMediaTime const): Disambiguate usage of max (Use the version from stdlib).
* platform/graphics/FontSelectionAlgorithm.h:
(WebCore::FontSelectionValue::clampFloat): Use WTF::min and WTF::max for constexpr result.
* platform/graphics/win/UniscribeController.cpp:
(WebCore::UniscribeController::shapeAndPlaceItem): Disambiguate usage of min and max (Use the version from stdlib).
Source/WebKitLegacy/win:
* Plugins/PluginView.cpp:
(WebCore::PluginView::handlePost): Disambiguate usage of min (Use the version from stdlib).
Source/WTF:
In libstdc++-4 std::max and std::min are not annotated with constexpr.
This patch adds a WTF::min and WTF::max for using where a constexpr result is expected.
Related: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60271
* wtf/StdLibExtras.h:
(WTF::min):
(WTF::max):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226299
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
zandobersek@gmail.com [Wed, 27 Dec 2017 10:52:39 +0000 (10:52 +0000)]
REGRESSION(r225913): about 30 JSC test failures on ARMv7
https://bugs.webkit.org/show_bug.cgi?id=181162
Reviewed by Michael Catanzaro.
Fast case in DFG::SpeculativeJIT::compileArraySlice() was enabled in
r225913 on all but 32-bit x86 platform. Other 32-bit platforms have the
same lack of GP registers, so the conditional is changed here to only
enable this optimization explicitly on ARM64 and x86-64.
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileArraySlice):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226298
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
jlewis3@apple.com [Wed, 27 Dec 2017 02:12:59 +0000 (02:12 +0000)]
Marked imported/w3c/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/update.https.html as failing on macOS and iOS WK2.
https://bugs.webkit.org/show_bug.cgi?id=181167
Unreviewed test gardening.
* platform/ios-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226297
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
jlewis3@apple.com [Wed, 27 Dec 2017 01:52:56 +0000 (01:52 +0000)]
Marked imported/w3c/web-platform-tests/service-workers/service-worker/register-same-scope-different-script-url.https.html as flaky on macOS and iOS WK2.
https://bugs.webkit.org/show_bug.cgi?id=181166
Unreviewed test gardening.
* platform/ios-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226296
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
utatane.tea@gmail.com [Wed, 27 Dec 2017 00:33:11 +0000 (00:33 +0000)]
[JSC] Remove std::chrono completely
https://bugs.webkit.org/show_bug.cgi?id=181165
Reviewed by Konstantin Tokarev.
Source/JavaScriptCore:
This patch removes std::chrono use completely from JSC.
* API/JSContextRef.cpp:
(JSContextGroupSetExecutionTimeLimit):
* API/tests/ExecutionTimeLimitTest.cpp:
(currentCPUTimeAsJSFunctionCallback):
(testExecutionTimeLimit):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::CodeBlock):
(JSC::timeToLive):
* bytecode/CodeBlock.h:
(JSC::CodeBlock::timeSinceCreation):
* runtime/SamplingProfiler.cpp:
(JSC::SamplingProfiler::SamplingProfiler):
(JSC::SamplingProfiler::timerLoop):
(JSC::SamplingProfiler::takeSample):
(JSC::SamplingProfiler::reportTopFunctions):
(JSC::SamplingProfiler::reportTopBytecodes):
* runtime/SamplingProfiler.h:
(JSC::SamplingProfiler::setTimingInterval):
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/Watchdog.cpp:
(JSC::Watchdog::Watchdog):
(JSC::Watchdog::setTimeLimit):
(JSC::Watchdog::shouldTerminate):
(JSC::Watchdog::startTimer):
(JSC::currentWallClockTime): Deleted.
* runtime/Watchdog.h:
Source/WTF:
WTF::currentCPUTime now returns WTF::Seconds.
We also add the implementaiton for Linux and FreeBSD.
* wtf/CurrentTime.cpp:
(WTF::currentCPUTime):
* wtf/CurrentTime.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226295
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
commit-queue@webkit.org [Tue, 26 Dec 2017 18:54:38 +0000 (18:54 +0000)]
REGRESSION(r226269): 60 JSC test failures on ARMv7
https://bugs.webkit.org/show_bug.cgi?id=181163
Patch by Zan Dobersek <zdobersek@igalia.com> on 2017-12-26
Reviewed by Yusuke Suzuki.
In r226269, DFG::SpeculativeJIT::compile() changed behavior for the
GetDirectPname operation on non-x86 platforms, switching to using
GPRFlushedCallResult registers for the payload and tag pair of the
return value (through the JSValueRegsFlushedCallResult struct). This
tripped about 60 test cases on ARMv7.
As before this change, GPRTemporary registers should be used, but this
can now be done through a JSValueRegsTemporary object.
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226294
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Tue, 26 Dec 2017 18:21:40 +0000 (18:21 +0000)]
Unreviewed GTK test gardening
* platform/gtk/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226293
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mitz@apple.com [Mon, 25 Dec 2017 23:35:30 +0000 (23:35 +0000)]
[macOS] On Retina displays, icon used as drag image for large image is scaled down
https://bugs.webkit.org/show_bug.cgi?id=181154
Reviewed by Wenson Hsieh.
* page/DragController.cpp:
(WebCore::DragController::doImageDrag): When using an icon for the drag image, also adjust
its size for the device scale factor, like we do in the not-icon case.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226292
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
ddkilzer@apple.com [Sun, 24 Dec 2017 21:34:53 +0000 (21:34 +0000)]
WebKit fixes to enable -Wstrict-prototypes for Safari
<https://webkit.org/b/181146>
Reviewed by Dan Bernstein.
Source/WebCore:
* platform/ios/wak/WebCoreThread.h:
(WebThreadLockFromAnyThread):
(WebThreadLockFromAnyThreadNoLog):
(WebThreadUnlockFromAnyThread):
(WebThreadUnlockGuardForMail):
(WebThreadSetShouldYield):
- Add 'void' to C function declarations.
* platform/ios/wak/WebCoreThread.mm:
(WebThreadLockFromAnyThread):
(WebThreadLockFromAnyThreadNoLog):
(WebThreadUnlockFromAnyThread):
(WebThreadUnlockGuardForMail):
- Add 'void' to C function implementations.
* platform/ios/wak/WebCoreThreadRun.cpp:
(class WebThreadBlock): Add 'void' to block declarations.
Rename 'task' to 'block' for consistency.
(_WebThreadRun): Add 'void' to block declaration. Make
argument name match declaration by changing 'task' to 'block'.
(WebThreadRun): Ditto.
* platform/ios/wak/WebCoreThreadRun.h:
(WebThreadRun): Add 'void' to block declaration.
Source/WebKit:
* Shared/API/c/WKGeometry.cpp:
(WKSizeGetTypeID):
(WKPointGetTypeID):
(WKRectGetTypeID):
* Shared/API/c/WKGeometry.h:
(WKSizeGetTypeID):
(WKPointGetTypeID):
(WKRectGetTypeID):
* Shared/API/c/WKImage.cpp:
(WKImageGetTypeID):
* Shared/API/c/WKImage.h:
(WKImageGetTypeID):
- Add 'void' to C function declarations and implementations as
necessary.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView applyAutocorrection:toString:withCompletionHandler:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
- Add 'void' to block declarations as necessary.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226291
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
ddkilzer@apple.com [Sun, 24 Dec 2017 19:07:12 +0000 (19:07 +0000)]
REGRESSION (r224313): Fix build warning when compiling WebKit.xcassets
<https://webkit.org/b/181148>
Reviewed by Dan Bernstein.
Fixes the following build warning:
Opensource/Source/WebKit/WebKit.xcassets: warning: Failed to read file attributes for "Opensource/Source/WebKit/WebKit.xcassets"
Failure Reason: No such file or directory
* WebKit.xcodeproj/project.pbxproj: Fix relative path with
case-insensitive filesystem and repository name assumptions.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226290
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
graouts@webkit.org [Sun, 24 Dec 2017 13:57:42 +0000 (13:57 +0000)]
[Web Animations] Implement Element.animate()
https://bugs.webkit.org/show_bug.cgi?id=180402
<rdar://problem/
35851353>
Reviewed by Dean Jackson.
LayoutTests/imported/w3c:
Rebaselining a few tests using Element.animate(). They still fail, but no longer on
the Element.animate() calls.
* web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output-expected.txt:
* web-platform-tests/css-timing-1/frames-timing-functions-output-expected.txt:
* web-platform-tests/css-timing-1/step-timing-functions-output-expected.txt:
Source/WebCore:
Now that we have added support for play() (webkit.org/b/178932) on Animation and parsing of multiple keyframes
(webkit.org/b/179708), we can add support Element.animate(). To support this simple task, we must add a series
of new IDL interfaces to support option parameters for Element.animate() (KeyframeAnimationOptions),
AnimationEffect (AnimationEffectTimingProperties), KeyframeEffect (KeyframeEffectOptions) and supporting
types CompositeOperation, FillMode, IterationCompositeOperation and PlaybackDirection. While we do not support
most parameters of those types, we at least define them for future support.
To support the most used form of the Element.animate() constructor across the WPT tests, we add support for
specifying the duration of an animation when constructing both a KeyframeEffect and calling Element.animate(),
either via a property on an options dictionary or as a double value.
The implementation of Element.animate() itself is relatively straightforward, we just need to create a supporting
KeyframeEffect based on the options provided, then an Animation with that effect set on it, and finally call play().
We also fix one crash that came up in WPT tests where we would try to access the DOMWindow when none was available
in http/wpt/web-animations/interfaces/Animatable/animate-no-browsing-context.html.
* CMakeLists.txt: Add new IDL files.
* DerivedSources.make: Add new IDL files.
* Sources.txt: Add new generated JS bindings.
* WebCore.xcodeproj/project.pbxproj: Add new IDL, header and C++ files.
* animation/Animatable.idl: Expose the animate() method.
* animation/AnimationEffectTiming.cpp:
(WebCore::AnimationEffectTiming::setBindingsDuration): Make the duration property spec-compliant and expect the right
kind of type (unrestricted double or DOMString).
* animation/AnimationEffectTiming.h:
* animation/AnimationEffectTiming.idl:
* animation/AnimationEffectTimingProperties.h: Added.
* animation/AnimationEffectTimingProperties.idl: Added.
* animation/CompositeOperation.h: Added.
* animation/CompositeOperation.idl: Added.
* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::currentTime): Check that there is DOMWindow before proceeding to querying the current time
through it, fixes a newly-apparent crash.
* animation/FillMode.h: Added.
* animation/FillMode.idl: Added.
* animation/IterationCompositeOperation.h: Added.
* animation/IterationCompositeOperation.idl: Added.
* animation/KeyframeAnimationOptions.h: Added.
* animation/KeyframeAnimationOptions.idl: Added.
* animation/KeyframeEffect.cpp: Update types that are no longer defined under KeyframeEffect.
(WebCore::processIterableKeyframes):
(WebCore::processPropertyIndexedKeyframes):
(WebCore::KeyframeEffect::create): Add support for duration provided either directly as a double or through KeyframeEffectOptions.
* animation/KeyframeEffect.h:
* animation/KeyframeEffect.idl:
* animation/KeyframeEffectOptions.h: Added.
* animation/KeyframeEffectOptions.idl: Added.
* animation/PlaybackDirection.h: Added.
* animation/PlaybackDirection.idl: Added.
* dom/Element.cpp:
(WebCore::Element::animate): Implement Element.animate().
* dom/Element.h:
LayoutTests:
Turning on Element.animate() means that a ton of WPT tests that would immediately fail when Element.animate()
was used now progressed to either PASS, FAIL or TIMEOUT. We update the output to match the updated behavior
and TestExpectations for some cases of flaky outputs due to incomplete implementations that had not surfaced
until now.
We're also removing a Blink test that uses Web Animations to animate a bogus "rotate" property.
* TestExpectations:
* http/wpt/web-animations/animation-model/animation-types/discrete-animation-expected.txt:
* http/wpt/web-animations/animation-model/combining-effects/effect-composition-expected.txt:
* http/wpt/web-animations/animation-model/keyframe-effects/effect-value-context-expected.txt:
* http/wpt/web-animations/animation-model/keyframe-effects/effect-value-overlapping-keyframes-expected.txt:
* http/wpt/web-animations/animation-model/keyframe-effects/effect-value-transformed-distance-expected.txt:
* http/wpt/web-animations/animation-model/keyframe-effects/effect-value-visibility-expected.txt:
* http/wpt/web-animations/interfaces/Animatable/animate-expected.txt:
* http/wpt/web-animations/interfaces/Animatable/animate-no-browsing-context-expected.txt:
* http/wpt/web-animations/interfaces/Animatable/getAnimations-expected.txt:
* http/wpt/web-animations/interfaces/Animation/cancel-expected.txt:
* http/wpt/web-animations/interfaces/Animation/effect-expected.txt:
* http/wpt/web-animations/interfaces/Animation/finish-expected.txt:
* http/wpt/web-animations/interfaces/Animation/finished-expected.txt:
* http/wpt/web-animations/interfaces/Animation/id-expected.txt:
* http/wpt/web-animations/interfaces/Animation/oncancel-expected.txt:
* http/wpt/web-animations/interfaces/Animation/onfinish-expected.txt:
* http/wpt/web-animations/interfaces/Animation/pause-expected.txt:
* http/wpt/web-animations/interfaces/Animation/play-expected.txt:
* http/wpt/web-animations/interfaces/Animation/playState-expected.txt:
* http/wpt/web-animations/interfaces/Animation/playbackRate-expected.txt:
* http/wpt/web-animations/interfaces/Animation/ready-expected.txt:
* http/wpt/web-animations/interfaces/Animation/startTime-expected.txt:
* http/wpt/web-animations/interfaces/AnimationEffectTiming/delay-expected.txt:
* http/wpt/web-animations/interfaces/AnimationEffectTiming/direction-expected.txt:
* http/wpt/web-animations/interfaces/AnimationEffectTiming/duration-expected.txt:
* http/wpt/web-animations/interfaces/AnimationEffectTiming/easing-expected.txt:
* http/wpt/web-animations/interfaces/AnimationEffectTiming/endDelay-expected.txt:
* http/wpt/web-animations/interfaces/AnimationEffectTiming/fill-expected.txt:
* http/wpt/web-animations/interfaces/AnimationEffectTiming/getAnimations-expected.txt:
* http/wpt/web-animations/interfaces/AnimationEffectTiming/getComputedStyle-expected.txt:
* http/wpt/web-animations/interfaces/AnimationEffectTiming/iterationStart-expected.txt:
* http/wpt/web-animations/interfaces/AnimationEffectTiming/iterations-expected.txt:
* http/wpt/web-animations/interfaces/AnimationTimeline/document-timeline-expected.txt:
* http/wpt/web-animations/interfaces/Document/getAnimations-expected.txt:
* http/wpt/web-animations/interfaces/KeyframeEffect/composite-expected.txt:
* http/wpt/web-animations/interfaces/KeyframeEffect/iterationComposite-expected.txt:
* http/wpt/web-animations/interfaces/KeyframeEffect/setTarget-expected.txt:
* http/wpt/web-animations/timing-model/animation-effects/active-time-expected.txt:
* http/wpt/web-animations/timing-model/animation-effects/current-iteration-expected.txt:
* http/wpt/web-animations/timing-model/animation-effects/local-time-expected.txt:
* http/wpt/web-animations/timing-model/animation-effects/phases-and-states-expected.txt:
* http/wpt/web-animations/timing-model/animation-effects/simple-iteration-progress-expected.txt:
* http/wpt/web-animations/timing-model/animations/canceling-an-animation-expected.txt:
* http/wpt/web-animations/timing-model/animations/finishing-an-animation-expected.txt:
* http/wpt/web-animations/timing-model/animations/pausing-an-animation-expected.txt:
* http/wpt/web-animations/timing-model/animations/playing-an-animation-expected.txt:
* http/wpt/web-animations/timing-model/animations/reversing-an-animation-expected.txt:
* http/wpt/web-animations/timing-model/animations/set-the-animation-start-time-expected.txt:
* http/wpt/web-animations/timing-model/animations/set-the-target-effect-of-an-animation-expected.txt:
* http/wpt/web-animations/timing-model/animations/set-the-timeline-of-an-animation-expected.txt:
* http/wpt/web-animations/timing-model/animations/updating-the-finished-state-expected.txt:
* http/wpt/web-animations/timing-model/time-transformations/transformed-progress-expected.txt:
* imported/blink/virtual/threaded/animations/compositor-rotate-zero-degrees-expected.html: Removed.
* imported/blink/virtual/threaded/animations/compositor-rotate-zero-degrees.html: Removed.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226289
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Sun, 24 Dec 2017 03:59:00 +0000 (03:59 +0000)]
Unreviewed GTK layout test gardening
* platform/gtk/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226288
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
commit-queue@webkit.org [Sat, 23 Dec 2017 16:05:41 +0000 (16:05 +0000)]
Add comments and improve code styles for RenderMathMLUnderOver::stretchHorizontalOperatorsAndLayoutChildren() and related functions
https://bugs.webkit.org/show_bug.cgi?id=180923
Patch by Minsheng Liu <lambda@liu.ms> on 2017-12-23
Reviewed by Frédéric Wang.
Source/WebCore:
The patch improves the code for RenderMathMLUnderOver::stretchHorizontalOperatorsAndLayoutChildren()
and related function, incorporating the following suggestions from bug 179682:
- Remove several lines of trailing spaces.
- Change several pointers to references.
- Rewrite horizontalStretchyOperator() (formerly toHorizontalStretchyOperator())
to make it more conforming to WebKit's coding style.
- Make unembellishedOperator() a const method.
- Add comments for stretchHorizontalOperatorsAndLayoutChildren().
- Eliminate an unnecessary call to fixLayoutAfterStretch() in stretchHorizontalOperatorsAndLayoutChildren().
Add one more case for the test "mathml/opentype/munderover-stretch-width.html"
to handle the corner case where all components of <munderover>/<munder>/<mover> are stretchy.
Since there is no behavior change, no new test is required.
* rendering/mathml/RenderMathMLBlock.h:
(WebCore::RenderMathMLBlock::unembellishedOperator const):
(WebCore::RenderMathMLBlock::unembellishedOperator): Deleted.
* rendering/mathml/RenderMathMLFraction.cpp:
(WebCore::RenderMathMLFraction::unembellishedOperator const):
(WebCore::RenderMathMLFraction::unembellishedOperator): Deleted.
* rendering/mathml/RenderMathMLFraction.h:
* rendering/mathml/RenderMathMLOperator.cpp:
(WebCore::RenderMathMLOperator::resetStretchSize):
* rendering/mathml/RenderMathMLOperator.h:
* rendering/mathml/RenderMathMLScripts.cpp:
(WebCore::RenderMathMLScripts::unembellishedOperator const):
(WebCore::RenderMathMLScripts::unembellishedOperator): Deleted.
* rendering/mathml/RenderMathMLScripts.h:
* rendering/mathml/RenderMathMLUnderOver.cpp:
(WebCore::horizontalStretchyOperator):
(WebCore::fixLayoutAfterStretch):
(WebCore::RenderMathMLUnderOver::stretchHorizontalOperatorsAndLayoutChildren):
(WebCore::RenderMathMLUnderOver::layoutBlock):
(WebCore::toHorizontalStretchyOperator): Deleted.
LayoutTests:
Add one more case for the test "mathml/opentype/munderover-stretch-width.html"
to handle the corner case where all components of <munderover>/<munder>/<mover> are stretchy.
Since there is no behavior change, no new test is required.
* mathml/opentype/munderover-stretch-width-expected.txt:
* mathml/opentype/munderover-stretch-width.html:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226287
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
jeffm@apple.com [Sat, 23 Dec 2017 00:00:42 +0000 (00:00 +0000)]
Allow WebsitePolicies API object to be bridged to _WKWebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=181135
Reviewed by Dan Bernstein.
_WKWebsitePolicies already wraps WebsitePolicies, we just never hooked this up in newObject().
* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226286
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
wenson_hsieh@apple.com [Fri, 22 Dec 2017 23:50:11 +0000 (23:50 +0000)]
Unreviewed, continue to fix build failures due to AppKit API deprecation
Wraps more code in -Wdeprecated-declarations.
* Carbon/HIWebView.mm:
(overrideCGContext):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226285
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
wenson_hsieh@apple.com [Fri, 22 Dec 2017 23:34:54 +0000 (23:34 +0000)]
Unreviewed, fix build failures due to using deprecated AppKit symbols when building 32-bit
Wrap some more code in -Wdeprecated-declarations to try and fix the 32-bit build using the newest SDK.
* Carbon/CarbonWindowAdapter.mm:
(-[CarbonWindowAdapter setViewsNeedDisplay:]):
* Plugins/WebNetscapePluginView.mm:
(-[WebNetscapePluginView saveAndSetNewPortStateForUpdate:]):
(-[WebNetscapePluginView sendDrawRectEvent:]):
(-[WebNetscapePluginView drawRect:]):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226284
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
ticaiolima@gmail.com [Fri, 22 Dec 2017 23:33:15 +0000 (23:33 +0000)]
[JSC] IntlCollator and IntlNumberFormat has static fields with same name
https://bugs.webkit.org/show_bug.cgi?id=181128
Reviewed by Yusuke Suzuki.
Minor fixes into IntlNumberFormat::initializeNumberFormat and
IntlCollator::initializeCollator that makes JSC unified sources
compile. These files were generating compilation error when placed at
the same UnifiedSource.cpp, because they had static variables with same name.
* runtime/IntlCollator.cpp:
(JSC::IntlCollator::initializeCollator):
* runtime/IntlNumberFormat.cpp:
(JSC::IntlNumberFormat::initializeNumberFormat):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226283
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Fri, 22 Dec 2017 23:29:18 +0000 (23:29 +0000)]
Unreviewed GTK layout test gardening
* TestExpectations:
* platform/gtk/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226282
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
wenson_hsieh@apple.com [Fri, 22 Dec 2017 23:11:20 +0000 (23:11 +0000)]
Unreviewed, try to fix the Sierra build again after r226277.
The macOS 10.12 SDK does not know about NSControlStateValue. Apply the same tweak in r226279, but to MiniBrowser
this time.
* MiniBrowser/AppKitCompatibilityDeclarations.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226281
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
wenson_hsieh@apple.com [Fri, 22 Dec 2017 23:05:37 +0000 (23:05 +0000)]
Unreviewed, try to fix the build on recent SDKs after r226274.
Unused variables captured in a lambda now cause warnings the latest SDKs. It seems that after r226274, the block
in `SWContextManager::terminateWorker` no longer accesses `this->m_workerMap`, so `this` is now unused.
* workers/service/context/SWContextManager.cpp:
(WebCore::SWContextManager::terminateWorker):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226280
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
wenson_hsieh@apple.com [Fri, 22 Dec 2017 22:53:07 +0000 (22:53 +0000)]
Unreviewed, try to fix the Sierra build after r226277.
The macOS 10.12 SDK does not know about NSControlStateValue and some types of NSLevelIndicatorStyles, so these
need to be declared in a separate section in AppKitCompatibilityDeclarations.h (rather than in the < macOS 10.12
SDK #ifdef).
* wtf/mac/AppKitCompatibilityDeclarations.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226279
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Fri, 22 Dec 2017 22:34:18 +0000 (22:34 +0000)]
Unreviewed, rolling out r225899
https://bugs.webkit.org/show_bug.cgi?id=180430
* media/content/encrypted/VideoClearKeyCenc.mp4: Removed.
* media/content/encrypted/segments/VideoClearKeyCenc-seg-0.mp4: Removed.
* media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-expected.txt: Removed.
* media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-mse-expected.txt: Removed.
* media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-mse.html: Removed.
* media/encrypted-media/clearKey/clearKey-encrypted-cenc-event.html: Removed.
* media/encrypted-media/medias-enc.js: Removed.
* media/media-source/media-source-loader-simple.js: Removed.
* platform/gtk/TestExpectations:
* platform/mac-elcapitan/TestExpectations:
* platform/mac/TestExpectations:
* platform/wpe/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226278
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
wenson_hsieh@apple.com [Fri, 22 Dec 2017 22:23:27 +0000 (22:23 +0000)]
Fix build failures due to using deprecated AppKit symbols
https://bugs.webkit.org/show_bug.cgi?id=181110
<rdar://problem/
36162865>
Reviewed by Dan Bernstein and Tim Horton.
Source/WebCore:
Fixes the build for recent SDKs (post-AppKit-deprecation) via a combination of adopting modern AppKit versions
of deprecated interfaces, or folding deprecated symbols behind helper functions (for deprecated pasteboard
types). Introduces LegacyNSPasteboardTypes.h, which contains functions to wrap around deprecated NSPasteboard
types. This allows us to replace all deprecated NS*PboardTypes with calls to the helper functions, and limit
-Wdeprecated-declarations of legacy pasteboard types to this new header.
* WebCore.xcodeproj/project.pbxproj:
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(CreateCGColorIfDifferent):
* editing/mac/EditorMac.mm:
(WebCore::Editor::takeFindStringFromSelection):
(WebCore::Editor::dataSelectionForPasteboard):
* platform/cocoa/PasteboardCocoa.mm:
(WebCore::bitmapPNGFileType):
(WebCore::cocoaTypeToImageType):
(WebCore::convertTIFFToPNG):
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(PlatformCALayer::drawLayerContents):
* platform/graphics/cocoa/GraphicsContextCocoa.mm:
(WebCore::GraphicsContext::drawLineForDocumentMarker):
* platform/ios/wak/WAKAppKitStubs.h:
* platform/mac/DragDataMac.mm:
(WebCore::rtfPasteboardType):
(WebCore::rtfdPasteboardType):
(WebCore::stringPasteboardType):
(WebCore::urlPasteboardType):
(WebCore::htmlPasteboardType):
(WebCore::colorPasteboardType):
(WebCore::pdfPasteboardType):
(WebCore::tiffPasteboardType):
(WebCore::DragData::asFilenames const):
(WebCore::DragData::containsPlainText const):
(WebCore::DragData::containsCompatibleContent const):
(WebCore::DragData::containsPromise const):
(WebCore::DragData::asURL const):
* platform/mac/DragImageMac.mm:
(WebCore::createDragImageForLink):
* platform/mac/LegacyNSPasteboardTypes.h: Added.
(WebCore::legacyStringPasteboardType):
(WebCore::legacyFilenamesPasteboardType):
(WebCore::legacyTIFFPasteboardType):
(WebCore::legacyRTFPasteboardType):
(WebCore::legacyFontPasteboardType):
(WebCore::legacyColorPasteboardType):
(WebCore::legacyRTFDPasteboardType):
(WebCore::legacyHTMLPasteboardType):
(WebCore::legacyURLPasteboardType):
(WebCore::legacyPDFPasteboardType):
(WebCore::legacyFilesPromisePasteboardType):
* platform/mac/LocalCurrentGraphicsContext.mm:
(WebCore::LocalCurrentGraphicsContext::LocalCurrentGraphicsContext):
* platform/mac/PasteboardMac.mm:
(WebCore::writableTypesForURL):
(WebCore::writableTypesForImage):
(WebCore::Pasteboard::supportedFileUploadPasteboardTypes):
(WebCore::Pasteboard::write):
(WebCore::Pasteboard::writePlainText):
(WebCore::writeURLForTypes):
(WebCore::writeFileWrapperAsRTFDAttachment):
(WebCore::Pasteboard::read):
(WebCore::absoluteURLsFromPasteboardFilenames):
(WebCore::Pasteboard::readPlatformValueAsString):
(WebCore::Pasteboard::addHTMLClipboardTypesForCocoaType):
(WebCore::Pasteboard::writeString):
* platform/mac/PasteboardWriter.mm:
(WebCore::createPasteboardWriter):
* platform/mac/PlatformPasteboardMac.mm:
(WebCore::PlatformPasteboard::numberOfFiles const):
(WebCore::pasteboardMayContainFilePaths):
(WebCore::PlatformPasteboard::stringForType const):
(WebCore::safeTypeForDOMToReadAndWriteForPlatformType):
(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):
(WebCore::PlatformPasteboard::platformPasteboardTypeForSafeTypeForDOMToReadAndWrite):
(WebCore::PlatformPasteboard::color):
(WebCore::PlatformPasteboard::setStringForType):
* platform/mac/ThemeMac.mm:
(WebCore::updateStates):
(WebCore::createToggleButtonCell):
(WebCore::drawCellFocusRingWithFrameAtTime):
(WebCore::leakButtonCell):
(WebCore::setUpButtonCell):
(WebCore::paintButton):
(WebCore::ThemeMac::inflateControlPaintRect const):
* platform/mac/WebWindowAnimation.mm:
(setScaledFrameForWindow):
* platform/mac/WidgetMac.mm:
(WebCore::Widget::paint):
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::platformActiveSelectionBackgroundColor const):
(WebCore::RenderThemeMac::platformInactiveSelectionBackgroundColor const):
(WebCore::RenderThemeMac::platformActiveListBoxSelectionBackgroundColor const):
(WebCore::convertNSColorToColor):
(WebCore::menuBackgroundColor):
(WebCore::RenderThemeMac::updateCheckedState):
(WebCore::RenderThemeMac::levelIndicatorStyleFor const):
(WebCore::RenderThemeMac::levelIndicatorFor const):
(WebCore::RenderThemeMac::servicesRolloverButtonCell const):
Source/WebKit:
See WebCore ChangeLog for more details.
* Shared/mac/PasteboardTypes.mm:
(WebKit::PasteboardTypes::forEditing):
(WebKit::PasteboardTypes::forURL):
(WebKit::PasteboardTypes::forImages):
(WebKit::PasteboardTypes::forImagesWithArchive):
(WebKit::PasteboardTypes::forSelection):
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::WebViewImpl):
(WebKit::WebViewImpl::setIntrinsicContentSize):
(WebKit::WebViewImpl::writeSelectionToPasteboard):
(WebKit::WebViewImpl::validRequestorForSendAndReturnTypes):
(WebKit::WebViewImpl::validateUserInterfaceItem):
(WebKit::WebViewImpl::performDragOperation):
(WebKit::WebViewImpl::setFileAndURLTypes):
(WebKit::WebViewImpl::setPromisedDataForImage):
(WebKit::WebViewImpl::setPromisedDataForAttachment):
(WebKit::WebViewImpl::provideDataForPasteboard):
* UIProcess/mac/WKPrintingView.mm:
(-[WKPrintingView _drawPDFDocument:page:atPoint:]):
(-[WKPrintingView _drawPreview:]):
* UIProcess/mac/WKSharingServicePickerDelegate.mm:
(-[WKSharingServicePickerDelegate sharingService:didShareItems:]):
* UIProcess/mac/WebContextMenuProxyMac.mm:
(-[WKMenuTarget forwardContextMenuAction:]):
(WebKit::WebContextMenuProxyMac::createContextMenuItem):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::searchTheWeb):
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::writeItemsToPasteboard):
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::convertImageToBitmap):
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::drawPDFPage):
Source/WebKitLegacy/mac:
See WebCore ChangeLog for more details. Additionally makes a few minor adjustments to pass our style checker.
* Misc/WebKitNSStringExtras.mm:
(-[NSString _web_drawAtPoint:font:textColor:]):
* Misc/WebNSPasteboardExtras.h:
* Misc/WebNSPasteboardExtras.mm:
(+[NSPasteboard _web_writableTypesForURL]):
(_createWritableTypesForImageWithoutArchive):
(_createWritableTypesForImageWithArchive):
(+[NSPasteboard _web_dragTypesForURL]):
(-[NSPasteboard _web_bestURL]):
(-[NSPasteboard _web_writeURL:andTitle:types:]):
(+[NSPasteboard _web_setFindPasteboardString:withOwner:]):
(-[NSPasteboard _web_writeFileWrapperAsRTFDAttachment:]):
(-[NSPasteboard _web_writeImage:element:URL:title:archive:types:source:]):
(-[NSPasteboard _web_declareAndWriteDragImageForElement:URL:title:archive:source:]):
* Panels/WebAuthenticationPanel.m:
(-[WebAuthenticationPanel runAsModalDialogWithChallenge:]):
(-[WebAuthenticationPanel sheetDidEnd:returnCode:contextInfo:]):
* Plugins/Hosted/WebHostedNetscapePluginView.mm:
(-[WebHostedNetscapePluginView drawRect:]):
* WebInspector/WebNodeHighlightView.mm:
(-[WebNodeHighlightView drawRect:]):
* WebView/WebFrame.mm:
(-[WebFrame _updateBackgroundAndUpdatesWhileOffscreen]):
(-[WebFrame _drawRect:contentsOnly:]):
* WebView/WebHTMLView.mm:
(kit):
(-[WebHTMLView _documentFragmentFromPasteboard:inContext:allowPlainText:]):
(-[WebHTMLView _plainTextFromPasteboard:]):
(-[WebHTMLView _writeSelectionWithPasteboardTypes:toPasteboard:cachedAttributedString:]):
(+[WebHTMLView _insertablePasteboardTypes]):
(+[WebHTMLView _selectionPasteboardTypes]):
(-[WebHTMLView pasteboard:provideDataForType:]):
(-[WebHTMLView _writeSelectionToPasteboard:]):
(-[WebHTMLView _documentFragmentFromPasteboard:forType:inContext:subresources:]):
(-[WebHTMLView validRequestorForSendType:returnType:]):
(-[WebHTMLView validateUserInterfaceItemWithoutDelegate:]):
(createMenuItem):
(-[WebHTMLView _fontAttributesFromFontPasteboard]):
(-[WebHTMLView _colorAsString:]):
(-[WebHTMLView copyFont:]):
* WebView/WebPDFView.mm:
(-[WebPDFView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]):
(-[WebPDFView _recursiveDisplayAllDirtyWithLockFocus:visRect:]):
(-[WebPDFView _recursive:displayRectIgnoringOpacity:inContext:topView:]):
(-[WebPDFView pasteboardTypesForSelection]):
(-[WebPDFView writeSelectionWithPasteboardTypes:toPasteboard:]):
* WebView/WebView.h:
* WebView/WebView.mm:
(-[WebView performDragOperation:]):
(-[WebView validateUserInterfaceItemWithoutDelegate:]):
(-[WebView _searchWithGoogleFromMenu:]):
Source/WTF:
When building with older macOS SDKs where some AppKit constants don't exist, define the modern constants to be
equal to their deprecated counterparts. This allows us to just have the modern types in WebKit sources while
avoiding breakage on old SDKs.
This, along with many other symbols in the compability header, can be removed once WebKit stops supporting macOS
10.11.
* wtf/mac/AppKitCompatibilityDeclarations.h:
Tools:
Transition to non-deprecated AppKit constants in MiniBrowser.
* MiniBrowser/AppKitCompatibilityDeclarations.h: Added.
* MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
* MiniBrowser/mac/SettingsController.m:
(-[SettingsController validateMenuItem:]):
* MiniBrowser/mac/WK1BrowserWindowController.m:
(-[WK1BrowserWindowController validateMenuItem:]):
* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController validateMenuItem:]):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226277
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mitz@apple.com [Fri, 22 Dec 2017 21:41:02 +0000 (21:41 +0000)]
Crash beneath ScriptedAnimationController::serviceScriptedAnimations after a requestAnimationFrame callback removes the requesting iframe
https://bugs.webkit.org/show_bug.cgi?id=181132
<rdar://problem/
35143540>
Reviewed by Simon Fraser.
Source/WebCore:
Test: fast/animation/request-animation-frame-remove-iframe-in-callback.html
* dom/ScriptedAnimationController.cpp:
(WebCore::ScriptedAnimationController::serviceScriptedAnimations): Hold a reference to the
document and pass that along to InspectorInstrumentation::willFireAnimationFrame rather
than dereferencing the m_document member, which may have gotten cleared by an earlier
callback.
LayoutTests:
* fast/animation/request-animation-frame-remove-iframe-in-callback-expected.txt: Added.
* fast/animation/request-animation-frame-remove-iframe-in-callback.html: Added.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226276
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
cdumez@apple.com [Fri, 22 Dec 2017 21:23:39 +0000 (21:23 +0000)]
importScripts() inside a service worker should ensure that the response has a JavaScript MIME type
https://bugs.webkit.org/show_bug.cgi?id=181103
Reviewed by Youenn Fablet.
LayoutTests/imported/w3c:
Rebaseline WPT test now that it fails later. The test expects that the registration promise be
rejected with a SecurityError. However, we reject it with a TypeError instead, which is the
result of the Network error from importScripts().
The spec does say that importScripts() should report a network error when the MIME type is
invalid:
- https://w3c.github.io/ServiceWorker/#importscripts (step 6)
Later on, the spec says that if "an uncaught runtime script error occurs" when running the script,
we should resolve the registration with a TypeError:
- https://w3c.github.io/ServiceWorker/#update (step 9.6)
Therefore, our behavior seems correct and I cannot find in the spec a reason why the test would
expect a SecurityError here.
* web-platform-tests/service-workers/service-worker/registration-mime-types.https-expected.txt:
Source/WebCore:
importScripts() inside a service worker should ensure that the response has a JavaScript
MIME type, as per:
- https://w3c.github.io/ServiceWorker/#importscripts (step 6)
No new tests, rebaselined existing test.
* workers/WorkerGlobalScope.cpp:
(WebCore::WorkerGlobalScope::importScripts):
* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::didReceiveResponse):
* workers/WorkerScriptLoader.h:
(WebCore::WorkerScriptLoader::responseMIMEType const):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226275
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
cdumez@apple.com [Fri, 22 Dec 2017 21:17:46 +0000 (21:17 +0000)]
[Service Workers] Implement "Soft Update" algorithm
https://bugs.webkit.org/show_bug.cgi?id=180702
<rdar://problem/
36163461>
Reviewed by Youenn Fablet.
LayoutTests/imported/w3c:
Rebaseline Soft Update WPT test now that it is passing.
* web-platform-tests/service-workers/service-worker/update-after-navigation-fetch-event.https-expected.txt:
Source/WebCore:
Implement "Soft Update" algorithm:
- https://w3c.github.io/ServiceWorker/#soft-update-algorithm
Call softUpdate at the end of "Handle Fetch", as per:
- https://w3c.github.io/ServiceWorker/#on-fetch-request-algorithm
No new tests, rebaselined existing test.
* dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::postTaskTo):
* dom/ScriptExecutionContext.h:
* workers/service/SWClientConnection.cpp:
(WebCore::SWClientConnection::failedFetchingScript):
(WebCore::SWClientConnection::registrationJobResolvedInServer):
(WebCore::SWClientConnection::startScriptFetchForServer):
* workers/service/SWClientConnection.h:
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::updateRegistration):
(WebCore::ServiceWorkerContainer::jobFailedWithException):
(WebCore::ServiceWorkerContainer::jobResolvedWithRegistration):
(WebCore::ServiceWorkerContainer::jobResolvedWithUnregistrationResult):
(WebCore::ServiceWorkerContainer::startScriptFetchForJob):
(WebCore::ServiceWorkerContainer::jobFailedLoadingScript):
* workers/service/ServiceWorkerContainer.h:
* workers/service/ServiceWorkerJob.cpp:
(WebCore::ServiceWorkerJob::ServiceWorkerJob):
* workers/service/ServiceWorkerJob.h:
(WebCore::ServiceWorkerJob::create):
(WebCore::ServiceWorkerJob::data const):
(WebCore::ServiceWorkerJob::promise):
* workers/service/ServiceWorkerRegistration.cpp:
(WebCore::ServiceWorkerRegistration::softUpdate):
* workers/service/ServiceWorkerRegistration.h:
* workers/service/context/SWContextManager.cpp:
(WebCore::SWContextManager::terminateWorker):
(WebCore::SWContextManager::postTaskToServiceWorker):
* workers/service/context/SWContextManager.h:
* workers/service/context/ServiceWorkerFetch.cpp:
(WebCore::ServiceWorkerFetch::dispatchFetchEvent):
* workers/service/context/ServiceWorkerFetch.h:
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::startScriptFetch):
* workers/service/server/SWServer.h:
Source/WebKit:
* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startScriptFetchInClient):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* WebProcess/Storage/WebSWClientConnection.messages.in:
LayoutTests:
Unskip soft update WPT test that no longer times out.
* TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226274
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
zalan@apple.com [Fri, 22 Dec 2017 20:43:35 +0000 (20:43 +0000)]
[RenderTreeBuilder] Move RenderMenuList::addChild() tree mutation to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=181130
<rdar://problem/
36196266>
Reviewed by Antti Koivisto.
This patch also creates a dedicated class for form control related tree mutations.
Covered by existing tests.
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* rendering/RenderButton.cpp:
(WebCore::RenderButton::setInnerRenderer): Update the style here instead.
* rendering/RenderMenuList.cpp:
(WebCore::RenderMenuList::setInnerRenderer):
(RenderMenuList::addChild):
(RenderMenuList::showPopup): We should't really call showPopup on a detached renderer.
(WebCore::RenderMenuList::createInnerBlock): Deleted.
* rendering/RenderMenuList.h:
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::RenderTreeBuilder):
(WebCore::RenderTreeBuilder::insertChild):
(WebCore::createInnerRendererForButtonIfNeeded): Deleted.
* rendering/updating/RenderTreeBuilder.h:
(WebCore::RenderTreeBuilder::formControlsBuilder):
* rendering/updating/RenderTreeBuilderFormControls.cpp: Copied from Source/WebCore/rendering/updating/RenderTreeBuilder.h.
(WebCore::RenderTreeBuilder::FormControls::FormControls):
(WebCore::RenderTreeBuilder::FormControls::createInnerRendererIfNeeded):
* rendering/updating/RenderTreeBuilderFormControls.h: Copied from Source/WebCore/rendering/updating/RenderTreeBuilder.h.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226273
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
rniwa@webkit.org [Fri, 22 Dec 2017 20:41:48 +0000 (20:41 +0000)]
REGRESSION(r223678): Cannot copy & paste a web page content into Yahoo! Mail
https://bugs.webkit.org/show_bug.cgi?id=181114
Reviewed by Geoffrey Garen.
Source/WebCore:
Turns out converting all URLs to blob isn't Web compatible. Don't do this conversion on HTTP, HTTP, and data URLs
since websites tend to have access to contents accessible via those protocols, and blob URL conversion would break
Yahoo! Mail, Gmail, and other major online email services.
We've also considered using data URLs instead of blob URLs for conversion but pasting a large image converted into
a data URL seems to break WordPress (it stores an empty post instead of the one with the image) so it's not likely
to be Web compatible either.
This patch therefore disables the blob conversion in sanitizeMarkupWithArchive for HTTP, HTTPS, data URLs for
cross-origin content, restoring the behavior prior to r223678. For contents converted from attributed strings,
we continue to convert to blob URL since there is no other way for websites to read local files or images references
by an in-memory web archive.
Tests: http/tests/security/clipboard/copy-paste-html-cross-in-origin-iframe-across-origin.html
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::shouldConvertToBlob): Added.
(WebCore::sanitizeMarkupWithArchive):
LayoutTests:
Updated http/tests/security/clipboard/copy-paste-html-cross-origin-iframe-across-origin.html to test the new behavior
whereby which HTTP/HTTPs and data URLs are not converted to blob URLs.
* http/tests/security/clipboard/copy-paste-html-across-origin-sanitizes-html.html:
* http/tests/security/clipboard/copy-paste-html-cross-origin-iframe-across-origin-expected.txt: Renamed.
* http/tests/security/clipboard/copy-paste-html-cross-origin-iframe-across-origin.html: Added more test cases for data URLs.
* http/tests/security/clipboard/resources/content-to-copy.html: Notify the parent that the page had finished loading.
* http/tests/security/clipboard/resources/data-url-content-to-copy.html: Added.
* http/tests/security/clipboard/resources/subdirectory/paste-html.html: Since we can no longer access contents
in the pasted frames but scripts DO run in the pasted cross-origin iframes, rely on those frames to postMessage
this frame when the image had finished loading.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226272
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Fri, 22 Dec 2017 20:40:23 +0000 (20:40 +0000)]
Credentials warning spam when running CodeGenerator.pm
https://bugs.webkit.org/show_bug.cgi?id=181127
Unreviewed, update WebCore_IDL_INCLUDES.
* CMakeLists.txt:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226271
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Fri, 22 Dec 2017 20:30:24 +0000 (20:30 +0000)]
generate_offset_extractor.rb should not print to stderr by default
https://bugs.webkit.org/show_bug.cgi?id=181133
Reviewed by Mark Lam.
Remove unneeded print output.
* offlineasm/generate_offset_extractor.rb:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226270
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
utatane.tea@gmail.com [Fri, 22 Dec 2017 19:51:03 +0000 (19:51 +0000)]
[DFG] Cleaning up and unifying 32bit code more
https://bugs.webkit.org/show_bug.cgi?id=181124
Reviewed by Mark Lam.
This patch unifies DFG 32bit code into 64bit code more. In this patch, we move RegExp DFG nodes
from 32bit / 64bit code to the common code. We change some RegExp operations to returning JSCell*
instead of EncodedJSValue. This simplifies DFG implementation.
And we also move HasGenericProperty since we now have JSValueRegsFlushedCallResult. ToPrimive,
LogShadowChickenPrologue, and LogShadowChickenTail are almost the same in 32bit and 64bit.
Thus, it is unified easily.
And we also move some GPRFlushedCallResult from the original places to the places just after
`flushRegisters()` not to spill unnecessary registers.
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileRegExpExec):
(JSC::DFG::SpeculativeJIT::compileRegExpTest):
(JSC::DFG::SpeculativeJIT::compileStringReplace):
(JSC::DFG::SpeculativeJIT::compileHasGenericProperty):
(JSC::DFG::SpeculativeJIT::compileToPrimitive):
(JSC::DFG::SpeculativeJIT::compileLogShadowChickenPrologue):
(JSC::DFG::SpeculativeJIT::compileLogShadowChickenTail):
* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::speculateDoubleRepAnyInt):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileStringReplace):
* jit/JITOperations.cpp:
* jit/JITOperations.h:
* runtime/StringPrototype.cpp:
(JSC::jsSpliceSubstrings):
(JSC::jsSpliceSubstringsWithSeparators):
(JSC::removeUsingRegExpSearch):
(JSC::replaceUsingRegExpSearch):
(JSC::operationStringProtoFuncReplaceRegExpEmptyStr):
(JSC::operationStringProtoFuncReplaceRegExpString):
(JSC::replaceUsingStringSearch):
(JSC::replace):
(JSC::stringProtoFuncReplaceUsingRegExp):
(JSC::stringProtoFuncReplaceUsingStringSearch):
(JSC::operationStringProtoFuncReplaceGeneric):
* runtime/StringPrototype.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226269
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Fri, 22 Dec 2017 18:12:53 +0000 (18:12 +0000)]
[GTK] Duplicated symbols in libjavascriptcoregtk and libwebkit2gtk can cause crashes in production builds
https://bugs.webkit.org/show_bug.cgi?id=179914
<rdar://problem/
36196039>
Unreviewed.
Source/JavaScriptCore:
* PlatformGTK.cmake:
Source/WebKit:
I messed up a last-minute change, and inverted the conditional that determines whether to
use the version script. I did test this change to ensure that it worked properly by checking
that the library size was correct, but only in non-developer mode. My test was thwarted by
-fvisibility=hidden. It looks like so few internal symbols are exported that missing the
version script had little impact on the size of the resulting libraries. That's good, I
suppose.
* PlatformGTK.cmake:
* PlatformWPE.cmake:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226268
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Fri, 22 Dec 2017 18:06:34 +0000 (18:06 +0000)]
[GTK] Duplicated symbols in libjavascriptcoregtk and libwebkit2gtk can cause crashes in production builds
https://bugs.webkit.org/show_bug.cgi?id=179914
Reviewed by Carlos Garcia Campos.
Let's build JSC as a static library, and link that static lib to *both* our shared
libjavascriptcoregtk and libwebkit2gtk. Then we can fix this and also filter out all the
private symbols that we're currently exposing in libjavascriptcoregtk, which wouldn't be
possible otherwise. The cost of this is disk space. I think this trade-off is reasonable,
because it's the best way I could think of that accomplishes all our goals: (a) install two
shared libs, (b) export only public API symbols, (c) does not require any linker hacks.
Additionally, build with -fvisibility=hidden so that the compiler knows that many symbols
will be stripped out. This should improve code generation. It's actually how WPE was
previously compiled, but I removed this when I added the version script for WPE, because I
thought it was redundant with the version script. It is not, and we should use both,
according to Ulrich Drepper's "How to Write Shared Libraries." We will use
-fvisibility=hidden on all ports; this should be fine, as long as export macros are used
where needed. This is actually a totally separate change, but it makes sense to do it now if
we consider this bug a catch-all "fix how we link WebKit" issue.
* CMakeLists.txt: Rejigger the default library types, and remove the SHARED_CORE option,
which is not likely to work properly in ports that are not expecting it. These changes are
only mildly-related and certainly not required, but it makes sense to clean them up now.
* Source/cmake/OptionsGTK.cmake: Don't set the version script here.
* Source/cmake/OptionsJSCOnly.cmake: Adjust to changes in default library types.
* Source/cmake/OptionsMac.cmake: Adjust to changes in default library types. Override the
library type variables only when required.
* Source/cmake/OptionsWPE.cmake: Overriding the library type variables is no longer
required. Also, don't set the version script here.
* Source/cmake/OptionsWin.cmake: Adjust to changes in default library types. Override the
library type variables only when required.
* Source/cmake/WebKitCompilerFlags.cmake: Build with -fvisibility=hidden,
-fvisibility-inlines-hidden, and -Wno-attributes.
* Source/cmake/wpesymbols.filter: Removed.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226267
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Fri, 22 Dec 2017 17:18:43 +0000 (17:18 +0000)]
[GTK] Duplicated symbols in libjavascriptcoregtk and libwebkit2gtk can cause crashes in production builds
https://bugs.webkit.org/show_bug.cgi?id=179914
Reviewed by Carlos Garcia Campos.
.:
* CMakeLists.txt:
* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsJSCOnly.cmake:
* Source/cmake/OptionsMac.cmake:
* Source/cmake/OptionsWPE.cmake:
* Source/cmake/OptionsWin.cmake:
* Source/cmake/WebKitCompilerFlags.cmake:
* Source/cmake/wpesymbols.filter: Removed.
Source/JavaScriptCore:
Add a new JavaScriptCoreGTK build target, to build JSC as a shared library. Link the
original JavaScriptCore build target, which is now a static library, to it. Use
--whole-archive to prevent all the JavaScriptCore symbols from being dropped, since none are
used directly by JavaScriptCoreGTK.
The installed libjavascriptcoregtk-4.0 now corresponds to the JavaScriptCoreGTK target,
instead of the JavaScriptCore target. There is almost no difference on the installed system,
except that we now use a version script when linking, to hide private symbols, since they're
no longer needed by libwebkit2gtk-4.0.so.
Also, move the symbols map here.
* PlatformGTK.cmake:
* javascriptcoregtk-symbols.map: Added.
Source/WebCore:
* CMakeLists.txt: Test for WebCore_LIBRARY_TYPE rather than SHARED_CORE.
Source/WebKit:
Mark a few InjectedBundle symbols with default visibility, so they don't get hidden by
-fvisibility=hidden. Also, remove Windows conditionals, since Windows is not supported by
any GLib ports.
Also, move the symbols map to here, and share it between WPE and GTK.
* CMakeLists.txt:
* PlatformGTK.cmake:
* PlatformWPE.cmake:
* WebProcess/InjectedBundle/API/glib/WebKitExtensionManager.h:
* WebProcess/InjectedBundle/API/glib/WebKitInjectedBundleMain.cpp:
* webkitglib-symbols.map: Renamed from Source/cmake/gtksymbols.filter.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226266
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
zalan@apple.com [Fri, 22 Dec 2017 16:28:50 +0000 (16:28 +0000)]
[RenderTreeBuilder] Move RenderButton::addChild() tree mutation to RenderTreeBuilder
https://bugs.webkit.org/show_bug.cgi?id=181109
<rdar://problem/
36188262>
Reviewed by Antti Koivisto.
Covered by existing tests.
* rendering/RenderButton.cpp:
(WebCore::RenderButton::setInnerRenderer):
(WebCore::RenderButton::updateAnonymousChildStyle const):
(WebCore::RenderButton::addChild): Deleted.
* rendering/RenderButton.h:
* rendering/RenderElement.cpp:
(WebCore::RenderElement::propagateStyleToAnonymousChildren):
* rendering/RenderElement.h:
(WebCore::RenderElement::updateAnonymousChildStyle const):
* rendering/updating/RenderTreeBuilder.cpp:
(WebCore::RenderTreeBuilder::insertChild):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226265
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mcatanzaro@igalia.com [Fri, 22 Dec 2017 16:11:15 +0000 (16:11 +0000)]
[WPE][GTK] Deprecate and replace webkit_form_submission_request_get_text_fields
https://bugs.webkit.org/show_bug.cgi?id=176725
Reviewed by Carlos Garcia Campos.
Source/WebKit:
The problem is this function returns results in a GHashTable, but many fields can have the
same name, or no name at all, and those fields are currently just dropped. It's impossible
to fix, since the GHashTable is part of the API, so deprecate it and add a new function that
returns two GPtrArrays instead.
* UIProcess/API/glib/WebKitFormSubmissionRequest.cpp:
(webkitFormSubmissionRequestCreate):
(webkit_form_submission_request_get_text_fields):
(webkit_form_submission_request_list_text_fields):
* UIProcess/API/gtk/WebKitFormSubmissionRequest.h:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* UIProcess/API/wpe/WebKitFormSubmissionRequest.h:
Tools:
Test the new function.
* TestWebKitAPI/Tests/WebKitGLib/TestWebKitWebView.cpp:
(testWebViewSubmitForm):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226264
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
jbedard@apple.com [Fri, 22 Dec 2017 14:43:38 +0000 (14:43 +0000)]
webkitpy: Refactor simulator code (Part 1)
https://bugs.webkit.org/show_bug.cgi?id=180555
<rdar://problem/
36131381>
Reviewed by Alexey Proskuryakov.
The new SimulatedDeviceManager defined in this patch is designed to
act as a singleton. Consumers may request devices with certain
attributes, the the manager will then return a list of devices fulfilling the
request. The manager will pick between:
- Existing and booted simulators
- Existing simulators currently shut down
- Custom constructed simulators
These simulators will then be globally available.
This patch duplicates code in webkitpy/xcode/simulated_device.py,
webkitpy/xcode/simulator.py and webkitpy/port/ios_simulator.py. This duplicated
code will be removed in parts 2 and 3.
* Scripts/webkitpy/common/version_name_map.py:
(VersionNameMap.__init__): Add tvOS and watchOS.
* Scripts/webkitpy/xcode/device_type.py: Added.
(DeviceType): Holds the software and hardware information for a specific device.
Designed to allow for partial matching.
(DeviceType.from_string): Parses a string (such as iPhone 6s) into a DeviceType
object.
(DeviceType._define_software_variant_from_hardware_family): The software_variant
of a device can usually be implied from its hardware_family.
(DeviceType.check_consistency): Verify that the software_variant matches the
hardware_family and that software_version and hardware_variant have their
respective prerequisites.
(DeviceType.__init__):
(DeviceType.__str__): Converts a DeviceType object into a human readable string.
(DeviceType.__eq__): Compares two DeviceType objects treating None as a wildcard.
(DeviceType.__contains__): Allow partial version mapping.
* Scripts/webkitpy/xcode/device_type_unittest.py: Added.
(DeviceTypeTest):
(DeviceTypeTest.test_iphone_initialization):
(DeviceTypeTest.test_ipad_initialization):
(DeviceTypeTest.test_generic_ios_device):
(DeviceTypeTest.test_watch_initialization):
(DeviceTypeTest.test_tv_initialization):
(DeviceTypeTest.test_from_string):
(DeviceTypeTest.test_comparison):
(DeviceTypeTest.test_contained_in):
* Scripts/webkitpy/xcode/new_simulated_device.py: Added.
(DeviceRequest): Adds additional options to be used when requesting a device.
(DeviceRequest.__init__):
(SimulatedDeviceManager):
(SimulatedDeviceManager.Runtime): Representation of a supported simulated runtime.
Designed as an internal representation, not to be used outside this class.
(SimulatedDeviceManager.Runtime.__init__):
(SimulatedDeviceManager._create_runtimes): Extract a list of available runtimes.
(SimulatedDeviceManager._create_device_with_runtime): Return a new or existing device
with the provided runtime matching the provided dictionary.
(SimulatedDeviceManager.populate_available_devices): Use simctl to update the list of devices
available on this machine.
(SimulatedDeviceManager.available_devices): Populate the list of available device if empty
and return that list.
(SimulatedDeviceManager._find_exisiting_device_for_request): Return an existing device matching
the provided request if one exists.
(SimulatedDeviceManager._find_available_name): Given a name base, return a string which
does not match the name of an initialized device.
(SimulatedDeviceManager. get_runtime_for_device_type): Map device type to runtime object.
(SimulatedDeviceManager._disambiguate_device_type): The user may have requested a DeviceType
with only partial definitions. In this case, use existing runtimes and devices to generate
a DeviceType to build.
(SimulatedDeviceManager._get_device_identifier_for_type): Return a simctl device type string
given a DeviceType object.
(SimulatedDeviceManager._create_or_find_device_for_request): Given a DeviceRequest object,
either find an existing device which matches the request or create one matching
(SimulatedDeviceManager._does_fulfill_request): Given a device and list of requests, return
the request which the provided device matches, if there are any.
(SimulatedDeviceManager._wait_until_device_in_state): Wait until a device enters a specific
state.
(SimulatedDeviceManager.initialize_devices): Given a list of requests, return a list
of devices which fulfill the requests. This function will use both existing devices
and create devices. This function will also start the Simulator.app.
(SimulatedDeviceManager.max_supported_simulators): Uses the number of available cores,
maximum number of processes and the available RAM to calculate the number of
simulated devices this machine can support.
(SimulatorManager.swap): Shuts down the specified device and boots a new one which
matches the specified request.
(SimulatorManager.tear_down): Shut down any simulators managed by this class.
(SimulatedDevice):
(SimulatedDevice.DeviceState): Copied from webkitpy/xcode/simulator.py.
(SimulatedDevice.__init__):
(SimulatedDevice.state): Use the device's plist to determine the current state of
the device. Note that this function will cache the result for a second.
(SimulatedDevice.is_booted_or_booting):
(SimulatedDevice._shut_down): Shut down this device and remove it from the list of
initialized devices.
(SimulatedDevice._delete): Delete this device and remove it from the list of
available devices.
(SimulatedDevice._tear_down): Shut down and delete this device, if it is managed by
the SimulatorManager.
(SimulatedDevice.install_app): Copied from webkitpy/xcode/simulated_device.py.
(SimulatedDevice.launch_app): Ditto.
(SimulatedDevice.__eq__): Ditto.
(SimulatedDevice.__ne__): Ditto.
(SimulatedDevice.__repr__): Map state to string and include device type.
* Scripts/webkitpy/xcode/new_simulated_device_unittest.py: Added.
(SimulatedDeviceTest):
(SimulatedDeviceTest.reset_simulated_device_manager):
(SimulatedDeviceTest.tear_down):
(SimulatedDeviceTest.mock_host_for_simctl):
(device_by_criteria):
(test_available_devices):
(test_existing_simulator):
(change_state_to):
(test_swapping_devices):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@226263
268f45cc-cd09-0410-ab3c-
d52691b4dbfc