Timeline



Jan 2, 2018:

9:10 PM Changeset in webkit [226353] by Brent Fulgham
  • 21 edits in trunk

[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.

8:16 PM Changeset in webkit [226352] by Joseph Pecoraro
  • 4 edits in trunk

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.

7:59 PM Changeset in webkit [226351] by sbarati@apple.com
  • 3 edits
    1 add in trunk

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):

7:44 PM Changeset in webkit [226350] by Yusuke Suzuki
  • 2 edits in trunk/Source/WebCore

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:
7:39 PM Changeset in webkit [226349] by Yusuke Suzuki
  • 129 edits in trunk

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):

6:54 PM Changeset in webkit [226348] by Wenson Hsieh
  • 5 edits
    1 add in trunk/Source

[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:
6:52 PM Changeset in webkit [226347] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

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 <Joseph Pecoraro> 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.

6:34 PM Changeset in webkit [226346] by Michael Catanzaro
  • 8 edits in trunk

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:
5:43 PM Changeset in webkit [226345] by mark.lam@apple.com
  • 2 edits in trunk/Source/WTF

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:
4:56 PM Changeset in webkit [226344] by mark.lam@apple.com
  • 5 edits
    1 move in trunk/Source/WTF

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.
4:51 PM Changeset in webkit [226343] by beidson@apple.com
  • 5 edits in trunk/Source/WebCore

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:
4:20 PM Changeset in webkit [226342] by timothy_horton@apple.com
  • 2 edits in trunk/Tools

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:
4:10 PM Changeset in webkit [226341] by jiewen_tan@apple.com
  • 22 edits in trunk

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):

4:06 PM Changeset in webkit [226340] by Wenson Hsieh
  • 5 edits
    1 add in trunk

[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):

3:40 PM WebKitGTK/Gardening/Calendar edited by Michael Catanzaro
(diff)
3:39 PM Changeset in webkit [226339] by Michael Catanzaro
  • 2 edits in trunk/LayoutTests

Unreviewed WPE test gardening.

  • platform/wpe/TestExpectations:
3:38 PM Changeset in webkit [226338] by Caio Lima
  • 17 edits
    1 copy
    23 adds in trunk

[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):

2:51 PM WebKitGTK/Gardening/Calendar edited by Michael Catanzaro
(diff)
2:45 PM Changeset in webkit [226337] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit

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:
2:42 PM Changeset in webkit [226336] by beidson@apple.com
  • 8 edits
    1 add in trunk/Source/WebCore

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):

1:06 PM Changeset in webkit [226335] by timothy_horton@apple.com
  • 8 edits in trunk/Source/WebKit

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.

12:50 PM Changeset in webkit [226334] by achristensen@apple.com
  • 1 edit
    1 delete in trunk/Source/WebKit

Remove SVN file accidentally added in r226160
https://bugs.webkit.org/show_bug.cgi?id=180934

  • UIProcess/WebPageProxy.cpp.orig: Removed.
12:38 PM Changeset in webkit [226333] by commit-queue@webkit.org
  • 6 edits in trunk

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:

12:28 PM Changeset in webkit [226332] by jiewen_tan@apple.com
  • 33 edits
    3 copies
    10 adds
    1 delete in trunk

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:
12:20 PM Changeset in webkit [226331] by timothy_horton@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

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.

12:02 PM Changeset in webkit [226330] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

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):

11:52 AM Changeset in webkit [226329] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKitLegacy/win

[Win] Web Inspector: Wrongly placed inspector highlight in HiDPI
https://bugs.webkit.org/show_bug.cgi?id=181173

Patch by Fujii Hironori <Fujii Hironori> on 2018-01-02
Reviewed by Alex Christensen.

  • WebNodeHighlight.cpp:

(WebNodeHighlight::update): Scale the GraphicsContext.

10:29 AM Changeset in webkit [226328] by Ms2ger@igalia.com
  • 6 edits in trunk/LayoutTests

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:
10:17 AM Changeset in webkit [226327] by Michael Catanzaro
  • 5 edits in trunk/Source/WebKit

[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.
10:17 AM Changeset in webkit [226326] by Michael Catanzaro
  • 3 edits in trunk/Tools

[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):

9:21 AM Changeset in webkit [226325] by achristensen@apple.com
  • 11 edits in trunk

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):

9:18 AM Changeset in webkit [226324] by achristensen@apple.com
  • 4 edits in trunk/Source/WebKit

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):

9:17 AM Changeset in webkit [226323] by achristensen@apple.com
  • 23 edits
    1 add in trunk/Source/WebKit

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):

7:38 AM Changeset in webkit [226322] by gskachkov@gmail.com
  • 8 edits
    1 move
    11 adds in trunk

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:
7:19 AM Changeset in webkit [226321] by Ms2ger@igalia.com
  • 6 edits
    5 adds in trunk/LayoutTests

[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.
12:35 AM WebKitGTK/Gardening/Calendar edited by Ms2ger@igalia.com
(diff)
12:22 AM WebKitGTK/Gardening/Calendar edited by Ms2ger@igalia.com
Update for 2018 (diff)
12:22 AM WebKitGTK/Gardening/Calendar/2017Logs created by Ms2ger@igalia.com
Archive

Jan 1, 2018:

8:27 PM Changeset in webkit [226320] by Michael Catanzaro
  • 10 edits
    10 copies in trunk

Rolled over to ChangeLog-2018-01-01

8:18 PM Changeset in webkit [226319] by Michael Catanzaro
  • 2 edits in trunk/LayoutTests

Unreviewed, add some more GTK crash expectations

  • platform/gtk/TestExpectations:
3:42 PM Changeset in webkit [226318] by jeffm@apple.com
  • 16 edits in trunk

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> 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:
12:32 PM Changeset in webkit [226317] by Simon Fraser
  • 7 edits
    2 adds in trunk

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.
12:28 PM Changeset in webkit [226316] by Simon Fraser
  • 5 edits
    3 adds in trunk

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.
11:53 AM Changeset in webkit [226315] by Simon Fraser
  • 6 edits
    2 adds in trunk

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.

Dec 31, 2017:

1:25 AM Changeset in webkit [226314] by jiewen_tan@apple.com
  • 3 edits in trunk/Source/WebCore

[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:

Dec 30, 2017:

8:38 PM Changeset in webkit [226313] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

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.

11:30 AM Changeset in webkit [226312] by Wenson Hsieh
  • 25 edits in trunk/Source

[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:]):

11:05 AM Changeset in webkit [226311] by Yusuke Suzuki
  • 3 edits in trunk/Source/JavaScriptCore

[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):

Note: See TracTimeline for information about the timeline view.