WebKit-https.git
20 months agoREGRESSION (r225789): API tests WKProcessPool.InitialWarmedProcessUsed and WebKit...
beidson@apple.com [Thu, 14 Dec 2017 22:57:14 +0000 (22:57 +0000)]
REGRESSION (r225789): API tests WKProcessPool.InitialWarmedProcessUsed and WebKit.WebsiteDataStoreCustomPaths are failing.
https://bugs.webkit.org/show_bug.cgi?id=180722

Reviewed by Chris Dumez.

Source/WebKit:

- Add a test-only accessor to get the number of WebProcesses hosting WebPages
- Have WebsiteDataStore keep track of all instances so they can be looked up by SessionID
- When the StorageProcess needs to establish a SW context connection on behalf of a specific SessionID,
  the UI process will now prefer using the WebsiteDataStore associated with that SessionID. This allows
  us to continue deferring creation of the default data store if it's not needed.

* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::connectionToContextProcessWasClosed):
(WebKit::StorageProcess::createServerToContextConnection):
* StorageProcess/StorageProcess.h:

* StorageProcess/StorageToWebProcessConnection.cpp:
(WebKit::StorageToWebProcessConnection::establishSWServerConnection):

* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _webPageContentProcessCount]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:

* UIProcess/Storage/StorageProcessProxy.cpp:
(WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcess):
(WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcessForExplicitSession):
* UIProcess/Storage/StorageProcessProxy.h:
* UIProcess/Storage/StorageProcessProxy.messages.in:

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
* UIProcess/WebProcessPool.h:

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::WebsiteDataStore::~WebsiteDataStore):
(WebKit::WebsiteDataStore::existingDataStoreForSessionID):
* UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

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

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

20 months agoStorage Access API: Implement frame-specific access in the document.cookie layer
wilander@apple.com [Thu, 14 Dec 2017 22:39:48 +0000 (22:39 +0000)]
Storage Access API: Implement frame-specific access in the document.cookie layer
https://bugs.webkit.org/show_bug.cgi?id=180682
<rdar://problem/35982257>

Reviewed by Alex Christensen.

Source/WebCore:

No new tests. Changed expected result from existing test.

CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
CookiesStrategy::cookieRequestHeaderFieldValue(), and
CookiesStrategy::getRawCookies() now take optional parameters for
frameID and pageID to allow frame-specific scoping of cookies.

This change makes the return values of FrameLoaderClient::frameID()
and FrameLoaderClient::pageID() std::optional<uint64_t> so that
WebCore can call those getters and get the right return values in
WebKit and std:nullopt in WebKitLegacy.

* dom/Document.cpp:
(WebCore::Document::requestStorageAccess):
* loader/CookieJar.cpp:
(WebCore::cookies):
(WebCore::setCookies):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::getRawCookies):
* loader/EmptyFrameLoaderClient.h:
* loader/FrameLoaderClient.h:
* platform/CookiesStrategy.h:
* platform/network/CacheValidation.cpp:
(WebCore::headerValueForVary):
* platform/network/PlatformCookieJar.h:
* platform/network/cf/CookieJarCFNet.cpp:
(WebCore::setCookiesFromDOM):
(WebCore::cookiesForDOM):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::getRawCookies):
* platform/network/curl/CookieJarCurl.cpp:
(WebCore::CookieJarCurlFileSystem::setCookiesFromDOM):
(WebCore::CookieJarCurlFileSystem::cookiesForDOM):
(WebCore::CookieJarCurlFileSystem::cookieRequestHeaderFieldValue):
(WebCore::CookieJarCurlFileSystem::getRawCookies):
(WebCore::cookiesForDOM):
(WebCore::setCookiesFromDOM):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::getRawCookies):
* platform/network/curl/CookieJarCurl.h:
* platform/network/mac/CookieJarMac.mm:
(WebCore::cookiesInPartitionForURL):
(WebCore::cookiesForURL):
(WebCore::cookiesForSession):
(WebCore::cookiesForDOM):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::setCookiesFromDOM):
(WebCore::getRawCookies):
* platform/network/soup/CookieJarSoup.cpp:
(WebCore::setCookiesFromDOM):
(WebCore::cookiesForDOM):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::getRawCookies):

Source/WebKit:

CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
CookiesStrategy::cookieRequestHeaderFieldValue(), and
CookiesStrategy::getRawCookies() now take optional parameters for
frameID and pageID to allow frame-specific scoping of cookies.

This change makes the return values of FrameLoaderClient::frameID()
and FrameLoaderClient::pageID() std::optional<uint64_t> so that
WebCore can call those getters and get the right return values in
WebKit and std:nullopt in WebKitLegacy.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::cookiesForDOM):
(WebKit::NetworkConnectionToWebProcess::setCookiesFromDOM):
(WebKit::NetworkConnectionToWebProcess::cookieRequestHeaderFieldValue):
(WebKit::NetworkConnectionToWebProcess::getRawCookies):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* Shared/mac/CookieStorageShim.mm:
(WebKit::webKitCookieStorageCopyRequestHeaderFieldsForURL):
* WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::scheduleLoad):
    Now handles the fact that FrameLoaderClient::frameID() and
    FrameLoaderClient::pageID() return an optional.
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::pageID const):
(WebKit::WebFrameLoaderClient::frameID const):
    Now return an optional.
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::cookiesForDOM):
(WebKit::WebPlatformStrategies::setCookiesFromDOM):
(WebKit::WebPlatformStrategies::cookieRequestHeaderFieldValue):
(WebKit::WebPlatformStrategies::getRawCookies):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Source/WebKitLegacy/mac:

CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
CookiesStrategy::cookieRequestHeaderFieldValue(), and
CookiesStrategy::getRawCookies() now take optional parameters for
frameID and pageID to allow frame-specific scoping of cookies.

This change makes the return values of FrameLoaderClient::frameID()
and FrameLoaderClient::pageID() std::optional<uint64_t> so that
WebCore can call those getters and get the right return values in
WebKit and std:nullopt in WebKitLegacy.

* WebCoreSupport/WebFrameLoaderClient.h:
* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::pageID const):
(WebFrameLoaderClient::frameID const):
* WebCoreSupport/WebPlatformStrategies.h:
* WebCoreSupport/WebPlatformStrategies.mm:
(WebPlatformStrategies::cookiesForDOM):
(WebPlatformStrategies::setCookiesFromDOM):
(WebPlatformStrategies::cookieRequestHeaderFieldValue):
(WebPlatformStrategies::getRawCookies):

Source/WebKitLegacy/win:

CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
CookiesStrategy::cookieRequestHeaderFieldValue(), and
CookiesStrategy::getRawCookies() now take optional parameters for
frameID and pageID to allow frame-specific scoping of cookies.

This change makes the return values of FrameLoaderClient::frameID()
and FrameLoaderClient::pageID() std::optional<uint64_t> so that
WebCore can call those getters and get the right return values in
WebKit and std:nullopt in WebKitLegacy.

* WebCoreSupport/WebFrameLoaderClient.cpp:
(WebFrameLoaderClient::pageID const):
(WebFrameLoaderClient::frameID const):
    Now return an optional.
* WebCoreSupport/WebFrameLoaderClient.h:
* WebCoreSupport/WebPlatformStrategies.cpp:
(WebPlatformStrategies::cookiesForDOM):
(WebPlatformStrategies::setCookiesFromDOM):
(WebPlatformStrategies::cookieRequestHeaderFieldValue):
(WebPlatformStrategies::getRawCookies):
* WebCoreSupport/WebPlatformStrategies.h:

LayoutTests:

CookiesStrategy::cookiesForDOM(), CookiesStrategy::setCookiesFromDOM(),
CookiesStrategy::cookieRequestHeaderFieldValue(), and
CookiesStrategy::getRawCookies() now take optional parameters for
frameID and pageID to allow frame-specific scoping of cookies.

This change makes the return values of FrameLoaderClient::frameID()
and FrameLoaderClient::pageID() std::optional<uint64_t> so that
WebCore can call those getters and get the right return values in
WebKit and std:nullopt in WebKitLegacy.

* http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-and-try-access-from-right-frame-expected.txt:
    Now expects the correct behavior for document.cookie.

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

20 months agoFix assertion in JSObject's structure setting methods
keith_miller@apple.com [Thu, 14 Dec 2017 22:28:09 +0000 (22:28 +0000)]
Fix assertion in JSObject's structure setting methods
https://bugs.webkit.org/show_bug.cgi?id=180840

Reviewed by Mark Lam.

I forgot that when Typed Arrays have non-indexed properties
added to them, they call the generic code. The generic code
in turn calls the regular structure setting methods. Thus,
these assertions were invalid and we should just avoid setting
the indexing mask if we have a Typed Array.

* runtime/JSObject.h:
(JSC::JSObject::setButterfly):
(JSC::JSObject::nukeStructureAndSetButterfly):

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

20 months agoVersioning.
jmarcell@apple.com [Thu, 14 Dec 2017 22:22:56 +0000 (22:22 +0000)]
Versioning.

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

20 months agoFix Mac CMake build
achristensen@apple.com [Thu, 14 Dec 2017 22:22:25 +0000 (22:22 +0000)]
Fix Mac CMake build
https://bugs.webkit.org/show_bug.cgi?id=180835

Reviewed by Andy Estes.

Source/WebCore:

* PlatformMac.cmake:
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:

Source/WebKit:

* PlatformMac.cmake:
* Shared/WebsiteDataStoreParameters.cpp:
(WebKit::WebsiteDataStoreParameters::ephemeralParametersWithSessionID):
* Shared/WebsiteDataStoreParameters.h:
* UIProcess/API/APIAttachment.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::setPrivateBrowsingEnabled):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setSessionID):

Tools:

* DumpRenderTree/mac/DumpRenderTree.mm:
* MiniBrowser/mac/WK1BrowserWindowController.m:

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

20 months agoREGRESSION (r225695): Repro crash on yahoo login page
msaboff@apple.com [Thu, 14 Dec 2017 22:16:38 +0000 (22:16 +0000)]
REGRESSION (r225695): Repro crash on yahoo login page
https://bugs.webkit.org/show_bug.cgi?id=180761

Reviewed by JF Bastien.

JSTests:

New regression test.

* stress/regress-180761.js: Added.

Source/JavaScriptCore:

Relanding r225695 with a fix.

The fix is that we need to save the return address for a parentheses in
the ParenContext because it is actually used by any immediately contained
alternatives.

Also did a little refactoring, changing occurances of PatternContext to
ParenContext since that is the name of the structure.

* runtime/RegExp.cpp:
(JSC::byteCodeCompilePattern):
(JSC::RegExp::byteCodeCompileIfNecessary):
(JSC::RegExp::compile):
(JSC::RegExp::compileMatchOnly):
* runtime/RegExp.h:
* runtime/RegExpInlines.h:
(JSC::RegExp::matchInline):
* testRegExp.cpp:
(parseRegExpLine):
(runFromFiles):
* yarr/Yarr.h:
* yarr/YarrInterpreter.cpp:
(JSC::Yarr::ByteCompiler::compile):
(JSC::Yarr::ByteCompiler::dumpDisjunction):
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::ParenContextSizes::ParenContextSizes):
(JSC::Yarr::YarrGenerator::ParenContextSizes::numSubpatterns):
(JSC::Yarr::YarrGenerator::ParenContextSizes::frameSlots):
(JSC::Yarr::YarrGenerator::ParenContext::sizeFor):
(JSC::Yarr::YarrGenerator::ParenContext::nextOffset):
(JSC::Yarr::YarrGenerator::ParenContext::beginOffset):
(JSC::Yarr::YarrGenerator::ParenContext::matchAmountOffset):
(JSC::Yarr::YarrGenerator::ParenContext::returnAddressOffset):
(JSC::Yarr::YarrGenerator::ParenContext::subpatternOffset):
(JSC::Yarr::YarrGenerator::ParenContext::savedFrameOffset):
(JSC::Yarr::YarrGenerator::initParenContextFreeList):
(JSC::Yarr::YarrGenerator::allocateParenContext):
(JSC::Yarr::YarrGenerator::freeParenContext):
(JSC::Yarr::YarrGenerator::saveParenContext):
(JSC::Yarr::YarrGenerator::restoreParenContext):
(JSC::Yarr::YarrGenerator::tryReadUnicodeCharImpl):
(JSC::Yarr::YarrGenerator::storeToFrame):
(JSC::Yarr::YarrGenerator::generateJITFailReturn):
(JSC::Yarr::YarrGenerator::clearMatches):
(JSC::Yarr::YarrGenerator::generate):
(JSC::Yarr::YarrGenerator::backtrack):
(JSC::Yarr::YarrGenerator::opCompileParenthesesSubpattern):
(JSC::Yarr::YarrGenerator::generateEnter):
(JSC::Yarr::YarrGenerator::generateReturn):
(JSC::Yarr::YarrGenerator::YarrGenerator):
(JSC::Yarr::YarrGenerator::compile):
* yarr/YarrJIT.h:
(JSC::Yarr::YarrCodeBlock::execute):
* yarr/YarrPattern.cpp:
(JSC::Yarr::indentForNestingLevel):
(JSC::Yarr::dumpUChar32):
(JSC::Yarr::dumpCharacterClass):
(JSC::Yarr::PatternTerm::dump):
(JSC::Yarr::YarrPattern::dumpPattern):
* yarr/YarrPattern.h:
(JSC::Yarr::PatternTerm::containsAnyCaptures):
(JSC::Yarr::BackTrackInfoParenthesesOnce::returnAddressIndex):
(JSC::Yarr::BackTrackInfoParentheses::beginIndex):
(JSC::Yarr::BackTrackInfoParentheses::returnAddressIndex):
(JSC::Yarr::BackTrackInfoParentheses::matchAmountIndex):
(JSC::Yarr::BackTrackInfoParentheses::parenContextHeadIndex):
(JSC::Yarr::BackTrackInfoAlternative::offsetIndex): Deleted.

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

20 months ago[Web Animations] Use is<> when possible
graouts@webkit.org [Thu, 14 Dec 2017 22:15:25 +0000 (22:15 +0000)]
[Web Animations] Use is<> when possible
https://bugs.webkit.org/show_bug.cgi?id=180832

Reviewed by Dean Jackson.

Adopt is<> when possible.

* animation/WebAnimation.cpp:
(WebCore::WebAnimation::setEffect):
(WebCore::WebAnimation::setTimeline):
(WebCore::WebAnimation::startOrStopAccelerated):

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

20 months ago[Web Animations] Bring timeline and currentTime setters closer to compliance
graouts@webkit.org [Thu, 14 Dec 2017 22:13:45 +0000 (22:13 +0000)]
[Web Animations] Bring timeline and currentTime setters closer to compliance
https://bugs.webkit.org/show_bug.cgi?id=180834

Reviewed by Dean Jackson.

Source/WebCore:

Now that we've added support for the concept of a hold time, pending tasks
and updating the finished state, adopt those in places we had already implemented
but weren't fully compliant.

Web Platform Tests cover these behaviors, but we're currently failing those tests
due to lacking an implementation for Element.animate().

* animation/WebAnimation.cpp:
(WebCore::WebAnimation::setTimeline): Add some spec comments to clarify the code behavior
and implement step 4 of the "setting the timeline" procedure where we reset the hold time
to an unresolved value if the start time is resolved, as well as step 5 where we update the
finished state. Finally, we also ensure we update the pending tasks as the ready state is
dependent on a timeline being set.
(WebCore::WebAnimation::bindingsStartTime const): Invert the way we test for an unresolved
value to match prior review comments by Dean Jackson.
(WebCore::WebAnimation::setBindingsStartTime): Use a boolean check rather than checking
equality with std::nullopt.
(WebCore::WebAnimation::setBindingsCurrentTime): Do not raise an exception when setting
an unresolved time.

LayoutTests:

Remove a test clause which tested a behavior that is not part of the spec.

* http/wpt/wk-web-animations/timing-model/animation-current-time.html:

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

20 months ago[Web Animations] Implement the cancel() method on Animation
graouts@webkit.org [Thu, 14 Dec 2017 22:12:37 +0000 (22:12 +0000)]
[Web Animations] Implement the cancel() method on Animation
https://bugs.webkit.org/show_bug.cgi?id=180830
<rdar://problem/36055816>

Reviewed by Dean Jackson.

Source/WebCore:

We implement the cancel() method on the Animation interface with full spec text defining
the normative behavior of those methods and code matching those steps. Implementing the
cancel() method required implementing the notion of "resetting pending tasks",
which the Web Animations spec defines as well.

* animation/WebAnimation.cpp:
(WebCore::WebAnimation::setEffect):
(WebCore::WebAnimation::cancel):
(WebCore::WebAnimation::resetPendingTasks):
* animation/WebAnimation.h:
* animation/WebAnimation.idl:

LayoutTests:

Rebase some WPT expectations with progressions due to exposing the cancel() method.

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

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

20 months agoUse move semantics for SandboxExtension::Handle
achristensen@apple.com [Thu, 14 Dec 2017 22:08:53 +0000 (22:08 +0000)]
Use move semantics for SandboxExtension::Handle
https://bugs.webkit.org/show_bug.cgi?id=180792

Reviewed by Andy Estes.

Passing them around as const SandboxExtension::Handle& is wrong because ownership is transferred and they are consumed.
It only works now because their contents are mutable, which isn't a good use of mutable.

* NetworkProcess/Downloads/Download.cpp:
(WebKit::Download::decideDestinationWithSuggestedFilename):
(WebKit::Download::didDecideDownloadDestination):
* NetworkProcess/Downloads/Download.h:
* NetworkProcess/Downloads/DownloadManager.cpp:
(WebKit::DownloadManager::continueDecidePendingDownloadDestination):
(WebKit::DownloadManager::resumeDownload):
* NetworkProcess/Downloads/DownloadManager.h:
* NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:
(WebKit::Download::resume):
* NetworkProcess/Downloads/ios/DownloadIOS.mm:
(WebKit::Download::resume):
* NetworkProcess/Downloads/mac/DownloadMac.mm:
(WebKit::Download::resume):
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::registerFileBlobURL):
(WebKit::NetworkConnectionToWebProcess::preregisterSandboxExtensionsForOptionallyFileBackedBlob):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkDataTask.h:
(WebKit::NetworkDataTask::setPendingDownloadLocation):
* NetworkProcess/NetworkDataTaskBlob.cpp:
(WebKit::NetworkDataTaskBlob::setPendingDownloadLocation):
* NetworkProcess/NetworkDataTaskBlob.h:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::resumeDownload):
(WebKit::NetworkProcess::continueDecidePendingDownloadDestination):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::decode):
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::setPendingDownloadLocation):
* Shared/SandboxExtension.h:
(WebKit::SandboxExtension::create):
* Shared/WebMemorySampler.cpp:
(WebKit::WebMemorySampler::start):
(WebKit::WebMemorySampler::initializeSandboxedLogFile):
* Shared/WebMemorySampler.h:
* Shared/mac/SandboxExtensionMac.mm:
(WebKit::SandboxExtension::create):
* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::grantSandboxExtensionsForBlobs):
* StorageProcess/StorageProcess.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::performDragOperation):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::dragEntered):
(WebKit::WebPageProxy::dragUpdated):
(WebKit::WebPageProxy::dragExited):
(WebKit::WebPageProxy::performDragOperation):
(WebKit::WebPageProxy::performDragControllerAction):
* UIProcess/WebPageProxy.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::create):
* WebProcess/InjectedBundle/InjectedBundle.h:
* WebProcess/MediaStream/MediaDeviceSandboxExtensions.cpp:
(WebKit::MediaDeviceSandboxExtensions::operator[]):
(WebKit::MediaDeviceSandboxExtensions::operator[] const): Deleted.
* WebProcess/MediaStream/MediaDeviceSandboxExtensions.h:
* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::grantUserMediaDeviceSandboxExtensions):
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::getPathnamesForType):
* WebProcess/WebPage/WebBackForwardListProxy.cpp:
(WebKit::WebBackForwardListProxy::goToItem):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::loadRequest):
(WebKit::WebPage::reload):
(WebKit::WebPage::performDragControllerAction):
(WebKit::WebPage::grantUserMediaDeviceSandboxExtensions):
(WebKit::WebPage::SandboxExtensionTracker::beginLoad):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::startMemorySampler):
* WebProcess/WebProcess.h:

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

20 months agoMake WebsitePolicies a proper class with getters and setters
achristensen@apple.com [Thu, 14 Dec 2017 22:07:47 +0000 (22:07 +0000)]
Make WebsitePolicies a proper class with getters and setters
https://bugs.webkit.org/show_bug.cgi?id=180788

Reviewed by Andy Estes.

Also introduce WebsitePolicies::applyToDocumentLoader to reduce duplicate code.
This has a side-effect of now applying custom http header fields and content blocking enabled status
when updating WebsitePolicies.  This will result in these being applied when a user updates
the per-site settings, and they weren't before.

* CMakeLists.txt:
* Shared/WebsitePolicies.cpp: Added.
(WebKit::WebsitePolicies::WebsitePolicies):
(WebKit::WebsitePolicies::encode const):
(WebKit::WebsitePolicies::decode):
(WebKit::WebsitePolicies::applyToDocumentLoader):
* Shared/WebsitePolicies.h:
(WebKit::WebsitePolicies::contentBlockersEnabled const):
(WebKit::WebsitePolicies::setContentBlockersEnabled):
(WebKit::WebsitePolicies::allowedAutoplayQuirks const):
(WebKit::WebsitePolicies::setAllowedAutoplayQuirks):
(WebKit::WebsitePolicies::autoplayPolicy const):
(WebKit::WebsitePolicies::setAutoplayPolicy):
(WebKit::WebsitePolicies::customHeaderFields):
(WebKit::WebsitePolicies::takeCustomHeaderFields):
(WebKit::WebsitePolicies::setCustomHeaderFields):
(WebKit::WebsitePolicies::encode const): Deleted.
(WebKit::WebsitePolicies::decode): Deleted.
* UIProcess/API/APIWebsitePolicies.h:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::applyToDocumentLoader):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updateWebsitePolicies):
* WebProcess/WebPage/WebPage.h:

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

20 months agoEnable Service Workers on iOS
cdumez@apple.com [Thu, 14 Dec 2017 21:57:16 +0000 (21:57 +0000)]
Enable Service Workers on iOS
https://bugs.webkit.org/show_bug.cgi?id=180836

Reviewed by Alex Christensen.

* Shared/WebPreferencesDefaultValues.h:
* UIProcess/WebProcessPool.cpp:
Enable Service Workers on iOS.

(WebKit::WebProcessPool::ensureNetworkProcess):
Fall back to defaultCacheStorageDirectory() instead of the empty string
for the cache storage directory, when we do not have a store.

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

20 months ago"Click to exit fullscreen" text not legible on High Sierra
jer.noble@apple.com [Thu, 14 Dec 2017 20:50:50 +0000 (20:50 +0000)]
"Click to exit fullscreen" text not legible on High Sierra
https://bugs.webkit.org/show_bug.cgi?id=180825
<rdar://problem/32839983>

Reviewed by Eric Carlson.

Explicitly set the NSVisualAffectView's .appearance property.

* platform/mac/WebCoreFullScreenPlaceholderView.mm:
(-[WebCoreFullScreenPlaceholderView initWithFrame:]):

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

20 months agoRe-sync service-workers/service-worker/interfaces-sw.https.html from upstream
cdumez@apple.com [Thu, 14 Dec 2017 20:16:25 +0000 (20:16 +0000)]
Re-sync service-workers/service-worker/interfaces-sw.https.html from upstream
https://bugs.webkit.org/show_bug.cgi?id=180814

Reviewed by Youenn Fablet.

Re-sync service-workers/service-worker/interfaces-sw.https.html WPT from upstream after
https://github.com/w3c/web-platform-tests/pull/8669.

* web-platform-tests/service-workers/service-worker/interfaces-sw.https-expected.txt:
* web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js:

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

20 months ago[Web Animations] Implement the finish() method on Animation
graouts@webkit.org [Thu, 14 Dec 2017 20:08:21 +0000 (20:08 +0000)]
[Web Animations] Implement the finish() method on Animation
https://bugs.webkit.org/show_bug.cgi?id=180822
<rdar://problem/36053282>

Reviewed by Dean Jackson.

Source/WebCore:

We implement the finish() method on the Animation interface with full spec text defining
the normative behavior of those methods and code matching those steps. Implementing the
finish() method required implementing the notion of "silently setting the current time",
which the Web Animations spec defines as well.

* animation/WebAnimation.cpp:
(WebCore::WebAnimation::silentlySetCurrentTime):
(WebCore::WebAnimation::setCurrentTime):
(WebCore::WebAnimation::finish):
* animation/WebAnimation.h:
* animation/WebAnimation.idl:

LayoutTests:

Rebase some WPT expectations with progressions due to exposing the finish() method.
We're also removing a WebKit-only test that is no longer relevant and started failing
with compliant behavior.

* http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:
* http/wpt/web-animations/timing-model/animations/set-the-timeline-of-an-animation-expected.txt:
* http/wpt/wk-web-animations/timing-model/animation-playback-rate-expected.txt: Removed.
* http/wpt/wk-web-animations/timing-model/animation-playback-rate.html: Removed.

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

20 months agoService worker script fetching currently always uses the network cache
cdumez@apple.com [Thu, 14 Dec 2017 19:55:01 +0000 (19:55 +0000)]
Service worker script fetching currently always uses the network cache
https://bugs.webkit.org/show_bug.cgi?id=180816

Reviewed by Alex Christensen.

Source/WebCore:

Service worker script fetching currently always uses the network cache. This is incorrect as per:
- https://w3c.github.io/ServiceWorker/#update-algorithm (step 7.2)

Tests: http/tests/workers/service/registration-updateViaCache-all.html
       http/tests/workers/service/registration-updateViaCache-none.html

* workers/Worker.cpp:
(WebCore::Worker::create):
* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::loadAsynchronously):
* workers/WorkerScriptLoader.h:
* workers/service/SWClientConnection.cpp:
(WebCore::SWClientConnection::startScriptFetchForServer):
* workers/service/SWClientConnection.h:
* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::startScriptFetchForJob):
* workers/service/ServiceWorkerContainer.h:
* workers/service/ServiceWorkerJob.cpp:
(WebCore::ServiceWorkerJob::startScriptFetch):
(WebCore::ServiceWorkerJob::fetchScriptWithContext):
* workers/service/ServiceWorkerJob.h:
* workers/service/ServiceWorkerJobClient.h:
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::startScriptFetch):
* workers/service/server/SWServer.h:
* workers/service/server/SWServerJobQueue.cpp:
(WebCore::SWServerJobQueue::runUpdateJob):
* workers/service/server/SWServerRegistration.h:
(WebCore::SWServerRegistration::lastUpdateTime const):

Source/WebKit:

* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startScriptFetchInClient):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* WebProcess/Storage/WebSWClientConnection.messages.in:

LayoutTests:

Add layout test coverage.

* http/tests/workers/service/registration-updateViaCache-all-expected.txt: Added.
* http/tests/workers/service/registration-updateViaCache-all.html: Added.
* http/tests/workers/service/registration-updateViaCache-none-expected.txt: Added.
* http/tests/workers/service/registration-updateViaCache-none.html: Added.
* http/tests/workers/service/resources/cacheable-script-worker.php: Added.

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

20 months agoRemove ColorSpaceDeviceRGB and most users of the obsolete deviceRGB colorspace
simon.fraser@apple.com [Thu, 14 Dec 2017 19:33:09 +0000 (19:33 +0000)]
Remove ColorSpaceDeviceRGB and most users of the obsolete deviceRGB colorspace
https://bugs.webkit.org/show_bug.cgi?id=180689

Reviewed by Darin Adler.

Address issues noted by Darin in r225797:

Existing and new code mistakenly allocated colorspaces on every call, because
they didn't initialize the static variable on the first call. Avoid this mistake
by using dispatch_once() in these functions.

Fix a case where the extendedSRGBColorSpaceRef() fallback was returning deviceRGB
instead of sRGB.

* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::sRGBColorSpaceRef):
(WebCore::linearRGBColorSpaceRef):
(WebCore::extendedSRGBColorSpaceRef):
(WebCore::displayP3ColorSpaceRef):
* platform/graphics/cocoa/GraphicsContextCocoa.mm:
(WebCore::linearRGBColorSpaceRef):

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

20 months agoStorageProcess::deleteWebsiteData() should ensure there is a SWServer for the given...
cdumez@apple.com [Thu, 14 Dec 2017 19:13:56 +0000 (19:13 +0000)]
StorageProcess::deleteWebsiteData() should ensure there is a SWServer for the given sessionID
https://bugs.webkit.org/show_bug.cgi?id=180784

Reviewed by Youenn Fablet.

StorageProcess::deleteWebsiteData() should ensure there is a SWServer for the given sessionID
instead of not clearing anything when no such SWServer exists.

This will be useful on iOS once <rdar://problem/36034667> is fully fixed.

* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::deleteWebsiteData):
(WebKit::StorageProcess::deleteWebsiteDataForOrigins):
* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):

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

20 months agoJSObjects should have a mask for loading indexed properties
keith_miller@apple.com [Thu, 14 Dec 2017 19:11:49 +0000 (19:11 +0000)]
JSObjects should have a mask for loading indexed properties
https://bugs.webkit.org/show_bug.cgi?id=180768

Reviewed by Mark Lam.

JSTests:

* stress/int16-put-by-val-in-and-out-of-bounds.js:
(test):

Source/JavaScriptCore:

This patch adds a new member to JSObject that holds an indexing
mask.  The indexing mask is bitwise anded with the index used to
load a property.  If for whatever reason an attacker is able to
clobber the vectorLength of our butterfly they still won't be able
to read substantially past the end of the buttefly. For
performance reasons we don't use the indexing masking for
TypedArrays. Since TypedArrays are already gigacaged the risk of
wild reads is still restricted.

This patch is a <1% regression on Speedometer and ~3% regression
on JetStream in my testing.

* assembler/MacroAssembler.h:
(JSC::MacroAssembler::urshiftPtr):
* bytecode/AccessCase.cpp:
(JSC::AccessCase::generateImpl):
* dfg/DFGAbstractHeap.h:
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::emitAllocateRawObject):
(JSC::DFG::SpeculativeJIT::compileDoublePutByVal):
(JSC::DFG::SpeculativeJIT::compileNewFunctionCommon):
(JSC::DFG::SpeculativeJIT::compileCreateActivation):
(JSC::DFG::SpeculativeJIT::compileCreateDirectArguments):
(JSC::DFG::SpeculativeJIT::compileArraySlice):
(JSC::DFG::SpeculativeJIT::compileNukeStructureAndSetButterfly):
(JSC::DFG::SpeculativeJIT::compileNewStringObject):
(JSC::DFG::SpeculativeJIT::compileNewTypedArray):
* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::emitAllocateJSObject):
(JSC::DFG::SpeculativeJIT::emitAllocateJSObjectWithKnownSize):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
(JSC::DFG::SpeculativeJIT::compileAllocateNewArrayWithSize):
* ftl/FTLAbstractHeap.cpp:
(JSC::FTL::IndexedAbstractHeap::baseIndex):
* ftl/FTLAbstractHeap.h:
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileAtomicsReadModifyWrite):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateDirectArguments):
(JSC::FTL::DFG::LowerDFGToB3::compileNewStringObject):
(JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::maskedIndex):
(JSC::FTL::DFG::LowerDFGToB3::computeButterflyIndexingMask):
(JSC::FTL::DFG::LowerDFGToB3::allocateObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateJSArray):
(JSC::FTL::DFG::LowerDFGToB3::pointerIntoTypedArray):
* ftl/FTLOutput.h:
(JSC::FTL::Output::baseIndex):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitComputeButterflyIndexingMask):
(JSC::AssemblyHelpers::nukeStructureAndStoreButterfly):
(JSC::AssemblyHelpers::emitAllocateJSObject):
(JSC::AssemblyHelpers::emitAllocateJSObjectWithKnownSize):
(JSC::AssemblyHelpers::emitAllocateVariableSizedJSObject):
(JSC::AssemblyHelpers::emitAllocateDestructibleObject):
(JSC::AssemblyHelpers::storeButterfly): Deleted.
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_new_object):
(JSC::JIT::emit_op_create_this):
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_new_object):
(JSC::JIT::emit_op_create_this):
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emitDoubleLoad):
(JSC::JIT::emitContiguousLoad):
(JSC::JIT::emitArrayStorageLoad):
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/ArrayStorage.h:
(JSC::ArrayStorage::availableVectorLength):
* runtime/Butterfly.h:
(JSC::ContiguousData::ContiguousData):
(JSC::ContiguousData::at const):
(JSC::ContiguousData::at):
(JSC::Butterfly::publicLength const):
(JSC::Butterfly::vectorLength const):
(JSC::Butterfly::computeIndexingMaskForVectorLength):
(JSC::Butterfly::computeIndexingMask):
(JSC::Butterfly::contiguousInt32):
(JSC::ContiguousData::operator[] const): Deleted.
(JSC::ContiguousData::operator[]): Deleted.
(JSC::Butterfly::publicLength): Deleted.
(JSC::Butterfly::vectorLength): Deleted.
* runtime/ButterflyInlines.h:
(JSC::ContiguousData<T>::at const):
(JSC::ContiguousData<T>::at):
* runtime/ClonedArguments.cpp:
(JSC::ClonedArguments::createEmpty):
* runtime/JSArray.cpp:
(JSC::JSArray::tryCreateUninitializedRestricted):
(JSC::JSArray::appendMemcpy):
(JSC::JSArray::setLength):
(JSC::JSArray::pop):
(JSC::JSArray::fastSlice):
(JSC::JSArray::shiftCountWithArrayStorage):
(JSC::JSArray::shiftCountWithAnyIndexingType):
(JSC::JSArray::unshiftCountWithAnyIndexingType):
(JSC::JSArray::fillArgList):
(JSC::JSArray::copyToArguments):
* runtime/JSArrayBufferView.cpp:
(JSC::JSArrayBufferView::JSArrayBufferView):
* runtime/JSArrayInlines.h:
(JSC::JSArray::pushInline):
* runtime/JSFixedArray.h:
(JSC::JSFixedArray::createFromArray):
* runtime/JSGenericTypedArrayViewInlines.h:
(JSC::JSGenericTypedArrayView<Adaptor>::slowDownAndWasteMemory):
* runtime/JSObject.cpp:
(JSC::JSObject::getOwnPropertySlotByIndex):
(JSC::JSObject::putByIndex):
(JSC::JSObject::createInitialInt32):
(JSC::JSObject::createInitialDouble):
(JSC::JSObject::createInitialContiguous):
(JSC::JSObject::convertUndecidedToInt32):
(JSC::JSObject::convertUndecidedToDouble):
(JSC::JSObject::convertUndecidedToContiguous):
(JSC::JSObject::convertInt32ToDouble):
(JSC::JSObject::convertInt32ToArrayStorage):
(JSC::JSObject::convertDoubleToContiguous):
(JSC::JSObject::convertDoubleToArrayStorage):
(JSC::JSObject::convertContiguousToArrayStorage):
(JSC::JSObject::createInitialForValueAndSet):
(JSC::JSObject::deletePropertyByIndex):
(JSC::JSObject::getOwnPropertyNames):
(JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes):
(JSC::JSObject::countElements):
(JSC::JSObject::ensureLengthSlow):
(JSC::JSObject::reallocateAndShrinkButterfly):
(JSC::JSObject::getEnumerableLength):
* runtime/JSObject.h:
(JSC::JSObject::canGetIndexQuickly):
(JSC::JSObject::getIndexQuickly):
(JSC::JSObject::tryGetIndexQuickly const):
(JSC::JSObject::setIndexQuickly):
(JSC::JSObject::initializeIndex):
(JSC::JSObject::initializeIndexWithoutBarrier):
(JSC::JSObject::butterflyIndexingMaskOffset):
(JSC::JSObject::butterflyIndexingMask const):
(JSC::JSObject::setButterflyWithIndexingMask):
(JSC::JSObject::setButterfly):
(JSC::JSObject::nukeStructureAndSetButterfly):
(JSC::JSObject::JSObject):
* runtime/RegExpMatchesArray.h:
(JSC::tryCreateUninitializedRegExpMatchesArray):
* runtime/Structure.cpp:
(JSC::Structure::flattenDictionaryStructure):

Source/WebCore:

* bindings/js/JSDOMConvertSequences.h:
(WebCore::Detail::NumericSequenceConverter::convertArray):
(WebCore::Detail::SequenceConverter::convertArray):

Source/WTF:

Add a clz that wraps the builtin clz intrinisics provided by
various compilers. The clz function by default assumes that
the input may be zero. On X86 this makes a difference because not
all CPUs have LZCNT and BSR has undefined behavior on zero. On ARM,
the zero check gets optimized away, regardless.

* wtf/StdLibExtras.h:
(std::clz):

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

20 months agologVMFailure should not simulate crash on iOS
sbarati@apple.com [Thu, 14 Dec 2017 19:10:54 +0000 (19:10 +0000)]
logVMFailure should not simulate crash on iOS
https://bugs.webkit.org/show_bug.cgi?id=180790

Reviewed by JF Bastien.

The Gigacage allocation on iOS is expected to fail in certain circumstances.
Let's not simulate a crash on failure because since this is expected behavior.

* bmalloc/VMAllocate.h:
(bmalloc::tryVMAllocate):

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

20 months agoWebsiteDataStore::defaultDataStoreConfiguration() fails to set default value for...
cdumez@apple.com [Thu, 14 Dec 2017 19:08:32 +0000 (19:08 +0000)]
WebsiteDataStore::defaultDataStoreConfiguration() fails to set default value for serviceWorkerRegistrationDirectory
https://bugs.webkit.org/show_bug.cgi?id=180794
<rdar://problem/36034667>

Reviewed by Youenn Fablet.

Set the default IndexedDB and ServiceWorker database paths in WebsiteDataStore::defaultDataStoreConfiguration().
Without this, the client is forced to set the expected path.

* UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:
(API::WebsiteDataStore::defaultDataStoreConfiguration):
* UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:
(API::WebsiteDataStore::defaultDataStoreConfiguration):

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

20 months agoUpdated test expectations for imported/w3c/web-platform-tests/html/semantics/document...
jlewis3@apple.com [Thu, 14 Dec 2017 18:31:08 +0000 (18:31 +0000)]
Updated test expectations for imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html.
https://bugs.webkit.org/show_bug.cgi?id=177322

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

20 months ago[Web Animations] Implement the play() and pause() methods on Animation
graouts@webkit.org [Thu, 14 Dec 2017 17:39:40 +0000 (17:39 +0000)]
[Web Animations] Implement the play() and pause() methods on Animation
https://bugs.webkit.org/show_bug.cgi?id=178932
<rdar://problem/35271069>

Reviewed by Eric Carlson.

Source/WebCore:

We implement the play() and pause() methods of the Animation interface with full spec text defining
the normative behavior of those methods and code matching those steps. Playing and pausing animations
incur running a play or pause task when conditions are met, specifically here when the timeline is ready.
So we add the notion of pending tasks and provide a proper implementation of pending() which we had
introduced in an earlier patch with a constant false return value.

Note that the play() method exposes an auto-rewinding flag which we always set to true, but other specs,
namely CSS Animations, do not require the rewinding behavior, so we expose it for future use.

* animation/WebAnimation.cpp:
(WebCore::WebAnimation::play):
(WebCore::WebAnimation::setTimeToRunPendingPlayTask):
(WebCore::WebAnimation::runPendingPlayTask):
(WebCore::WebAnimation::pause):
(WebCore::WebAnimation::setTimeToRunPendingPauseTask):
(WebCore::WebAnimation::runPendingPauseTask):
(WebCore::WebAnimation::updatePendingTasks):
* animation/WebAnimation.h:
* animation/WebAnimation.idl:

LayoutTests:

Rebase some WPT expectations with progressions due to exposing the play() and pause() methods.

* TestExpectations: Temporarily mark a test as flaky as it logs an unexpected current time which
may change between runs.
* http/wpt/web-animations/interfaces/Animation/idlharness-expected.txt:
* http/wpt/web-animations/interfaces/Animation/startTime-expected.txt:
* http/wpt/web-animations/interfaces/KeyframeEffect/setTarget-expected.txt:
* http/wpt/web-animations/timing-model/animations/current-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:

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

20 months agoWeb Inspector: UncaughtExceptionReporter fails on early errors
commit-queue@webkit.org [Thu, 14 Dec 2017 17:09:13 +0000 (17:09 +0000)]
Web Inspector: UncaughtExceptionReporter fails on early errors
https://bugs.webkit.org/show_bug.cgi?id=180776

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-12-14
Reviewed by Brian Burg.

* UserInterface/Debug/UncaughtExceptionReporter.js:
(urlLastPathComponent):
(handleError):
(handleUncaughtException):
URLUtilities parseURL might not be available, so have a small
helper for getting a good name from a URL / filename.

(handleUncaughtExceptionRecord):
(dismissErrorSheet):
Wrap `WI` namespace accesses in a try/catch since `WI` might not be available.
Safely check global variables there were `Foo` as `window.Foo` to avoid errors
if they are not actually available.

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

20 months agoWeb Inspector: Cmd-Option-R in docked inspector causes the inspector to reload instea...
commit-queue@webkit.org [Thu, 14 Dec 2017 17:08:52 +0000 (17:08 +0000)]
Web Inspector: Cmd-Option-R in docked inspector causes the inspector to reload instead of the inspected page
https://bugs.webkit.org/show_bug.cgi?id=180775
<rdar://problem/35964592>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-12-14
Reviewed by Brian Burg.

* WebKit.xcodeproj/project.pbxproj:
Remove old files add new files.

* PlatformMac.cmake:
* UIProcess/mac/WKWebInspectorWKWebView.h: Removed.
* UIProcess/mac/WKWebInspectorWKWebView.mm: Removed.
Remove unused WKWebInspectorWKWebView.

* UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:
* UIProcess/mac/WKInspectorViewController.mm:
(-[WKInspectorViewController dealloc]):
(-[WKInspectorViewController webView]):
(-[WKInspectorViewController inspectorWKWebViewReload:]):
(-[WKInspectorViewController inspectorWKWebViewReloadFromOrigin:]):
Handle WKWebView IBActions sent to the inspector frontend WKWebView.

* UIProcess/mac/WKInspectorWKWebView.h:
* UIProcess/mac/WKInspectorWKWebView.mm:
(-[WKInspectorWKWebView tag]):
(-[WKInspectorWKWebView inspectorWKWebViewDelegate]):
(-[WKInspectorWKWebView setInspectorWKWebViewDelegate:]):
(-[WKInspectorWKWebView reload:]):
(-[WKInspectorWKWebView reloadFromOrigin:]):
Move WKInspectorWKWebView into its own file. Include a delegate
to handle reload IBActions that will want to override.

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

20 months ago[Readable Streams API] Remove properties tests covered by WPT
romain.bellessort@crf.canon.fr [Thu, 14 Dec 2017 17:04:21 +0000 (17:04 +0000)]
[Readable Streams API] Remove properties tests covered by WPT
https://bugs.webkit.org/show_bug.cgi?id=180809

Reviewed by Youenn Fablet.

Removed WebKit properties/methods tests for ReadableByteStreamController,
ReadableStreamBYOBReader and ReadableStreamBYOBRequest. Indeed, these
tests are also present in WPT streams/readable-byte-streams/properties.js.

* streams/readable-byte-stream-controller-expected.txt: Updated expectations.
* streams/readable-byte-stream-controller.js: Remove ReadableByteStreamController properties test.
* streams/readable-stream-byob-reader-expected.txt: Updated expectations.
* streams/readable-stream-byob-reader.js: Remove ReadableStreamBYOBReader properties test.
* streams/readable-stream-byob-request-expected.txt: Updated expectations.
* streams/readable-stream-byob-request.js: Remove ReadableStreamBYOBRequest properties test.

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

20 months agoREGRESSION (r225799/r225887): Remove duplicate entries for JSCPoisonedPtr.h in Xcode...
ddkilzer@apple.com [Thu, 14 Dec 2017 17:03:56 +0000 (17:03 +0000)]
REGRESSION (r225799/r225887): Remove duplicate entries for JSCPoisonedPtr.h in Xcode project

Fixes the following warning during builds:

    Warning: Multiple build commands for output file WebKitBuild/Release/JavaScriptCore.framework/Versions/A/PrivateHeaders/JSCPoisonedPtr.h

* JavaScriptCore.xcodeproj/project.pbxproj: Remove duplicate
entries for JSCPoisonedPtr.h.

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

20 months agowebkitpy: Better name-version mapping (Follow-up fix)
jbedard@apple.com [Thu, 14 Dec 2017 16:13:29 +0000 (16:13 +0000)]
webkitpy: Better name-version mapping (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=179621
<rdar://problem/35589585>

Unreviewed infrastructure fix.

r225856 caused some undesired logging on Linux and Windows.

* Scripts/webkitpy/port/mac.py:
(MacPort.__init__): Use most recent OS release if not on a Mac.
(MacPort.default_baseline_search_path): Make platform explicit.
(MacPort.configuration_specifier_macros): Ditto.

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

20 months agoREGRESSION (r225887): Build broke due to missing includes in InferredValue.h
ddkilzer@apple.com [Thu, 14 Dec 2017 15:36:31 +0000 (15:36 +0000)]
REGRESSION (r225887): Build broke due to missing includes in InferredValue.h
<https://bugs.webkit.org/show_bug.cgi?id=180738>

* runtime/InferredValue.h: Attempt to fix build by adding
missing #include statements.

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

20 months agoWebDriver: add a common way to run tests with pytest
carlosgc@webkit.org [Thu, 14 Dec 2017 14:37:42 +0000 (14:37 +0000)]
WebDriver: add a common way to run tests with pytest
https://bugs.webkit.org/show_bug.cgi?id=180800

Reviewed by Carlos Alberto Lopez Perez.

Tools:

We currently use pytestrunner from wpt for w3c tests and our own code for selenium tests. Using the same code
for both would simplify everything, but also allows us to have a custom results recorder to support other test
expectations like TIMEOUT. The code to run selenium tests with pytest has been moved to a new file
pytest_runner.py and made generic to be used also for w3c tests.

* Scripts/webkitpy/webdriver_tests/pytest_runner.py: Added.
(TemporaryDirectory):
(TemporaryDirectory.__enter__):
(TemporaryDirectory.__exit__):
(CollectRecorder):
(CollectRecorder.__init__):
(CollectRecorder.pytest_collectreport):
(HarnessResultRecorder):
(HarnessResultRecorder.__init__):
(HarnessResultRecorder.pytest_collectreport):
(SubtestResultRecorder):
(SubtestResultRecorder.__init__):
(SubtestResultRecorder.pytest_runtest_logreport):
(SubtestResultRecorder._was_timeout):
(SubtestResultRecorder.record_pass):
(SubtestResultRecorder.record_fail):
(SubtestResultRecorder.record_error):
(SubtestResultRecorder.record_skip):
(SubtestResultRecorder.record):
(collect):
(run):
* Scripts/webkitpy/webdriver_tests/webdriver_selenium_executor.py:
(do_delayed_imports): Import pytest_runner here to avoid cycles.
(WebDriverSeleniumExecutor.__init__): Save the driver parameter as args member and call do_delayed_imports() if
needed.
(WebDriverSeleniumExecutor.collect): Use pytest_runner.
(WebDriverSeleniumExecutor.run): Ditto.
* Scripts/webkitpy/webdriver_tests/webdriver_test_runner.py:
(WebDriverTestRunner.print_results): Handle all possible tests results.
(WebDriverTestRunner.print_results.report): Helper to dump test results.
* Scripts/webkitpy/webdriver_tests/webdriver_test_runner_selenium.py:
(WebDriverTestRunnerSelenium.run):
* Scripts/webkitpy/webdriver_tests/webdriver_test_runner_w3c.py:
(WebDriverTestRunnerW3C.__init__): Do not set PYTEST_TIMEOUT env var.
(WebDriverTestRunnerW3C._is_test): Fix check for support files.
(WebDriverTestRunnerW3C.run): Pass the timeout as parameter to WebDriverW3CExecutor.run().
* Scripts/webkitpy/webdriver_tests/webdriver_w3c_executor.py:
(do_delayed_imports): Import pytest_runner here to avoid cycles.
(WebDriverW3CExecutor.__init__): Call do_delayed_imports() if needed.
(WebDriverW3CExecutor.run): Use pytest_runner.

WebDriverTests:

Remove conftest.py since pytest_timeout plugin is now always loaded from the command line.

* imported/w3c/conftest.py: Removed.

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

20 months agoBuild should fail early is needed Perl modules are not installed
tpopela@redhat.com [Thu, 14 Dec 2017 14:08:20 +0000 (14:08 +0000)]
Build should fail early is needed Perl modules are not installed
https://bugs.webkit.org/show_bug.cgi?id=180137

Reviewed by Michael Catanzaro.

Don't finish the configure successfully if the required Perl modules
are not installed. Start to require modules that are needed for
WPE/GTK+ ports.

* Source/cmake/FindPerlModules.cmake: Copied from
https://github.com/KDE/kdelibs4support/blob/master/cmake/FindPerlModules.cmake
and made it WebKit style compliant.
* Source/cmake/WebKitCommon.cmake:

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

20 months ago[GTK] Gardening bug after r225898
magomez@igalia.com [Thu, 14 Dec 2017 13:28:23 +0000 (13:28 +0000)]
[GTK] Gardening bug after r225898
https://bugs.webkit.org/show_bug.cgi?id=180807

Unreviewed GTK+ test gardening after r225898. Updated test expectations and rebaselined
some tests.

* platform/gtk/TestExpectations:
* platform/gtk/mathml/opentype/horizontal-expected.png:
* platform/gtk/mathml/opentype/horizontal-expected.txt:
* platform/gtk/mathml/opentype/horizontal-munderover-expected.txt:
* platform/gtk/mathml/presentation/bug159513-expected.png:
* platform/gtk/mathml/presentation/bug159513-expected.txt:

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

20 months ago[EME] Add layout test for InitData and InitDataType in CENC encrypted event
commit-queue@webkit.org [Thu, 14 Dec 2017 11:43:10 +0000 (11:43 +0000)]
[EME] Add layout test for InitData and InitDataType in CENC encrypted event
https://bugs.webkit.org/show_bug.cgi?id=180430

Patch by Yacine Bandou <yacine.bandou_ext@softathome.com> on 2017-12-14
Reviewed by Xabier Rodriguez-Calvar.

This commit adds new layout tests in order to test the reception of the encrypted CENC
event with an expected initData and initDataType fields.

* media/content/encrypted/VideoClearKeyCenc.mp4: Added.
    This is a simple encrypted video file used for regular playback.
    It has been encrypted with BENTO4. https://www.bento4.com/

* media/content/encrypted/segments/VideoClearKeyCenc-seg-0.mp4: Added.
    This is a simple encrypted video fragment used in MSE playback.
    It has been fragmented and encrypted with BENTO4. https://www.bento4.com/

* media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-expected.txt: Added.
* media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-mse-expected.txt: Added.
* media/encrypted-media/clearKey/clearKey-encrypted-cenc-event-mse.html: Added.
    This is a test with MSE.

* media/encrypted-media/clearKey/clearKey-encrypted-cenc-event.html: Added.
    This is a test with a regular playback.

* media/encrypted-media/medias-enc.js: Added.
    This JavaScrit file lists the encrypted media wich will be used in encrypted-media tests.
    It gives all necessary informations about the encrypted media: path of the file or
    the path of the segments in MSE case, mimeType, initDataType and the encryption keys.

* media/media-source/media-source-loader-simple.js: Added.
    This JavaScript file provides a simple MSE implementation, reads the segments of the media and appends them
    in the appropriate SourceBuffer.

* platform/gtk/TestExpectations:
* platform/mac-elcapitan/TestExpectations:
* platform/mac-wk2/TestExpectations:
* platform/mac/TestExpectations:
* platform/wpe/TestExpectations:

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

20 months agoAdd a test freshness page.
dewei_zhu@apple.com [Thu, 14 Dec 2017 09:49:37 +0000 (09:49 +0000)]
Add a test freshness page.
https://bugs.webkit.org/show_bug.cgi?id=180126

Reviewed by Ryosuke Niwa.

Added a page to show freshness of a test.
The test freshness page reports on the same set of tests as the one shown in the summary page.
Use a logistic function to evaluate the freshness of the data points.
This function has the desired property which increase dramatically when it close to the center of the graph.
'acceptableLastDataPointDurationInHour' configs the center of the graph.

* public/include/manifest-generator.php:
* public/v3/components/freshness-indicator.js: Added.
(FreshnessIndicator): A cell of the test freshness table, color will transit from green to red.
(FreshnessIndicator.prototype.update): Update the the data point information and triggers
the cell to re-render if anything changes.
(FreshnessIndicator.prototype._renderIndicator): Re-render the indicator.
(FreshnessIndicator.prototype.render): Render the box color base on a logistic function.
(FreshnessIndicator.prototype._createIndicator):
(FreshnessIndicator.htmlTemplate):
(FreshnessIndicator.cssTemplate):
* public/v3/index.html:
* public/v3/main.js: Added test freshness page.
(main):
* public/v3/models/build-request.js: Refactored waitingTime function to make it reusable.
(BuildRequest.formatTimeInterval): Format time interval in million seconds to more user friendly text.
(BuildRequest.prototype.waitingTime):
* public/v3/pages/test-freshness-page.js: Added.
(TestFreshnessPage):
(TestFreshnessPage.prototype.name):
(TestFreshnessPage.prototype._loadConfig): Load config from summary page configurations.
(TestFreshnessPage.prototype.open):
(TestFreshnessPage.prototype._fetchTestResults):
(TestFreshnessPage.prototype.render):
(TestFreshnessPage.prototype._renderTable):
(TestFreshnessPage.prototype._isValidPlatformMetricCombination): Return whether a platform
and metric combination is valid.
(TestFreshnessPage.prototype._constructTableCell):
(TestFreshnessPage.cssTemplate):
(TestFreshnessPage.prototype.routeName):
* server-tests/api-manifest-tests.js: Added 'warningHourBaseline' so that we can config the
parameter of logistic funciton.
* unit-tests/build-request-tests.js: Added unit tests for formatTimeInterval.

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

20 months agoMake GraphicsLayer::dumpProperties dump m_offsetFromRenderer
commit-queue@webkit.org [Thu, 14 Dec 2017 09:39:59 +0000 (09:39 +0000)]
Make GraphicsLayer::dumpProperties dump m_offsetFromRenderer
https://bugs.webkit.org/show_bug.cgi?id=180473

Source/WebCore:

Patch by Frederic Wang <fwang@igalia.com> on 2017-12-14
Reviewed by Antonio Gomes.

No new tests, this is just a new debug info.

* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::dumpProperties const): Dump the offset from renderer if nonzero.

LayoutTests:

Update test expectations to include the "offset from renderer" values. Existing tests insert
the output of layerTreeAsText into some divs which may cause the corresponding GraphicsLayers
to become slightly taller. We thus make the necessary adjustments.

Patch by Frederic Wang <fwang@igalia.com> on 2017-12-14
Reviewed by Antonio Gomes.

* compositing/backing/no-backing-for-clip-expected.txt:
* compositing/backing/no-backing-for-clip-overlap-expected.txt:
* compositing/backing/transform-transition-from-outside-view-expected.txt:
* compositing/bounds-in-flipped-writing-mode-expected.txt:
* compositing/columns/composited-in-paginated-rl-expected.txt:
* compositing/columns/composited-lr-paginated-repaint-expected.txt:
* compositing/columns/composited-rl-paginated-repaint-expected.txt:
* compositing/contents-format/subpixel-antialiased-nested-layer-expected.txt:
* compositing/contents-format/subpixel-antialiased-text-configs-antialiasing-style-expected.txt:
* compositing/contents-format/subpixel-antialiased-text-configs-expected.txt:
* compositing/contents-format/subpixel-antialiased-text-images-expected.txt:
* compositing/contents-format/subpixel-antialiased-text-traversal-expected.txt:
* compositing/contents-format/subpixel-antialiased-text-visibility-expected.txt:
* compositing/contents-opaque/overflow-hidden-child-layers-expected.txt:
* compositing/filters/sw-layer-overlaps-hw-shadow-expected.txt:
* compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow-expected.txt:
* compositing/filters/sw-shadow-overlaps-hw-shadow-expected.txt:
* compositing/geometry/bounds-ignores-hidden-composited-descendant-expected.txt:
* compositing/geometry/bounds-ignores-hidden-dynamic-expected.txt:
* compositing/geometry/bounds-ignores-hidden-expected.txt:
* compositing/geometry/clip-expected.txt:
* compositing/geometry/clip-inside-expected.txt:
* compositing/geometry/fixed-position-flipped-writing-mode-expected.txt:
* compositing/geometry/flipped-writing-mode-expected.txt:
* compositing/geometry/foreground-layer-expected.txt:
* compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
* compositing/geometry/limit-layer-bounds-fixed-expected.txt:
* compositing/geometry/limit-layer-bounds-fixed-positioned-expected.txt:
* compositing/geometry/limit-layer-bounds-opacity-transition-expected.txt:
* compositing/geometry/limit-layer-bounds-positioned-expected.txt:
* compositing/geometry/limit-layer-bounds-positioned-transition-expected.txt:
* compositing/geometry/limit-layer-bounds-transformed-expected.txt:
* compositing/iframes/composited-parent-iframe-expected.txt:
* compositing/iframes/connect-compositing-iframe-delayed-expected.txt:
* compositing/iframes/connect-compositing-iframe-expected.txt:
* compositing/iframes/connect-compositing-iframe2-expected.txt:
* compositing/iframes/connect-compositing-iframe3-expected.txt:
* compositing/iframes/enter-compositing-iframe-expected.txt:
* compositing/iframes/iframe-resize-expected.txt:
* compositing/iframes/overlapped-iframe-expected.txt:
* compositing/iframes/page-cache-layer-tree-expected.txt:
* compositing/iframes/scrolling-iframe-expected.txt:
* compositing/images/clip-on-directly-composited-image-expected.txt:
* compositing/ios/overflow-scroll-touch-tiles-expected.txt:
* compositing/layer-creation/fixed-overlap-extent-expected.txt:
* compositing/layer-creation/fixed-overlap-extent-rtl-expected.txt:
* compositing/layer-creation/fixed-position-under-transform-expected.txt:
* compositing/layer-creation/mismatched-rotated-transform-animation-overlap-expected.txt:
* compositing/layer-creation/mismatched-rotated-transform-transition-overlap-expected.txt:
* compositing/layer-creation/mismatched-transform-transition-overlap-expected.txt:
* compositing/layer-creation/multiple-keyframes-animation-overlap-expected.txt:
* compositing/layer-creation/overflow-scroll-overlap-expected.txt:
* compositing/layer-creation/overlap-animation-clipping-expected.txt:
* compositing/layer-creation/overlap-animation-expected.txt:
* compositing/layer-creation/overlap-child-layer-expected.txt:
* compositing/layer-creation/overlap-transformed-layer-expected.txt:
* compositing/layer-creation/overlap-transforms-expected.txt:
* compositing/layer-creation/rotate3d-overlap-expected.txt:
* compositing/layer-creation/scale-rotation-animation-overlap-expected.txt:
* compositing/layer-creation/scale-rotation-transition-overlap-expected.txt:
* compositing/layer-creation/stacking-context-overlap-nested-expected.txt:
* compositing/layer-creation/translate-animation-overlap-expected.txt:
* compositing/layer-creation/translate-scale-animation-overlap-expected.txt:
* compositing/layer-creation/translate-scale-transition-overlap-expected.txt:
* compositing/layer-creation/translate-transition-overlap-expected.txt:
* compositing/layer-creation/will-change-layer-creation-expected.txt:
* compositing/overflow/clip-descendents-expected.txt:
* compositing/overflow/overflow-scrollbar-layer-positions-expected.txt:
* compositing/repaint/fixed-background-scroll-expected.txt:
* compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint-expected.txt:
* compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt:
* compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt:
* compositing/repaint/repaint-on-layer-grouping-change-expected.txt:
* compositing/rtl/rtl-absolute-overflow-expected.txt:
* compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt:
* compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt:
* compositing/scrolling/touch-scroll-to-clip-expected.txt:
* compositing/tiling/tiled-mask-inwindow-expected.txt:
* compositing/tiling/tiled-reflection-inwindow-expected.txt:
* compositing/tiling/transform-origin-tiled-expected.txt:
* compositing/visible-rect/coverage-clipped-expected.txt:
* compositing/visible-rect/coverage-scrolling-expected.txt:
* fast/scrolling/ios/overflow-scroll-touch-expected.txt:
* fast/scrolling/ios/subpixel-overflow-scrolling-with-ancestor-expected.txt:
* platform/gtk/compositing/geometry/composited-in-columns-expected.txt:
* platform/gtk/compositing/iframes/invisible-nested-iframe-show-expected.txt:
* platform/gtk/compositing/layer-creation/overlap-animation-container-expected.txt:
* platform/gtk/compositing/layer-creation/overlap-animation-expected.txt:
* platform/gtk/compositing/layer-creation/will-change-layer-creation-expected.txt:
* platform/gtk/compositing/overflow/composited-scrolling-creates-a-stacking-container-expected.txt:
* platform/gtk/compositing/overflow/composited-scrolling-paint-phases-expected.txt:
* platform/ios-wk2/compositing/backing/no-backing-for-clip-expected.txt:
* platform/ios-wk2/compositing/backing/no-backing-for-clip-overlap-expected.txt:
* platform/ios-wk2/compositing/columns/composited-in-paginated-rl-expected.txt:
* platform/ios-wk2/compositing/columns/composited-lr-paginated-repaint-expected.txt:
* platform/ios-wk2/compositing/columns/composited-rl-paginated-repaint-expected.txt:
* platform/ios-wk2/compositing/geometry/bounds-ignores-hidden-composited-descendant-expected.txt:
* platform/ios-wk2/compositing/geometry/composited-in-columns-expected.txt:
* platform/ios-wk2/compositing/geometry/limit-layer-bounds-fixed-expected.txt:
* platform/ios-wk2/compositing/geometry/limit-layer-bounds-fixed-positioned-expected.txt:
* platform/ios-wk2/compositing/iframes/composited-parent-iframe-expected.txt:
* platform/ios-wk2/compositing/iframes/connect-compositing-iframe-delayed-expected.txt:
* platform/ios-wk2/compositing/iframes/connect-compositing-iframe-expected.txt:
* platform/ios-wk2/compositing/iframes/connect-compositing-iframe2-expected.txt:
* platform/ios-wk2/compositing/iframes/connect-compositing-iframe3-expected.txt:
* platform/ios-wk2/compositing/iframes/enter-compositing-iframe-expected.txt:
* platform/ios-wk2/compositing/iframes/iframe-resize-expected.txt:
* platform/ios-wk2/compositing/iframes/leave-compositing-iframe-expected.txt:
* platform/ios-wk2/compositing/iframes/overlapped-iframe-expected.txt:
* platform/ios-wk2/compositing/iframes/page-cache-layer-tree-expected.txt:
* platform/ios-wk2/compositing/iframes/scrolling-iframe-expected.txt:
* platform/ios-wk2/compositing/layer-creation/fixed-position-under-transform-expected.txt:
* platform/ios-wk2/compositing/repaint/fixed-background-scroll-expected.txt:
* platform/ios-wk2/compositing/rtl/rtl-absolute-overflow-expected.txt:
* platform/ios-wk2/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt:
* platform/ios-wk2/compositing/rtl/rtl-fixed-overflow-expected.txt:
* platform/ios-wk2/compositing/rtl/rtl-iframe-absolute-overflow-expected.txt:
* platform/ios-wk2/compositing/scrolling/touch-scroll-to-clip-expected.txt:
* platform/ios-wk2/compositing/tiling/backface-preserve-3d-tiled-expected.txt:
* platform/ios-wk2/compositing/tiling/rotated-tiled-clamped-expected.txt:
* platform/ios-wk2/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
* platform/ios-wk2/compositing/tiling/tiled-mask-inwindow-expected.txt:
* platform/ios-wk2/compositing/tiling/tiled-reflection-inwindow-expected.txt:
* platform/ios-wk2/compositing/tiling/transform-origin-tiled-expected.txt:
* platform/ios-wk2/compositing/visibility/visibility-image-layers-dynamic-expected.txt:
* platform/ios-wk2/compositing/visible-rect/2d-transformed-expected.txt:
* platform/ios-wk2/compositing/visible-rect/3d-transformed-expected.txt:
* platform/ios-wk2/compositing/visible-rect/clipped-visible-rect-expected.txt:
* platform/ios-wk2/compositing/visible-rect/coverage-clipped-expected.txt:
* platform/ios-wk2/compositing/visible-rect/coverage-scrolling-expected.txt:
* platform/ios-wk2/compositing/visible-rect/flipped-preserve-3d-expected.txt:
* platform/ios-wk2/compositing/visible-rect/iframe-and-layers-expected.txt:
* platform/ios-wk2/compositing/visible-rect/nested-transform-expected.txt:
* platform/ios/compositing/contents-format/subpixel-antialiased-nested-layer-expected.txt:
* platform/ios/compositing/contents-format/subpixel-antialiased-text-traversal-expected.txt:
* platform/ios/compositing/filters/sw-layer-overlaps-hw-shadow-expected.txt:
* platform/ios/compositing/geometry/fixed-position-flipped-writing-mode-expected.txt:
* platform/ios/compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
* platform/ios/compositing/iframes/invisible-nested-iframe-show-expected.txt:
* platform/ios/compositing/images/clip-on-directly-composited-image-expected.txt:
* platform/ios/compositing/layer-creation/overlap-animation-clipping-expected.txt:
* platform/ios/compositing/layer-creation/overlap-animation-container-expected.txt:
* platform/ios/compositing/layer-creation/scale-rotation-animation-overlap-expected.txt:
* platform/ios/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
* platform/ios/compositing/overflow/composited-scrolling-creates-a-stacking-container-expected.txt:
* platform/ios/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt:
* platform/ios/compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt:
* platform/ios/compositing/visible-rect/3d-transform-style-expected.txt:
* platform/ios/compositing/visible-rect/animated-expected.txt:
* platform/ios/compositing/visible-rect/animated-from-none-expected.txt:
* platform/ios/fast/scrolling/ios/overflow-scrolling-ancestor-clip-expected.txt:
* platform/ios/fast/scrolling/ios/overflow-scrolling-ancestor-clip-size-expected.txt:
* platform/ios/fast/scrolling/ios/textarea-scroll-touch-expected.txt:
* platform/ios/media/video-play-glyph-composited-outside-overflow-scrolling-touch-container-expected.txt:
* platform/mac-elcapitan/compositing/contents-opaque/control-layer-expected.txt:
* platform/mac-elcapitan/compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint-expected.txt:
* platform/mac-sierra-wk1/compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint-expected.txt:
* platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt:
* platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt:
* platform/mac-wk1/compositing/tiling/tiled-mask-inwindow-expected.txt:
* platform/mac-wk1/compositing/tiling/tiled-reflection-inwindow-expected.txt:
* platform/mac-wk1/compositing/tiling/transform-origin-tiled-expected.txt:
* platform/mac-wk2/compositing/rtl/rtl-absolute-overflow-expected.txt:
* platform/mac-wk2/compositing/rtl/rtl-absolute-overflow-scrolled-expected.txt:
* platform/mac-wk2/compositing/rtl/rtl-fixed-overflow-expected.txt:
* platform/mac-wk2/compositing/tiling/rotated-tiled-clamped-expected.txt:
* platform/mac-wk2/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
* platform/mac/compositing/contents-format/subpixel-antialiased-text-configs-antialiasing-style-expected.txt:
* platform/mac/compositing/contents-format/subpixel-antialiased-text-configs-expected.txt:
* platform/mac/compositing/contents-format/subpixel-antialiased-text-images-expected.txt:
* platform/mac/compositing/contents-format/subpixel-antialiased-text-traversal-expected.txt:
* platform/mac/compositing/contents-format/subpixel-antialiased-text-visibility-expected.txt:
* platform/mac/compositing/contents-opaque/control-layer-expected.txt:
* platform/mac/compositing/geometry/composited-in-columns-expected.txt:
* platform/mac/compositing/iframes/invisible-nested-iframe-show-expected.txt:
* platform/mac/compositing/layer-creation/overlap-animation-container-expected.txt:
* platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
* platform/mac/compositing/overflow/composited-scrolling-creates-a-stacking-container-expected.txt:
* platform/mac/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt:
* platform/mac/compositing/tiling/backface-preserve-3d-tiled-expected.txt:
* platform/mac/compositing/tiling/rotated-tiled-clamped-expected.txt:
* platform/mac/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
* platform/mac/compositing/visibility/visibility-image-layers-dynamic-expected.txt:
* platform/mac/compositing/visible-rect/2d-transformed-expected.txt:
* platform/mac/compositing/visible-rect/3d-transform-style-expected.txt:
* platform/mac/compositing/visible-rect/3d-transformed-expected.txt:
* platform/mac/compositing/visible-rect/animated-expected.txt:
* platform/mac/compositing/visible-rect/animated-from-none-expected.txt:
* platform/mac/compositing/visible-rect/clipped-visible-rect-expected.txt:
* platform/mac/compositing/visible-rect/flipped-preserve-3d-expected.txt:
* platform/mac/compositing/visible-rect/iframe-and-layers-expected.txt:
* platform/mac/compositing/visible-rect/nested-transform-expected.txt:
* tiled-drawing/scrolling/fixed/four-bars-zoomed-expected.txt:
* tiled-drawing/scrolling/frames/fixed-inside-frame-expected.txt:
* tiled-drawing/tile-coverage-iframe-to-zero-coverage-expected.txt:

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

20 months agoREGRESSION(r225769): Build errors with constexpr std::tie on older gcc
utatane.tea@gmail.com [Thu, 14 Dec 2017 08:17:56 +0000 (08:17 +0000)]
REGRESSION(r225769): Build errors with constexpr std::tie on older gcc
https://bugs.webkit.org/show_bug.cgi?id=180692

Reviewed by Carlos Garcia Campos.

Source/WebCore:

* platform/graphics/FontSelectionAlgorithm.h:
(WebCore::FontSelectionRange::operator== const):
(WebCore::FontSelectionRequest::tied const):
(WebCore::FontSelectionCapabilities::tied const):
(WebCore::FontSelectionSpecifiedCapabilities:: const):

Source/WTF:

Due to libstdc++'s bug[1], std::tie is not annotated with constexpr in libstdc++ 5.
This patch adds WTF::tie for a work around. Since we do not want to
include <tuple> in StdLibExtras.h, we define this function for all
the compilers.

[1]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65978

* wtf/StdLibExtras.h:

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

20 months agoWeb Inspector: Network Tab - Make text filter just a URL filter and update incrementally
commit-queue@webkit.org [Thu, 14 Dec 2017 07:45:29 +0000 (07:45 +0000)]
Web Inspector: Network Tab - Make text filter just a URL filter and update incrementally
https://bugs.webkit.org/show_bug.cgi?id=180796

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-12-13
Reviewed by Brian Burg.

Revert the Network Tab's text filter back to being just a URL filter with the
normal behaviors of our other text filters that update as you type (incremental).
This also renames the "text filter" to "url filter" everywhere in the ContentView
for clarity. A follow-up change will make the url filter be case-insensitive
to fully match the filter bars in other tabs.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.get filterNavigationItems):
(WI.NetworkTableContentView.prototype._checkURLFilterAgainstFinishedResource):
(WI.NetworkTableContentView.prototype._updateURLFilterActiveIndicator):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFinish):
(WI.NetworkTableContentView.prototype._resourceLoadingDidFail):
(WI.NetworkTableContentView.prototype._hasURLFilter):
(WI.NetworkTableContentView.prototype._hasActiveFilter):
(WI.NetworkTableContentView.prototype._passURLFilter):
(WI.NetworkTableContentView.prototype._passFilter):
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._resetFilters):
(WI.NetworkTableContentView.prototype._urlFilterDidChange):
(WI.NetworkTableContentView.prototype._checkTextFilterAgainstFinishedResource): Deleted.
(WI.NetworkTableContentView.prototype._checkTextFilterAgainstFailedResource): Deleted.
(WI.NetworkTableContentView.prototype._updateTextFilterActiveIndicator): Deleted.
(WI.NetworkTableContentView.prototype._hasTextFilter): Deleted.
(WI.NetworkTableContentView.prototype._passTextFilter): Deleted.
(WI.NetworkTableContentView.prototype._textFilterDidChange): Deleted.

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

20 months agoAdd more auto fill button types
dbates@webkit.org [Thu, 14 Dec 2017 07:00:57 +0000 (07:00 +0000)]
Add more auto fill button types
https://bugs.webkit.org/show_bug.cgi?id=180651
<rdar://problem/35891125>
And
<rdar://problem/35977943>

Add macOS El Capitan-specific and Windows expected results. I included results from the Apple Windows bot
as a baseline. The results are incorrect as they render the password field text using bullets instead of
plain text. Further investigation required.

* platform/mac-elcapitan/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt: Added.
* platform/win/fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button-expected.txt: Added.
* platform/win/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt: Added.

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

20 months agoOctane/richards regressed by a whopping 20% because eliminateCommonSubexpressions...
fpizlo@apple.com [Thu, 14 Dec 2017 06:04:51 +0000 (06:04 +0000)]
Octane/richards regressed by a whopping 20% because eliminateCommonSubexpressions has a weird fixpoint requirement
https://bugs.webkit.org/show_bug.cgi?id=180783

Reviewed by Saam Barati.

This fixes the regression by fixpointing CSE. We need to fixpoint CSE because of this case:

    BB#1:
        a: Load(@x)
        b: Load(@x)
        c: Load(@b)
    BB#2:
        d: Load(@b)
    BB#3:
        e: Load(@b)

Lets assume that #3 loops around to #2, so to eliminate @d, we need to prove that it's redundant
with both @c and @e. The problem is that by the time we get to @d, the CSE state will look like
this:

    BB#1:
        a: Load(@x)
        b: Load(@x)
        c: Load(@a)
        memoryAtTail: {@x=>@a, @a=>@c}
    BB#2:
        d: Load(@a) [sic]
        memoryAtTail: {@b=>@d}
    BB#3:
        e: Load(@b)
        memoryAtTail: {@b=>@e} [sic]

Note that #3's atTail map is keyed on @b, which was the old (no longer canonical) version of @a.
But @d's children were already substituted, so it refers to @a. Since @a is not in #3's atTail
map, we don't find it and leave the redundancy.

I think that the cleanest solution is to fixpoint. CSE is pretty cheap, so hopefully we can afford
this. It fixes the richards regression, since richards is super dependent on B3 CSE.

* b3/B3EliminateCommonSubexpressions.cpp: Logging.
* b3/B3Generate.cpp:
(JSC::B3::generateToAir): Fix the bug.
* b3/air/AirReportUsedRegisters.cpp:
(JSC::B3::Air::reportUsedRegisters): Logging.
* dfg/DFGByteCodeParser.cpp:
* dfg/DFGSSAConversionPhase.cpp:
(JSC::DFG::SSAConversionPhase::run): Don't generate EntrySwitch if we don't need it (makes IR easier to read).
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::lower): Don't generate EntrySwitch if we don't need it (makes IR easier to read).

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

20 months agoREGRESSION: Web Inspector: Opening inspector crashes page if there are empty resources
commit-queue@webkit.org [Thu, 14 Dec 2017 04:47:34 +0000 (04:47 +0000)]
REGRESSION: Web Inspector: Opening inspector crashes page if there are empty resources
https://bugs.webkit.org/show_bug.cgi?id=180787
<rdar://problem/35934838>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-12-13
Reviewed by Brian Burg.

Source/JavaScriptCore:

* inspector/ContentSearchUtilities.cpp:
(Inspector::ContentSearchUtilities::findMagicComment):
For empty / null strings just return. There is no use
trying to search them for a long common syntax.

Source/WebInspectorUI:

* UserInterface/Test/TestUtilities.js:
Add a generic sanitizeURL used by many tests.

* UserInterface/TestStub.html:
Include TestUtilities.

LayoutTests:

* inspector/page/resources/empty.css: Added.
* inspector/page/resources/empty.js: Added.
* inspector/page/empty-or-missing-resources-expected.txt: Added.
* inspector/page/empty-or-missing-resources.html: Added.
Test no crashes inspecting a page with empty/missing resources.
Previously the test would crash.

* inspector/canvas/recording-webgl-snapshots.html:
* inspector/canvas/resources/create-context-utilities.js:
* inspector/canvas/resources/recording-utilities.js:
* inspector/css/getAllStyleSheets.html:
* inspector/css/stylesheet-events-basic.html:
* inspector/css/stylesheet-events-imports.html:
* inspector/css/stylesheet-events-multiple-documents.html:
* inspector/worker/console-basic.html:
* inspector/worker/debugger-scripts.html:
* inspector/worker/resources-in-worker.html:
* inspector/worker/runtime-basic.html:
* inspector/worker/worker-create-and-terminate.html:
Promote sanitizeURL to a TestUtility function since it is common.

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

20 months agoArrow functions need their own structure because they have different properties than...
sbarati@apple.com [Thu, 14 Dec 2017 04:10:02 +0000 (04:10 +0000)]
Arrow functions need their own structure because they have different properties than sloppy functions
https://bugs.webkit.org/show_bug.cgi?id=180779
<rdar://problem/35814591>

Reviewed by Mark Lam.

JSTests:

* stress/arrow-function-needs-its-own-structure.js: Added.
(assert):
(readPrototype):
(noInline.let.f1):
(noInline):

Source/JavaScriptCore:

We were using the same structure for sloppy functions and
arrow functions. This broke our IC caching machinery because
these two types of functions actually have different properties.
This patch gives them different structures.

* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileNewFunction):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):
* runtime/FunctionConstructor.cpp:
(JSC::constructFunctionSkippingEvalEnabledCheck):
* runtime/JSFunction.cpp:
(JSC::JSFunction::selectStructureForNewFuncExp):
(JSC::JSFunction::create):
* runtime/JSFunction.h:
* runtime/JSFunctionInlines.h:
(JSC::JSFunction::createWithInvalidatedReallocationWatchpoint):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::arrowFunctionStructure const):

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

20 months agoFix copy/paste error in ProcessPoolConfiguration::createWithWebsiteDataStoreConfigura...
cdumez@apple.com [Thu, 14 Dec 2017 03:05:39 +0000 (03:05 +0000)]
Fix copy/paste error in ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration()
https://bugs.webkit.org/show_bug.cgi?id=180782

Reviewed by Youenn Fablet.

* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):

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

20 months agoAdd more auto fill button types
dbates@webkit.org [Thu, 14 Dec 2017 02:37:48 +0000 (02:37 +0000)]
Add more auto fill button types
https://bugs.webkit.org/show_bug.cgi?id=180651
<rdar://problem/35891125>
And
<rdar://problem/35977943>

Update expected results. I included results from the GTK bot as a baseline. The results are incorrect as they
render the password field text using bullets instead of plain text. This likely indicates that the bots did not
regenerate the user-agent style sheet.

* platform/gtk/fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button-expected.txt: Added.
* platform/gtk/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt: Added.
* platform/ios/fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button-expected.txt:
* platform/ios/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt:
* platform/mac/fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button-expected.txt:
* platform/mac/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt:

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

20 months ago[WPE] WebCrypto should be a public option.
clopez@igalia.com [Thu, 14 Dec 2017 01:45:03 +0000 (01:45 +0000)]
[WPE] WebCrypto should be a public option.
https://bugs.webkit.org/show_bug.cgi?id=180780

Reviewed by Konstantin Tokarev.

Make ENABLE_WEB_CRYPTO public and lower the dependency requirements
when this option is not enabled. This is also how the GTK+ port
configures the visibility of this option and its dependencies.

* Source/cmake/OptionsWPE.cmake:

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

20 months agoInferredValue should use IsoSubspace
fpizlo@apple.com [Thu, 14 Dec 2017 01:12:03 +0000 (01:12 +0000)]
InferredValue should use IsoSubspace
https://bugs.webkit.org/show_bug.cgi?id=180738

Reviewed by Keith Miller.

This moves InferredValue into an IsoSubspace and then takes advantage of this to get rid of
its UnconditionalFinalizer.

* JavaScriptCore.xcodeproj/project.pbxproj:
* heap/Heap.cpp:
(JSC::Heap::finalizeUnconditionalFinalizers):
* runtime/InferredValue.cpp:
(JSC::InferredValue::visitChildren):
(JSC::InferredValue::ValueCleanup::ValueCleanup): Deleted.
(JSC::InferredValue::ValueCleanup::~ValueCleanup): Deleted.
(JSC::InferredValue::ValueCleanup::finalizeUnconditionally): Deleted.
* runtime/InferredValue.h:
(JSC::InferredValue::subspaceFor):
* runtime/InferredValueInlines.h: Added.
(JSC::InferredValue::finalizeUnconditionally):
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

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

20 months agoMarked security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement...
jlewis3@apple.com [Thu, 14 Dec 2017 01:07:23 +0000 (01:07 +0000)]
Marked security/contentSecurityPolicy/plugins-types-allows-youtube-plugin-replacement.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=173742

Unreviewed test gardening

* platform/mac-wk2/TestExpectations:

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

20 months agoFix the Windows build after <https://trac.webkit.org/changeset/225879>
dbates@webkit.org [Thu, 14 Dec 2017 01:02:14 +0000 (01:02 +0000)]
Fix the Windows build after <https://trac.webkit.org/changeset/225879>
(https://bugs.webkit.org/show_bug.cgi?id=180651)

* html/TextFieldInputType.cpp:
(WebCore::autoFillButtonTypeToAccessibilityLabel):
(WebCore::autoFillButtonTypeToAutoFillButtonText):
(WebCore::autoFillButtonTypeToAutoFillButtonPseudoClassName):

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

20 months agoWeb Inspector: add instrumentation for ImageBitmapRenderingContext
webkit@devinrousso.com [Thu, 14 Dec 2017 00:57:35 +0000 (00:57 +0000)]
Web Inspector: add instrumentation for ImageBitmapRenderingContext
https://bugs.webkit.org/show_bug.cgi?id=180736

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/protocol/Canvas.json:
* inspector/scripts/codegen/generator.py:

Source/WebCore:

Tests: inspector/canvas/create-context-bitmaprenderer.html
       inspector/canvas/requestContent-bitmaprenderer.html
       inspector/canvas/resolveCanvasContext-bitmaprenderer.html

* CMakeLists.txt:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:

* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::getContext):
(WebCore::HTMLCanvasElement::createContextBitmapRenderer):
Support passing an optional settings dictionary when creating an ImageBitmapRenderingContext.

* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::requestContent):
(WebCore::contextAsScriptValue):

* bindings/js/CallTracerTypes.h:

* inspector/InspectorCanvas.h:
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::buildObjectForCanvas):
(WebCore::InspectorCanvas::indexForData):
(WebCore::InspectorCanvas::buildAction):
(WebCore::InspectorCanvas::buildArrayForImageBitmap): Deleted.

Source/WebInspectorUI:

* UserInterface/Base/ImageUtilities.js:
(WI.ImageUtilities.promisifyLoad):
(WI.ImageUtilities.imageFromImageBitmap):

* UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
(WI.Canvas.displayNameForContextType):

* UserInterface/Models/NativeFunctionParameters.js:

* UserInterface/Models/Recording.js:
(WI.Recording.displayNameForSwizzleType):
(WI.Recording.prototype.async swizzle):

* UserInterface/Views/RecordingActionTreeElement.js:
(WI.RecordingActionTreeElement._generateDOM):
(WI.RecordingActionTreeElement._generateDOM.createParameterElement):

LayoutTests:

* inspector/canvas/context-attributes-expected.txt:
* inspector/canvas/context-attributes.html:
* inspector/canvas/create-context-bitmaprenderer-expected.txt: Added.
* inspector/canvas/create-context-bitmaprenderer.html: Added.
* inspector/canvas/recording-2d-expected.txt:
* inspector/canvas/recording-2d.html:
* inspector/canvas/requestContent-bitmaprenderer-expected.txt: Added.
* inspector/canvas/requestContent-bitmaprenderer.html: Added.
* inspector/canvas/resolveCanvasContext-bitmaprenderer-expected.txt: Added.
* inspector/canvas/resolveCanvasContext-bitmaprenderer.html: Added.

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

20 months agoTake a value driven approach to how we emit structure checks in TypeCheckHoistingPhas...
sbarati@apple.com [Thu, 14 Dec 2017 00:31:58 +0000 (00:31 +0000)]
Take a value driven approach to how we emit structure checks in TypeCheckHoistingPhase to obviate the need for static_assert guards
https://bugs.webkit.org/show_bug.cgi?id=180771

Reviewed by JF Bastien.

* dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::run):

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

20 months agoAdd more auto fill button types
dbates@webkit.org [Thu, 14 Dec 2017 00:29:31 +0000 (00:29 +0000)]
Add more auto fill button types
https://bugs.webkit.org/show_bug.cgi?id=180651
<rdar://problem/35891125>
And
<rdar://problem/35977943>

Reviewed by Brent Fulgham.

Source/WebCore:

Tests: fast/forms/auto-fill-button/input-autofilled-disabled-strong-password-auto-fill-button.html
       fast/forms/auto-fill-button/input-autofilled-readonly-strong-password-auto-fill-button.html
       fast/forms/auto-fill-button/input-disabled-strong-password-and-strong-confirmation-password-auto-fill-buttons.html
       fast/forms/auto-fill-button/input-readonly-strong-password-and-strong-confirmation-password-auto-fill-buttons.html
       fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button.html
       fast/forms/auto-fill-button/input-strong-password-auto-fill-button.html

* English.lproj/Localizable.strings:
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): Add strings for new auto fill button types.

* css/CSSSelector.cpp:
(WebCore::CSSSelector::selectorText const):
* css/CSSSelector.h:
* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::checkOne const):
* css/SelectorCheckerTestFunctions.h:
(WebCore::isAutofilledStrongPassword):
* css/SelectorPseudoClassAndCompatibilityElementMap.in:
* css/html.css:
(input::-webkit-strong-password-auto-fill-button):
(input:-webkit-autofill-strong-password):
(input:-webkit-autofill, input:-webkit-autofill-strong-password):
(input:-webkit-autofill): Deleted.
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::addPseudoClassType):
Add new CSS pseudo class and CSS styles.

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::reset): Hide the auto fill button when the form is reset. This is also called
whenever we suspend the page to put it into the page cache.
(WebCore::HTMLInputElement::setShowAutoFillButton): Modified to update the editability of the inner text element
and invalidate styles for the subtree as the editability may have changed depending on the auto fill button type.

(WebCore::autoFillStrongPasswordMaskImage):
(WebCore::HTMLInputElement::createInnerTextStyle):
(WebCore::HTMLInputElement::createInnerTextStyle const): Deleted.
Adjust the look of the inner text field. This function is not const because we may need to resolve style to
generate a mask image.

* html/HTMLInputElement.h:
(WebCore::HTMLInputElement::autoFillButtonType const): Fix style nit; use a C++ style cast while I am in
this area.
(WebCore::HTMLInputElement::hasAutoFillStrongPasswordButton const): Added.

* html/HTMLTextAreaElement.cpp:
(WebCore::HTMLTextAreaElement::createInnerTextStyle):
(WebCore::HTMLTextAreaElement::createInnerTextStyle const): Deleted.
Made this non-const because HTMLInputElement::createInnerTextStyle() needs to be non-const. See above.

* html/HTMLTextAreaElement.h:
* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::isInnerTextElementEditable const):
(WebCore::HTMLTextFormControlElement::updateInnerTextElementEditability):
Extract out the query to determine if the inner text element is editable into a virtual function isInnerTextElementEditable()
and have updateInnerTextElementEditability() make use of it. By default a field is considered editable if it is not disabled
or read-only. We override updateInnerTextElementEditability() in HTMLInputElement to also consider the auto fill button type.

* html/HTMLTextFormControlElement.h:
* html/TextFieldInputType.cpp:
(WebCore::autoFillButtonTypeToAccessibilityLabel):
(WebCore::autoFillButtonTypeToAutoFillButtonText):
(WebCore::autoFillButtonTypeToAutoFillButtonPseudoClassName):
(WebCore::isAutoFillButtonTypeChanged):
(WebCore::TextFieldInputType::createAutoFillButton):
(WebCore::TextFieldInputType::updateAutoFillButton):
Support having text for the auto fill button.

* platform/LocalizedStrings.cpp:
(WebCore::AXAutoFillStrongPasswordLabel):
(WebCore::AXAutoFillStrongConfirmationPasswordLabel):
(WebCore::autoFillStrongPasswordLabel):
* platform/LocalizedStrings.h:
Add localized strings.

* rendering/RenderTextControlSingleLine.h: Disallow scrolling depending on the auto fill button type.

* testing/Internals.cpp:
(WebCore::toAutoFillButtonType):
* testing/Internals.h:
* testing/Internals.idl:
Add support for testing.

Source/WebKit:

Adds enumerators for the new auto fill button types.

* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
(toAutoFillButtonType):
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:
* WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp:
(toAutoFillButtonType):
* WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h:

LayoutTests:

* fast/forms/auto-fill-button/input-autofilled-disabled-strong-password-auto-fill-button-expected.html: Added.
* fast/forms/auto-fill-button/input-autofilled-disabled-strong-password-auto-fill-button.html: Added.
* fast/forms/auto-fill-button/input-autofilled-readonly-strong-password-auto-fill-button-expected.html: Added.
* fast/forms/auto-fill-button/input-autofilled-readonly-strong-password-auto-fill-button.html: Added.
* fast/forms/auto-fill-button/input-disabled-strong-password-and-strong-confirmation-password-auto-fill-buttons-expected.html: Added.
* fast/forms/auto-fill-button/input-disabled-strong-password-and-strong-confirmation-password-auto-fill-buttons.html: Added.
* fast/forms/auto-fill-button/input-readonly-strong-password-and-strong-confirmation-password-auto-fill-buttons-expected.html: Added.
* fast/forms/auto-fill-button/input-readonly-strong-password-and-strong-confirmation-password-auto-fill-buttons.html: Added.
* fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button.html: Added.
* fast/forms/auto-fill-button/input-strong-password-auto-fill-button.html: Added.
* platform/ios/fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button-expected.txt: Added.
* platform/ios/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt: Added.
* platform/mac/fast/forms/auto-fill-button/input-strong-confirmation-password-auto-fill-button-expected.txt: Added.
* platform/mac/fast/forms/auto-fill-button/input-strong-password-auto-fill-button-expected.txt: Added.

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

20 months agoCrash inside ImageLoader::updateFromElement()
rniwa@webkit.org [Thu, 14 Dec 2017 00:05:42 +0000 (00:05 +0000)]
Crash inside ImageLoader::updateFromElement()
https://bugs.webkit.org/show_bug.cgi?id=180769
<rdar://problem/35278782>

Reviewed by Antti Koivisto.

Fixed the crash by moving all call sites of ImageLoader::updateFromElement() to be post insertion callbacks
where it's safe to execute arbitrary scripts.

No new test since existing tests cover this with a newly added release assert in ImageLoader.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::insertedIntoAncestor):
(WebCore::HTMLImageElement::didFinishInsertingNode): Extracted from insertedIntoAncestor to call
selectImageSource or updateFromElement.
* html/HTMLImageElement.h: Made many member functions final.
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::didAttachRenderers): Delay the call to ImageLoader::updateFromElement() in
ImageInputType using a post style resolution callback.
* html/HTMLMetaElement.h:
* html/HTMLPictureElement.cpp:
(WebCore::HTMLPictureElement::sourcesChanged): Store the list of child image elements into a vector before
calling selectImageSource since each call may execute arbitrary scripts.
* html/HTMLSourceElement.cpp:
(WebCore::HTMLSourceElement::insertedIntoAncestor): Delay the call to ImageLoader::updateFromElement()
using a post style resolution callback.
(WebCore::HTMLSourceElement::didFinishInsertingNode): Extracted from insertedIntoAncestor.
* html/HTMLSourceElement.h:
* html/HTMLVideoElement.cpp:
(WebCore::HTMLVideoElement::didAttachRenderers):
(WebCore::HTMLVideoElement::updateAfterStyleResolution): Extracted from didAttachRenderers.
* html/HTMLVideoElement.h:
* html/ImageInputType.cpp:
(WebCore::ImageInputType::needsPostStyleResolutionCallback): Added. Returns true so that HTMLInputElement's
didAttachRenderers would register a post style resolution callback.
(WebCore::ImageInputType::updateAfterStyleResolution): Extracted from attach.
(WebCore::ImageInputType::attach): Deleted.
* html/ImageInputType.h:
* html/InputType.cpp:
(WebCore::InputType::needsPostStyleResolutionCallback): Added. All but ImageInputType returns false.
(WebCore::InputType::updateAfterStyleResolution): Added.
(WebCore::InputType::attach): Deleted.
* html/InputType.h:
* loader/ImageLoader.cpp:
(WebCore::ImageLoader::updateFromElement): Added a release assertion. There is no direct security implication
so there is no need to use RELEASE_ASSERT_WITH_SECURITY_IMPLICATION here.
* svg/SVGImageElement.cpp:
(WebCore::SVGImageElement::insertedIntoAncestor):
(WebCore::SVGImageElement::didFinishInsertingNode):
* svg/SVGImageElement.h:

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

20 months agoUnreviewed, rolling out r225864.
jlewis3@apple.com [Wed, 13 Dec 2017 23:58:37 +0000 (23:58 +0000)]
Unreviewed, rolling out r225864.

This caused the Layout test step to crash out on Debug testers

Reverted changeset:

"REGRESSION (r225789): API tests
WKProcessPool.InitialWarmedProcessUsed and
WebKit.WebsiteDataStoreCustomPaths are failing."
https://bugs.webkit.org/show_bug.cgi?id=180722
https://trac.webkit.org/changeset/225864

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

20 months agoRenderImage can be destroyed even before setting the style on it.
zalan@apple.com [Wed, 13 Dec 2017 22:13:32 +0000 (22:13 +0000)]
RenderImage can be destroyed even before setting the style on it.
https://bugs.webkit.org/show_bug.cgi?id=180767
<rdar://problem/33965995>

Reviewed by Simon Fraser.

Source/WebCore:

In certain cases, when the newly constructed renderer can't be inserted into the tree (parent can only have specific type of children etc),
RenderTreeUpdater destroys it right away. While destroying a RenderImage, the associated image resource assumes
that the image renderer has been initialized through RenderElement::initializeStyle(). This is an incorrect
assumption.
This patch also makes RenderImageResource's m_renderer a weak pointer.

Test: fast/images/crash-when-image-renderer-is-destroyed-before-calling-initializeStyle.html

* rendering/RenderImageResource.cpp:
(WebCore::RenderImageResource::initialize):
(WebCore::RenderImageResource::setCachedImage):
(WebCore::RenderImageResource::resetAnimation):
(WebCore::RenderImageResource::image const):
(WebCore::RenderImageResource::setContainerContext):
(WebCore::RenderImageResource::imageSize const):
* rendering/RenderImageResource.h:
(WebCore::RenderImageResource::renderer const):
* rendering/RenderImageResourceStyleImage.cpp:
(WebCore::RenderImageResourceStyleImage::shutdown):

LayoutTests:

* fast/images/crash-when-image-renderer-is-destroyed-before-calling-initializeStyle-expected.txt: Added.
* fast/images/crash-when-image-renderer-is-destroyed-before-calling-initializeStyle.html: Added.

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

20 months agoUpdate ContentFiltering.LazilyLoadPlatformFrameworks test to account for libwebrtc...
commit-queue@webkit.org [Wed, 13 Dec 2017 21:46:24 +0000 (21:46 +0000)]
Update ContentFiltering.LazilyLoadPlatformFrameworks test to account for libwebrtc using VideoProcessing framework
https://bugs.webkit.org/show_bug.cgi?id=180713
<rdar://problem/36003031>

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-13
Reviewed by Andy Estes.

Reenable the check for non High Sierra builds.

* TestWebKitAPI/Tests/WebKitCocoa/ContentFiltering.mm:
(-[LazilyLoadPlatformFrameworksController expectParentalControlsLoaded:networkExtensionLoaded:]):

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

20 months agoMarked accessibility/mac/html5-input-number.html as flaky on macOS.
jlewis3@apple.com [Wed, 13 Dec 2017 21:16:34 +0000 (21:16 +0000)]
Marked accessibility/mac/html5-input-number.html as flaky on macOS.
https://bugs.webkit.org/show_bug.cgi?id=180560

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

20 months agoUpdate the SVG use element's shadow trees explicitly before the style recall
rniwa@webkit.org [Wed, 13 Dec 2017 21:12:42 +0000 (21:12 +0000)]
Update the SVG use element's shadow trees explicitly before the style recall
https://bugs.webkit.org/show_bug.cgi?id=180729
<rdar://problem/36009806>

Reviewed by Antti Koivisto.

Update the SVG use element's shadow trees before start resolving styles. Document now has a hash set of all
connected SVG use elements with invalidated shadow trees. SVGUseElement adds itself to this set when its
shadow tree gets invalidated, or it gets newly connected to a document with the invalidated shadow tree.
SVGUseElement removes itself from this set when it updates its shadow tree or it gets disconnected from
a document with the invalidated shadow tree.

No new tests. Covered by existing tests.

* dom/Document.cpp:
(WebCore::Document::~Document): Assert that m_svgUseElements has been cleared.
(WebCore::Document::resolveStyle): Update the shadow trees of SVG use elements with invalidated shadow trees.
(WebCore::Document::addSVGUseElement): Added.
(WebCore::Document::removeSVGUseElement): Added.
* dom/Document.h:
(WebCore::Document::svgUseElements const): Added.
* dom/Element.cpp:
(WebCore::Element::cloneElementWithChildren): Removed EventAllowedScope since the SVG use element's shadow
tree is no longer updated when there is a NoEventDispatchAssertion in the stack.
(WebCore::Element::cloneElementWithoutChildren): Ditto.
* style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolveComposedTree): No longer drops the assertion now that SVG use element's
shadow tree is updated before calling this function.
* svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::insertedIntoAncestor): Add the element to the document's hash set if this use element's
shadow tree needs to be updated (m_shadowTreeNeedsUpdate is set), and it got newly connected.
(WebCore::SVGUseElement::removedFromAncestor): Ditto for removal. We have to check m_shadowTreeNeedsUpdate before
calling SVGGraphicsElement::removedFromAncestor or updateExternalDocument since either function can invoke
m_shadowTreeNeedsUpdate to true.
(WebCore::SVGUseElement::willRecalcStyle): Deleted. We no longer call updateShadowTree during style recalc.
(WebCore::SVGUseElement::updateShadowTree): Remove this element from the document's hah set. We can't clear all
the entries in the map at once in Document::resolveStyle because updating the shadow trees of a SVG use element
can result in a sync IPC in ImageLoader::updateFromElement, which end up executing arbitrary author scripts.
(WebCore::SVGUseElement::cloneTarget const): Removed EventAllowedScope since the SVG use element's shadow tree
is no longer updated when there is a NoEventDispatchAssertion in the stack.
(WebCore::SVGUseElement::expandUseElementsInShadowTree const): Ditto.
(WebCore::SVGUseElement::expandSymbolElementsInShadowTree const): Ditto.
(WebCore::SVGUseElement::invalidateShadowTree): Add the element to the document's hash set if it's connected.
* svg/SVGUseElement.h:

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

20 months agoRemoved debug only expectations from platform/ios/ios/plugin/youtube-flash-plugin...
jlewis3@apple.com [Wed, 13 Dec 2017 20:54:39 +0000 (20:54 +0000)]
Removed debug only expectations from platform/ios/ios/plugin/youtube-flash-plugin-iframe.html
https://bugs.webkit.org/show_bug.cgi?id=163362

Unreviewed test gardening.

* platform/ios-wk2/TestExpectations:

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

20 months agoUpdated expectations for contentextension tests to be flaky.
jlewis3@apple.com [Wed, 13 Dec 2017 20:47:03 +0000 (20:47 +0000)]
Updated expectations for contentextension tests to be flaky.
https://bugs.webkit.org/show_bug.cgi?id=162942

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

20 months agoREGRESSION(r225844): Around 850 new JSC failures on 32-bit
sbarati@apple.com [Wed, 13 Dec 2017 20:46:33 +0000 (20:46 +0000)]
REGRESSION(r225844): Around 850 new JSC failures on 32-bit
https://bugs.webkit.org/show_bug.cgi?id=180764

Unreviewed. We should only emit CheckStructureOrEmpty on 64 bit platforms.

* dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::run):

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

20 months agoREGRESSION (r225789): API tests WKProcessPool.InitialWarmedProcessUsed and WebKit...
beidson@apple.com [Wed, 13 Dec 2017 20:20:18 +0000 (20:20 +0000)]
REGRESSION (r225789): API tests WKProcessPool.InitialWarmedProcessUsed and WebKit.WebsiteDataStoreCustomPaths are failing.
https://bugs.webkit.org/show_bug.cgi?id=180722

Reviewed by Chris Dumez.

Source/WebKit:

- Add a test-only accessor to get the number of WebProcesses hosting WebPages
- Have WebsiteDataStore keep track of all instances so they can be looked up by SessionID
- When the StorageProcess needs to establish a SW context connection on behalf of a specific SessionID,
  the UI process will now prefer using the WebsiteDataStore associated with that SessionID. This allows
  us to continue deferring creation of the default data store if it's not needed.

* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::connectionToContextProcessWasClosed):
(WebKit::StorageProcess::createServerToContextConnection):
* StorageProcess/StorageProcess.h:

* StorageProcess/StorageToWebProcessConnection.cpp:
(WebKit::StorageToWebProcessConnection::establishSWServerConnection):

* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _webPageContentProcessCount]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:

* UIProcess/Storage/StorageProcessProxy.cpp:
(WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcess):
(WebKit::StorageProcessProxy::establishWorkerContextConnectionToStorageProcessForExplicitSession):
* UIProcess/Storage/StorageProcessProxy.h:
* UIProcess/Storage/StorageProcessProxy.messages.in:

* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
* UIProcess/WebProcessPool.h:

* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::WebsiteDataStore::~WebsiteDataStore):
(WebKit::WebsiteDataStore::existingDataStoreForSessionID):
* UIProcess/WebsiteData/WebsiteDataStore.h:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/InitialWarmedProcessUsed.mm:
(TEST): Call a new SPI to get the count of WebProcesses hosting WebPages.

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

20 months agoREGRESSION(225597): Can't select a text box or web view on a page when VO is on.
pvollan@apple.com [Wed, 13 Dec 2017 20:19:08 +0000 (20:19 +0000)]
REGRESSION(225597): Can't select a text box or web view on a page when VO is on.
https://bugs.webkit.org/show_bug.cgi?id=180756
<rdar://problem/35996158>

Reviewed by Brent Fulgham.

Source/WebCore:

No new tests.

* platform/mac/EventLoopMac.mm:
(WebCore::EventLoop::cycle):

Source/WebKit:

* Platform/IPC/mac/ConnectionMac.mm:
(IPC::AccessibilityProcessSuspendedNotification):
* UIProcess/Launcher/mac/ProcessLauncherMac.mm:
(WebKit::shouldLeakBoost):
* WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-OSX.plist:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeProcess):

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

20 months ago[Web Animations] Implement the "updating the finished state" procedure
graouts@webkit.org [Wed, 13 Dec 2017 20:01:48 +0000 (20:01 +0000)]
[Web Animations] Implement the "updating the finished state" procedure
https://bugs.webkit.org/show_bug.cgi?id=180743
<rdar://problem/36017232>

Reviewed by Simon Fraser.

Source/WebCore:

The Web Animations spec defines a procedure for "updating the finished state", which should run as the timeline time
changes and is responsible for ultimately triggering finish events and fulfil the "finished" promise. The procedure
allows for two flags to control its behavior: didSeek and synchronouslyNotify. When synchronouslyNotify is true, the
"finish notification steps" procedure is ran right away, otherwise it's queued as a microtask.

In this patch we introduce the notion of "hold time", which is the time held while an animation is paused. It will be
set by the pause() and play() method in future patches.

* animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::updateAnimations): Update the finished state as the timeline time changes with both flags
set to false.
* animation/WebAnimation.cpp:
(WebCore::WebAnimation::currentTime const): Add a private currentTime(bool) variant which allows for the hold time to
be ignored in case updateFinishedState() was called with the didSeek flag set to false.
(WebCore::WebAnimation::updateFinishedState): Implement the procedure as specified with all spec-mandated steps inline.
(WebCore::WebAnimation::scheduleMicrotaskIfNeeded): Schedule a microtask to complete the "finish notification steps"
if we haven't scheduled a microtask before.
(WebCore::WebAnimation::performMicrotask): Perform the microtask if the "finish notification steps" procedure hasn't
been canceled after it was originally scheduled, as tracked by the m_finishNotificationStepsMicrotaskPending flag, since
microtasks are not presently cancelable.
(WebCore::WebAnimation::finishNotificationSteps): Implement the procedure as specified with all spec-mandated steps inline,
dispatching a "finish" events and fulfilling the "finished" promise.
* animation/WebAnimation.h:
* animation/WebAnimation.idl:
* dom/EventNames.h:

LayoutTests:

Rebase some WPT expectations with minor progressions due to exposing the "onfinish" property.

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

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

20 months agoUnreviewed rollout of r225695. Caused a crash on yahoo login page.
msaboff@apple.com [Wed, 13 Dec 2017 19:38:51 +0000 (19:38 +0000)]
Unreviewed rollout of r225695. Caused a crash on yahoo login page.

That bug tracked in https://bugs.webkit.org/show_bug.cgi?id=180761.

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

20 months agoFix crash under Document::visualUpdatesSuppressionTimerFired()
simon.fraser@apple.com [Wed, 13 Dec 2017 19:26:08 +0000 (19:26 +0000)]
Fix crash under Document::visualUpdatesSuppressionTimerFired()
https://bugs.webkit.org/show_bug.cgi?id=180758
Document::visualUpdatesSuppressionTimerFired

Reviewed by Zalan Bujtas.

Speculative fix for crash under visualUpdatesSuppressionTimerFired() where view()
can be null. Add null checks for the view() in all code called from this function.

* dom/Document.cpp:
(WebCore::Document::setVisualUpdatesAllowed):
(WebCore::Document::visualUpdatesSuppressionTimerFired):

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

20 months ago[iOS] Further Trim WebContent Process sandbox
bfulgham@apple.com [Wed, 13 Dec 2017 19:24:47 +0000 (19:24 +0000)]
[iOS] Further Trim WebContent Process sandbox
https://bugs.webkit.org/show_bug.cgi?id=180727
<rdar://problem/18899506>

Reviewed by Eric Carlson.

Take another pass over the contents of the file and remove addition items that
don't have call sites in WebKit.

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

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

20 months agoFill out some Poisoned APIs, fix some bugs, and add some tests.
mark.lam@apple.com [Wed, 13 Dec 2017 19:22:14 +0000 (19:22 +0000)]
Fill out some Poisoned APIs, fix some bugs, and add some tests.
https://bugs.webkit.org/show_bug.cgi?id=180724
<rdar://problem/36006884>

Reviewed by JF Bastien.

Source/JavaScriptCore:

* runtime/StructureTransitionTable.h:

Source/WTF:

Also rename Int32Poisoned to ConstExprPoisoned.  The key it takes is actually a
uint32_t.  So, Int32 is really a misnomer.  In addition, the key needs to be a
constexpr.  So, ConstExprPoisoned is a better name for it.

* wtf/Poisoned.cpp:
(WTF::makePoison):
* wtf/Poisoned.h:
(WTF::PoisonedImplHelper::asReference):
(WTF::PoisonedImpl::PoisonedImpl):
(WTF::PoisonedImpl::clear):
(WTF::PoisonedImpl::operator* const):
(WTF::PoisonedImpl::operator-> const):
(WTF::PoisonedImpl::operator== const):
(WTF::PoisonedImpl::operator!= const):
(WTF::PoisonedImpl::operator< const):
(WTF::PoisonedImpl::operator<= const):
(WTF::PoisonedImpl::operator> const):
(WTF::PoisonedImpl::operator>= const):
(WTF::PoisonedImpl::operator=):
(WTF::PoisonedImpl::swap):
(WTF::PoisonedImpl::exchange):
(WTF::swap):
(WTF::makePoison):
(WTF::PoisonedImpl::operator==): Deleted.

Tools:

* TestWebKitAPI/CMakeLists.txt:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WTF/ConstExprPoisoned.cpp: Added.
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WTF/Poisoned.cpp: Added.
(TestWebKitAPI::initializeTestPoison):
(TestWebKitAPI::TEST):

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

20 months agowebkitpy: Better name-version mapping (Part 2)
jbedard@apple.com [Wed, 13 Dec 2017 19:04:04 +0000 (19:04 +0000)]
webkitpy: Better name-version mapping (Part 2)
https://bugs.webkit.org/show_bug.cgi?id=179621
<rdar://problem/35589585>

Reviewed by David Kilzer.

Now that we have a central mapping of version numbers to version names, this
mapping should be used to compute version names. This patch treats passes versions
as objects, only mapping them to names when strings are needed.

* Scripts/webkitpy/common/system/platforminfo.py:
(PlatformInfo.__init__): Store os_version as a version object instead of a string.
(PlatformInfo.os_version_name): Convert os_version to a string through the VersionNameMap.
* Scripts/webkitpy/common/system/platforminfo_mock.py:
(MockPlatformInfo.__init__): Store os_version as a version object.
(MockPlatformInfo.os_version_name): Mirror PlatformInfo.
* Scripts/webkitpy/common/system/platforminfo_unittest.py:
(TestPlatformInfo.test_real_code): Only Mac and Windows have defined version objects.
(TestPlatformInfo.test_os_version): Deleted, this behavior is now managed by VersionNameMap.
* Scripts/webkitpy/common/version.py:
(Version.__cmp__): Allow a version object to be compared with 'None'.
* Scripts/webkitpy/common/version_name_map.py:
(VersionNameMap.map): Check for the apple_additions VersionNameMap.
(VersionNameMap.__init__): Add a wincairo mapping, the same as the win mapping.
* Scripts/webkitpy/common/version_unittest.py:
(VersionTestCase.test_compare_versions): Test comparing a version object to 'None'.
* Scripts/webkitpy/layout_tests/models/test_configuration.py:
(TestConfiguration.__init__): Strip formatting from version name. Note that this object still
accepts a string because the version string implicitly contains the platform as well.
* Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Win7 should be 7SP0 as
it is in the VersionNameMap.
* Scripts/webkitpy/port/apple.py:
(ApplePort): Replace VERSION_FALLBACK_ORDER with a minimum and maximum version. This is required
because it may be the case that scripts are aware of more versions than the port actually supports.
(ApplePort.determine_full_port_name): Use the host operating system to compute the full port name.
(ApplePort._allowed_versions): Return a list of valid port versions by iterating through the
VersionNameMap.
(ApplePort._generate_all_test_configurations): Compute a list of configurations by iterating through
_allowed_versions and converting each version to a string.
(ApplePort._apple_baseline_path): Return a layout test expectation directory inside apple_additions.
(ApplePort._skipped_file_search_paths): Deleted.
(ApplePort._allowed_port_names): Deleted.
(ApplePort._future_port_name): Deleted.
* Scripts/webkitpy/port/base.py:
(Port.__init__): Replace _version string with _os_version object.
(Port.version_name): Convert version object to string.
(Port.test_configuration): Pass version string to TestConfiguration.
(Port.version): Deleted.
* Scripts/webkitpy/port/darwin_testcase.py:
(DarwinTest.assert_name): Convert an os_version_string to a version object and construct a port.
* Scripts/webkitpy/port/factory_unittest.py:
(FactoryTest.test_mac): Replace version strings with version objects.
(FactoryTest.test_win): Ditto.
* Scripts/webkitpy/port/gtk.py:
(GtkPort._generate_all_test_configurations): Replace _version with version_name().
* Scripts/webkitpy/port/ios.py:
(IOSPort.version_name): Both Simulator and device share the same version-name convention.
(IOSPort._generate_all_test_configurations): Replace _version with version_name().
(IOSPort.default_baseline_search_path): Use the internal mapping of version names to construct
apple_additions expectations.
(IOSPort._apple_additions_path): Deleted.
* Scripts/webkitpy/port/ios_device.py:
(IOSDevicePort.ios_version): Return None if no version is defined.
* Scripts/webkitpy/port/ios_device_unittest.py:
(IOSDeviceTest):
(IOSDeviceTest.test_layout_test_searchpath_with_apple_additions): Conform with the new mock
apple_additions.
(IOSDeviceTest.make_port): Deleted.
* Scripts/webkitpy/port/ios_simulator.py:
(IOSSimulatorPort._create_devices): Use Version object over list of version strings.
* Scripts/webkitpy/port/ios_simulator_unittest.py:
(IOSSimulatorTest):
(IOSSimulatorTest.make_port): Use iOS 11 as the default version for testing.
(IOSSimulatorTest.test_layout_test_searchpath_with_apple_additions): Conform with the new
mock apple_additions.
* Scripts/webkitpy/port/ios_testcase.py:
(IOSTest.make_port): Use iOS 11 as the default version for testing.
* Scripts/webkitpy/port/mac.py:
(MacPort):
(MacPort.__init__): Use Version object for _os_version.
(MacPort.default_baseline_search_path): Use the internal mapping of version names to construct
apple_additions expectations.
(MacPort.configuration_specifier_macros): Automatically construct macros based on VersionNameMap.
(MacPort._apple_additions_path): Deleted.
* Scripts/webkitpy/port/mac_unittest.py:
(MacTest): Use Version object instead of version string.
(MacTest.test_version):
* Scripts/webkitpy/port/port_testcase.py:
(bind_mock_apple_additions): Add a mock VersionNameMap to mock apple_additions.
(bind_mock_apple_additions.MockAppleAdditions):
(bind_mock_apple_additions.MockAppleAdditions.version_name_mapping):
* Scripts/webkitpy/port/test.py:
(TestPort):
(TestPort.__init__): Use VersionNameMap to compute the correct Version from a port name.
(TestPort.version_name): Mirror Port object.
(TestPort.baseline_search_path): Replace win7 with 7sp0.
(TestPort._all_systems): Ditto.
(TestPort.configuration_specifier_macros): Ditto.
* Scripts/webkitpy/port/win.py:
(WinPort):
(WinPort.__init__): Construct Version object from port name.
(WinPort.default_baseline_search_path): Use the internal mapping of version names to construct
apple_additions expectations.
(WinCairoPort):
(WinCairoPort.default_baseline_search_path): Use MIN/MAX instead of the VERSION_FALLBACK_ORDER.
(WinCairoPort._future_port_name): Deleted.
* Scripts/webkitpy/port/win_unittest.py:
(WinPortTest.test_baseline_search_path): Add new Windows versions not previously included.
(WinPortTest._assert_version): Handle expected_version as a Version object.
(WinPortTest.test_versions): Pass Version objects instead of version strings.
* Scripts/webkitpy/port/wpe.py:
(WPEPort._generate_all_test_configurations): Replace _version with version_name().
* Scripts/webkitpy/tool/commands/queries_unittest.py:
(PrintExpectationsTest.test_multiple): Replace win7 with 7sp0.
(PrintBaselinesTest.test_multiple): Ditto.
* Scripts/webkitpy/tool/commands/queues.py:
(PatchProcessingQueue._new_port_name_from_old): Use os_version_name() instead of Version object.

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

20 months agoASSERT(LayoutDisallowedScope::isLayoutAllowed()) whenever hitting Enter in Web Inspec...
zalan@apple.com [Wed, 13 Dec 2017 18:43:05 +0000 (18:43 +0000)]
ASSERT(LayoutDisallowedScope::isLayoutAllowed()) whenever hitting Enter in Web Inspector console
https://bugs.webkit.org/show_bug.cgi?id=180690

Reviewed by Simon Fraser.

Defer text replacement notification until after layout is done to avoid unexpected forced layouts.

Covered by existing tests.

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::disableAccessibility):
(WebCore::AXObjectCache::remove):
(WebCore::filterMapForRemoval):
(WebCore::filterListForRemoval):
(WebCore::AXObjectCache::prepareForDocumentDestruction):
(WebCore::AXObjectCache::performDeferredCacheUpdate):
(WebCore::AXObjectCache::deferTextReplacementNotificationForTextControl):
(WebCore::filterForRemoval): Deleted.
* accessibility/AXObjectCache.h: Need to use the base (Element) class since
we can't call is<HTMLTextFormControlElement> in Node d'tor.
(WebCore::AXObjectCache::deferTextReplacementNotificationForTextControl):
* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::setInnerTextValue):

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

20 months agoUnreviewed, rolling out r225836.
ryanhaddad@apple.com [Wed, 13 Dec 2017 18:36:26 +0000 (18:36 +0000)]
Unreviewed, rolling out r225836.

Broke the Windows build.

Reverted changeset:

"Unify some WebGL sources"
https://bugs.webkit.org/show_bug.cgi?id=180726
https://trac.webkit.org/changeset/225836

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

20 months agoMove out-parameter in API::FormClient::willBeginInputSession() to the end of the...
dbates@webkit.org [Wed, 13 Dec 2017 18:35:14 +0000 (18:35 +0000)]
Move out-parameter in API::FormClient::willBeginInputSession() to the end of the parameter list
https://bugs.webkit.org/show_bug.cgi?id=180754

Reviewed by Wenson Hsieh.

Group all in-parameters in the signature of API::FormClient::willBeginInputSession() at
the front of the parameter list instead of interspersing in- and out- parameters.

No functionality changed. So, no new tests.

* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
(-[WKWebProcessPlugInBrowserContextController _setFormDelegate:]):
* WebProcess/InjectedBundle/APIInjectedBundleFormClient.h:
(API::InjectedBundle::FormClient::willBeginInputSession):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::elementDidFocus):

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

20 months agoUpdated Expectations for http/tests/cache/disk-cache/disk-cache-204-status-code.html
jlewis3@apple.com [Wed, 13 Dec 2017 18:26:41 +0000 (18:26 +0000)]
Updated Expectations for http/tests/cache/disk-cache/disk-cache-204-status-code.html
https://bugs.webkit.org/show_bug.cgi?id=162685

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

20 months ago[ESNext][BigInt] Breking tests on Debug build and 32-bits due to missing Exception...
ticaiolima@gmail.com [Wed, 13 Dec 2017 18:20:53 +0000 (18:20 +0000)]
[ESNext][BigInt] Breking tests on Debug build and 32-bits due to missing Exception check
https://bugs.webkit.org/show_bug.cgi?id=180746

Reviewed by Saam Barati.

We have some uncatched exceptions that could happen due to OOM into
JSBigInt::allocateFor and JSBigInt::toStringGeneric. This patching is
catching such exceptions properly.

* runtime/JSBigInt.cpp:
(JSC::JSBigInt::allocateFor):
(JSC::JSBigInt::parseInt):
* runtime/JSCJSValue.cpp:
(JSC::JSValue::toStringSlowCase const):

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

20 months ago[iOS] Take process assertion to prevent the service worker process from getting suspended
cdumez@apple.com [Wed, 13 Dec 2017 18:13:47 +0000 (18:13 +0000)]
[iOS] Take process assertion to prevent the service worker process from getting suspended
https://bugs.webkit.org/show_bug.cgi?id=180735

Reviewed by Brady Eidson.

Take process assertion to prevent the service worker process from getting suspended while
it is still needed. We use the same policy as for the network process, meaning that
unsuspended WebContent processes prevent the service worker process from getting suspended.

This patch still does not enable service workers on iOS. The demo at https://mdn.github.io/sw-test/
appears to work. However, things are not working as expected for mobile.twitter.com where I
see the fetches intercepted by the service worker fail when offline for some reason (unrelated
to process suspension).

* UIProcess/WebProcessPool.cpp:
(WebKit::m_foregroundWebProcessCounter):
(WebKit::m_backgroundWebProcessCounter):
(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::establishWorkerContextConnectionToStorageProcess):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::updateProcessAssertions):
(WebKit::WebProcessPool::reinstateNetworkProcessAssertionState):
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didSetAssertionState):
* UIProcess/WebProcessProxy.h:

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

20 months ago[Payment Request] Remove ApplePayPaymentMethodUpdateEvent and use PaymentDetailsModif...
aestes@apple.com [Wed, 13 Dec 2017 18:02:28 +0000 (18:02 +0000)]
[Payment Request] Remove ApplePayPaymentMethodUpdateEvent and use PaymentDetailsModifiers instead
https://bugs.webkit.org/show_bug.cgi?id=180737
<rdar://problem/36013152>

Reviewed by Brady Eidson.

Source/WebCore:

Instead of firing a non-standard "applepaypaymentmethodupdate" event when the payment method
changes, use the PaymentDetailsModifier mechanism to allow the merchant to specify override
totals and additional display items per payment method type.

Test: http/tests/ssl/applepay/ApplePayPaymentDetailsModifier.https.html

* DerivedSources.make:
* Modules/applepay/ApplePayLineItem.idl:
* Modules/applepay/ApplePayPaymentMethod.h:
* Modules/applepay/ApplePayPaymentMethod.idl:
* Modules/applepay/ApplePayPaymentMethodType.h: Added.
* Modules/applepay/ApplePayPaymentMethodType.idl: Added.
* Modules/applepay/cocoa/PaymentMethodCocoa.mm:
* Modules/applepay/paymentrequest/ApplePayModifier.h: Added.
* Modules/applepay/paymentrequest/ApplePayModifier.idl: Added.
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::ApplePayPaymentHandler::show):
(WebCore::ApplePayPaymentHandler::computeTotalAndLineItems):
(WebCore::ApplePayPaymentHandler::detailsUpdated):
(WebCore::ApplePayPaymentHandler::shippingAddressUpdated):
(WebCore::ApplePayPaymentHandler::shippingOptionUpdated):
(WebCore::ApplePayPaymentHandler::paymentMethodUpdated):
(WebCore::ApplePayPaymentHandler::didSelectPaymentMethod):
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.h:
* Modules/applepay/paymentrequest/ApplePayPaymentMethodUpdateEvent.cpp: Removed.
* Modules/applepay/paymentrequest/ApplePayPaymentMethodUpdateEvent.h: Removed.
* Modules/paymentrequest/PaymentRequest.h:
* Modules/paymentrequest/PaymentRequest.idl:
* WebCore.xcodeproj/project.pbxproj:
* dom/EventNames.h:
* dom/EventNames.in:
* testing/MockPaymentCoordinator.cpp:
(WebCore::convert):
(WebCore::MockPaymentCoordinator::updateTotalAndLineItems):
(WebCore::MockPaymentCoordinator::completeShippingMethodSelection):
(WebCore::MockPaymentCoordinator::completeShippingContactSelection):
(WebCore::MockPaymentCoordinator::completePaymentMethodSelection):
* testing/MockPaymentCoordinator.h:
* testing/MockPaymentCoordinator.idl:

LayoutTests:

* http/tests/ssl/applepay/ApplePayPaymentDetailsModifier.https-expected.txt: Added.
* http/tests/ssl/applepay/ApplePayPaymentDetailsModifier.https.html: Added.
* http/tests/ssl/applepay/ApplePayPaymentMethodUpdateEvent.https-expected.txt: Removed.
* http/tests/ssl/applepay/ApplePayPaymentMethodUpdateEvent.https.html: Removed.

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

20 months agoAdded missing expectation file for fast/text/user-installed-fonts/shadow-postscript...
jlewis3@apple.com [Wed, 13 Dec 2017 17:57:29 +0000 (17:57 +0000)]
Added missing expectation file for fast/text/user-installed-fonts/shadow-postscript-family.html
https://bugs.webkit.org/show_bug.cgi?id=180062

Unreviewed test gardening.

* platform/ios/TestExpectations:

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

20 months ago[GTK][WPE] Test gardening
Ms2ger@igalia.com [Wed, 13 Dec 2017 17:29:38 +0000 (17:29 +0000)]
[GTK][WPE] Test gardening
https://bugs.webkit.org/show_bug.cgi?id=180751

Unreviewed test gardening.

* platform/gtk/TestExpectations:
* platform/gtk/http/tests/inspector/network/fetch-response-body-expected.txt:
* platform/gtk/http/tests/inspector/network/xhr-response-body-expected.txt:
* platform/gtk/imported/w3c/web-platform-tests/encoding/textdecoder-fatal-single-byte-expected.txt: Added.
* platform/wpe/TestExpectations:
* platform/wpe/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-invalid-args-expected.txt: Added.
* platform/wpe/imported/w3c/web-platform-tests/encoding/textdecoder-fatal-single-byte-expected.txt: Added.

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

20 months agoFix how JSFunction handles "caller" and "arguments" for functions that don't have...
sbarati@apple.com [Wed, 13 Dec 2017 17:29:21 +0000 (17:29 +0000)]
Fix how JSFunction handles "caller" and "arguments" for functions that don't have those properties
https://bugs.webkit.org/show_bug.cgi?id=163579
<rdar://problem/35455798>

Reviewed by Mark Lam.

JSTests:

* stress/caller-and-arguments-properties-for-functions-that-dont-have-them.js: Added.
(assert):
(test1):
(i.test1):
(i.test1.C):
(i.test1.async.foo):
(i.test1.foo):
(test2):

Source/JavaScriptCore:

Some functions in JavaScript do not have the "caller" and "arguments" properties.
For example, strict functions do not. When reading our code that dealt with these
types of functions, it was simply all wrong. We were doing weird things depending
on the method table hook. This patch fixes this by doing what we should've been
doing all along: when the JSFunction does not own the "caller"/"arguments" property,
it should defer to its base class implementation for the various method table hooks.

* runtime/JSFunction.cpp:
(JSC::JSFunction::put):
(JSC::JSFunction::deleteProperty):
(JSC::JSFunction::defineOwnProperty):

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

20 months agoTypeCheckHoistingPhase needs to emit a CheckStructureOrEmpty if it's doing it for...
sbarati@apple.com [Wed, 13 Dec 2017 17:19:24 +0000 (17:19 +0000)]
TypeCheckHoistingPhase needs to emit a CheckStructureOrEmpty if it's doing it for |this|
https://bugs.webkit.org/show_bug.cgi?id=180734
<rdar://problem/35640547>

Reviewed by Yusuke Suzuki.

JSTests:

* stress/type-check-hoisting-phase-hoist-check-structure-on-tdz-this-value.js: Added.
(__isPropertyOfType):
(__getProperties):
(__getObjects):
(__getRandomObject):
(theClass.):
(theClass):
(childClass):
(counter.catch):

Source/JavaScriptCore:

The |this| value may be TDZ. If type check hoisting phase
hoists a CheckStructure to it, it will crash. This patch
makes it so we emit CheckStructureOrEmpty for |this|.

* dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::run):

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

20 months agoUnreviewed, rolling out r179000.
annulen@yandex.ru [Wed, 13 Dec 2017 12:39:42 +0000 (12:39 +0000)]
Unreviewed, rolling out r179000.

There are tests failing in 32-bits and Debug builds

Reverted changeset:

https://trac.webkit.org/changeset/179000

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

20 months agoUnreviewed. Update OptionsGTK.cmake and NEWS for 2.19.3 release.
carlosgc@webkit.org [Wed, 13 Dec 2017 12:08:06 +0000 (12:08 +0000)]
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.19.3 release.

.:

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

Source/WebKit:

* gtk/NEWS: Add release notes for 2.19.3.

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

20 months ago[JSC] Optimize Object.assign by single transition acceleration
utatane.tea@gmail.com [Wed, 13 Dec 2017 07:51:16 +0000 (07:51 +0000)]
[JSC] Optimize Object.assign by single transition acceleration
https://bugs.webkit.org/show_bug.cgi?id=180644

Reviewed by Saam Barati.

Handling single transition is critical. Since this get() function is only used
in Structure.cpp's 2 functions and it is quite small, we can annotate `inline`
to accelerate it.

This improves SixSpeed/object-assign.es6 by 2.8%.

                            baseline                  patched

object-assign.es6      382.3548+-8.0461          371.6496+-5.7439          might be 1.0288x faster

* runtime/Structure.cpp:
(JSC::StructureTransitionTable::get const):

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

20 months agoWeb Inspector: Styles Redesign: navigating away from empty value should remove CSS...
nvasilyev@apple.com [Wed, 13 Dec 2017 06:19:57 +0000 (06:19 +0000)]
Web Inspector: Styles Redesign: navigating away from empty value should remove CSS property
https://bugs.webkit.org/show_bug.cgi?id=180508

Reviewed by Devin Rousso.

Remove a property when navigating away from it (e.g. to the next/previous property,
or outside of the styles panel entirely) and either its name or value is empty:

    color: [ ]->
    <-[ ]: red
    <-[color]:

Don't remove a property when navigating from an empty value to a non-empty name:

    color: <-[ ]

Always remove a property when both name and value are empty.

* UserInterface/Views/SpreadsheetStyleProperty.js:
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
* UserInterface/Views/SpreadsheetTextField.js:
(WI.SpreadsheetTextField.prototype._handleBlur):
(WI.SpreadsheetTextField.prototype.get valueBeforeEditing): Deleted.

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

20 months agoRe-sync imported/w3c/web-platform-tests/service-workers/service-worker/interfaces...
cdumez@apple.com [Wed, 13 Dec 2017 04:47:23 +0000 (04:47 +0000)]
Re-sync imported/w3c/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html
https://bugs.webkit.org/show_bug.cgi?id=180698

Reviewed by Alex Christensen.

Re-sync imported/w3c/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html
after https://github.com/w3c/web-platform-tests/pull/8622.

* web-platform-tests/service-workers/service-worker/interfaces-sw.https-expected.txt:
* web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js:

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

20 months agois<HTMLTextFormControlElement> reports the input type.
zalan@apple.com [Wed, 13 Dec 2017 04:05:33 +0000 (04:05 +0000)]
is<HTMLTextFormControlElement> reports the input type.
https://bugs.webkit.org/show_bug.cgi?id=180721
<rdar://problem/36005123>

Reviewed by Ryosuke Niwa.

This patch ensures that is<HTMLTextFormControlElement> consistently returns true even
when the input type changes from text to non-text (checkbox etc).

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::selectText):
* dom/Element.h:
(WebCore::Element::isTextFormControlElement const):
(WebCore::Element::isTextField const):
(WebCore::Element::isTextFormControl const): Deleted.
* editing/Editor.cpp:
(WebCore::Editor::selectionForCommand):
(WebCore::Editor::setBaseWritingDirection):
(WebCore::findFirstMarkable):
* editing/FrameSelection.cpp:
(WebCore::FrameSelection::selectAll):
* html/FormController.cpp:
(WebCore::FormController::formElementsCharacterCount const):
* html/HTMLElement.cpp:
(WebCore::HTMLElement::directionality const):
* html/HTMLInputElement.h:
* html/HTMLTextAreaElement.h:
* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::didEditInnerTextValue):
(WebCore::HTMLTextFormControlElement::selectedText const):
(WebCore::HTMLTextFormControlElement::setSelectionRange):
(WebCore::HTMLTextFormControlElement::selectionStart const):
(WebCore::HTMLTextFormControlElement::computeSelectionStart const):
(WebCore::HTMLTextFormControlElement::selectionEnd const):
(WebCore::HTMLTextFormControlElement::computeSelectionEnd const):
(WebCore::HTMLTextFormControlElement::selectionDirection const):
(WebCore::HTMLTextFormControlElement::computeSelectionDirection const):
(WebCore::HTMLTextFormControlElement::selection const):
(WebCore::HTMLTextFormControlElement::selectionChanged):
(WebCore::HTMLTextFormControlElement::lastChangeWasUserEdit const):
(WebCore::HTMLTextFormControlElement::setInnerTextValue):
(WebCore::HTMLTextFormControlElement::valueWithHardLineBreaks const):
(WebCore::enclosingTextFormControl):
* html/HTMLTextFormControlElement.h:
(isType):
* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::isOverTextInsideFormControlElement const):

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

20 months agoUnify some WebGL sources
dino@apple.com [Wed, 13 Dec 2017 03:51:48 +0000 (03:51 +0000)]
Unify some WebGL sources
https://bugs.webkit.org/show_bug.cgi?id=180726

Rubber-stamped by Keith, weeks ago.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* html/canvas/WebGLRenderingContextBase.cpp:

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

20 months agoStructure, StructureRareData, and PropertyTable should be in IsoSubspaces
fpizlo@apple.com [Wed, 13 Dec 2017 03:26:39 +0000 (03:26 +0000)]
Structure, StructureRareData, and PropertyTable should be in IsoSubspaces
https://bugs.webkit.org/show_bug.cgi?id=180732

Rubber stamped by Mark Lam.

We should eventually move all fixed-size cells into IsoSubspaces. I don't know if they are
scalable enough to support that, so we should do it carefully.

* heap/MarkedSpace.cpp:
* runtime/PropertyMapHashTable.h:
* runtime/Structure.h:
* runtime/StructureRareData.h:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

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

20 months agoWe need to model effects of Spread(@PhantomCreateRest) in Clobberize/PreciseLocalClob...
sbarati@apple.com [Wed, 13 Dec 2017 03:04:22 +0000 (03:04 +0000)]
We need to model effects of Spread(@PhantomCreateRest) in Clobberize/PreciseLocalClobberize
https://bugs.webkit.org/show_bug.cgi?id=180725
<rdar://problem/35970511>

Reviewed by Michael Saboff.

JSTests:

* stress/model-effects-properly-of-spread-over-phantom-create-rest.js: Added.
(f1):
(f2):
(let.o2.valueOf):

Source/JavaScriptCore:

* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGPreciseLocalClobberize.h:
(JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):

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

20 months ago[WK] Add modern WebKit SPI to set auto fill button type and query if the auto fill...
dbates@webkit.org [Wed, 13 Dec 2017 02:52:43 +0000 (02:52 +0000)]
[WK] Add modern WebKit SPI to set auto fill button type and query if the auto fill button is enabled
https://bugs.webkit.org/show_bug.cgi?id=180686

Reviewed by Alex Christensen.

Source/WebKit:

* WebKit.xcodeproj/project.pbxproj:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
(-[WKWebProcessPlugInNodeHandle isHTMLInputElementAutoFillButtonEnabled]):
(toAutoFillButtonType):
(-[WKWebProcessPlugInNodeHandle setHTMLInputElementAutoFillButtonEnabledWithButtonType:]):
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h:
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandlePrivate.h:

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/ClickAutoFillButton.mm:
(-[ClickAutoFillButton webProcessPlugIn:didCreateBrowserContextController:]):

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

20 months ago[JSC] Implement optimized WeakMap and WeakSet
utatane.tea@gmail.com [Wed, 13 Dec 2017 02:49:00 +0000 (02:49 +0000)]
[JSC] Implement optimized WeakMap and WeakSet
https://bugs.webkit.org/show_bug.cgi?id=179929

Reviewed by Saam Barati.

JSTests:

* microbenchmarks/weak-map-key.js:
* microbenchmarks/weak-set-key.js: Copied from JSTests/microbenchmarks/weak-map-key.js.
(assert):
(objectKey):
(let.start.Date.now):
* stress/basic-weakmap.js: Added.
(shouldBe):
(test):
* stress/basic-weakset.js: Added.
(shouldBe):
(test.set new):
* stress/weakmap-cse-set-break.js: Added.
(shouldBe):
(test):
* stress/weakmap-cse.js: Added.
(shouldBe):
(test):
* stress/weakmap-gc.js: Added.
(test):
* stress/weakset-cse-add-break.js: Added.
(shouldBe):
(test.set new):
* stress/weakset-cse.js: Added.
(shouldBe):
(test.set new):
* stress/weakset-gc.js: Added.
(test.set add):
(test.set new):
(test):

Source/JavaScriptCore:

This patch introduces WeakMapImpl to optimize WeakMap and WeakSet.
This is similar to HashMapImpl. But,

1. WeakMapImpl's bucket is not allocated in GC heap since WeakMap
do not need to have iterators.

2. WeakMapImpl's buffer is allocated in JSValue Gigacage instead
of auxiliary buffer. This is because we would like to allocate buffer
when finalizing GC. At that time, WeakMapImpl prunes dead entries and
shrink it if necessary. However, allocating from the GC heap during
finalization is not allowed.

In particular, (2) is important since it ensures any WeakMap operations
do not cause GC. Since GC may collect dead keys in WeakMap, rehash WeakMap,
and reallocate/change WeakMap's buffer, ensuring that any WeakMap operations
do not cause GC makes our implementation simple. To ensure this, we place
DisallowGC for each WeakMap's interface.

In DFG, we introduce WeakMapGet and ExtractValueFromWeakMapGet nodes.
WeakMapGet looks up entry in WeakMapImpl and returns value. If it is
WeakMap, it returns value. And it returns key if it is WeakSet. If it
does not find a corresponding entry, it returns JSEmpty.
ExtractValueFromWeakMapGet converts JSEmpty to JSUndefined.

This patch improves WeakMap and WeakSet operations.

                             baseline                  patched

    weak-set-key        240.6932+-10.4923    ^    148.7606+-6.1784        ^ definitely 1.6180x faster
    weak-map-key        174.3176+-8.2680     ^    151.7053+-6.8723        ^ definitely 1.1491x faster

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* dfg/DFGAbstractHeap.h:
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGNode.h:
(JSC::DFG::Node::hasHeapPrediction):
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
* dfg/DFGOperations.h:
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileExtractValueFromWeakMapGet):
(JSC::DFG::SpeculativeJIT::compileWeakMapGet):
* dfg/DFGSpeculativeJIT.h:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileExtractValueFromWeakMapGet):
(JSC::FTL::DFG::LowerDFGToB3::compileWeakMapGet):
* inspector/JSInjectedScriptHost.cpp:
(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::weakSetEntries):
Existing code is incorrect. They can run GC and break WeakMap's iterator.
We introduce takeSnapshot function to WeakMapImpl, which retrieves live
entries without causing any GC.

* runtime/HashMapImpl.h:
(JSC::shouldShrink):
(JSC::shouldRehashAfterAdd):
(JSC::nextCapacity):
(JSC::HashMapImpl::shouldRehashAfterAdd const):
(JSC::HashMapImpl::shouldShrink const):
(JSC::HashMapImpl::rehash):
(JSC::WeakMapHash::hash): Deleted.
(JSC::WeakMapHash::equal): Deleted.
* runtime/Intrinsic.cpp:
(JSC::intrinsicName):
* runtime/Intrinsic.h:
* runtime/JSWeakMap.cpp:
* runtime/JSWeakMap.h:
* runtime/JSWeakSet.cpp:
* runtime/JSWeakSet.h:
* runtime/VM.cpp:
* runtime/WeakGCMap.h:
(JSC::WeakGCMap::forEach): Deleted.
* runtime/WeakMapBase.cpp: Removed.
* runtime/WeakMapBase.h: Removed.
* runtime/WeakMapConstructor.cpp:
(JSC::constructWeakMap):
* runtime/WeakMapImpl.cpp: Added.
(JSC::WeakMapImpl<WeakMapBucket>::destroy):
(JSC::WeakMapImpl<WeakMapBucket>::visitChildren):
(JSC::WeakMapImpl<WeakMapBucket>::estimatedSize):
(JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKey>>::visitWeakReferences):
(JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKeyValue>>::visitWeakReferences):
(JSC::WeakMapImpl<WeakMapBucket>::finalizeUnconditionally):
(JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKey>>::takeSnapshot):
(JSC::WeakMapImpl<WeakMapBucket<WeakMapBucketDataKeyValue>>::takeSnapshot):
* runtime/WeakMapImpl.h: Added.
(JSC::jsWeakMapHash):
(JSC::nextCapacityAfterRemoveBatching):
(JSC::WeakMapBucket::setKey):
(JSC::WeakMapBucket::setValue):
(JSC::WeakMapBucket::key const):
(JSC::WeakMapBucket::value const):
(JSC::WeakMapBucket::copyFrom):
(JSC::WeakMapBucket::offsetOfKey):
(JSC::WeakMapBucket::offsetOfValue):
(JSC::WeakMapBucket::extractValue):
(JSC::WeakMapBucket::isEmpty):
(JSC::WeakMapBucket::deletedKey):
(JSC::WeakMapBucket::isDeleted):
(JSC::WeakMapBucket::makeDeleted):
(JSC::WeakMapBucket::visitAggregate):
(JSC::WeakMapBucket::clearValue):
(JSC::WeakMapBuffer::allocationSize):
(JSC::WeakMapBuffer::buffer const):
(JSC::WeakMapBuffer::create):
(JSC::WeakMapBuffer::reset):
(JSC::WeakMapImpl::WeakMapImpl):
(JSC::WeakMapImpl::finishCreation):
(JSC::WeakMapImpl::get):
(JSC::WeakMapImpl::has):
(JSC::WeakMapImpl::add):
(JSC::WeakMapImpl::remove):
(JSC::WeakMapImpl::size const):
(JSC::WeakMapImpl::offsetOfBuffer):
(JSC::WeakMapImpl::offsetOfCapacity):
(JSC::WeakMapImpl::findBucket):
(JSC::WeakMapImpl::buffer const):
(JSC::WeakMapImpl::forEach):
(JSC::WeakMapImpl::shouldRehashAfterAdd const):
(JSC::WeakMapImpl::shouldShrink const):
(JSC::WeakMapImpl::canUseBucket):
(JSC::WeakMapImpl::addInternal):
(JSC::WeakMapImpl::findBucketAlreadyHashed):
(JSC::WeakMapImpl::rehash):
(JSC::WeakMapImpl::checkConsistency const):
(JSC::WeakMapImpl::makeAndSetNewBuffer):
(JSC::WeakMapImpl::assertBufferIsEmpty const):
(JSC::WeakMapImpl::DeadKeyCleaner::target):
* runtime/WeakMapPrototype.cpp:
(JSC::WeakMapPrototype::finishCreation):
(JSC::protoFuncWeakMapGet):
(JSC::protoFuncWeakMapHas):
* runtime/WeakSetConstructor.cpp:
(JSC::constructWeakSet):
* runtime/WeakSetPrototype.cpp:
(JSC::WeakSetPrototype::finishCreation):
(JSC::protoFuncWeakSetHas):
(JSC::protoFuncWeakSetAdd):

Source/WTF:

We introduce JSValueMalloc, which is specialized malloc scheme with Gigacage::JSValue.
This is used for WeakMapImpl's buffer.

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/JSValueMalloc.cpp: Added.
(WTF::tryJSValueMalloc):
(WTF::jsValueMalloc):
(WTF::jsValueRealloc):
(WTF::jsValueFree):
* wtf/JSValueMalloc.h: Added.
(WTF::JSValueMalloc::malloc):
(WTF::JSValueMalloc::tryMalloc):
(WTF::JSValueMalloc::realloc):
(WTF::JSValueMalloc::free):
* wtf/MallocPtr.h:
(WTF::MallocPtr::~MallocPtr):
(WTF::MallocPtr::malloc):
(WTF::MallocPtr::tryMalloc):
(WTF::MallocPtr::realloc):
We extend MallocPtr to adopt malloc scheme as its template parameter.

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

20 months agoIt should be possible to flag a cell for unconditional finalization
fpizlo@apple.com [Wed, 13 Dec 2017 02:35:54 +0000 (02:35 +0000)]
It should be possible to flag a cell for unconditional finalization
https://bugs.webkit.org/show_bug.cgi?id=180636

Reviewed by Saam Barati.

Source/JavaScriptCore:

UnconditionalFinalizers were annoying - you had to allocate them and you had to manage a
global linked list - but they had some nice properties:

- You only did the hardest work (creating the UnconditionalFinalizer) on first GC where you
  survived and needed it.
    -> Just needing it wasn't enough.
    -> Just surviving wasn't enough.

The new API based on IsoSubspaces meant that just surviving was enough to cause unconditional
finalizer logic to be invoked. I think that's not great. InferredType got around this by
making InferredStructure a cell, but this was a gross hack. For one, it meant that
InferredStructure would survive during the GC in which its finalizer obviated the need for its
existence. It's not really an idiom I want us to repeat because it sounds like the sort of
thing that turns out to be subtly broken.

We really need to have a way of indicating when you have entered into the state that requires
your unconditional finalizer to be invoked. Basically, we want to be able to track the set of
objects that need unconditional finalizers. Only the subset of that set that overlaps with the
set of marked objects needs to be accurate. The easiest way to do this is a hierarchy of
bitvectors: one to say which MarkedBlocks have objects that have unconditional finalizers, and
another level to say which atoms within a MarkedBlock have unconditional finalizers.

This change introduces IsoCellSet, which couples itself to the MarkedAllocator of some
IsoSubspace to allow maintaining a set of objects (well, cells - you could do this with
auxiliaries) that belong to that IsoSubspace. It'll have undefined behavior if you try to
add/remove/contains an object that isn't in that IsoSubspace. For objects in that subspace,
you can add/remove/contains and forEachMarkedCell. The cost of each IsoCellSet is at worst
about 0.8% increase in size to every object in the subspace that the set is attached to. So,
it makes sense to have a handful per subspace max. This change only needs one per subspace,
but you could imagine more if we do this for WeakReferenceHarvester.

To absolutely minimize the possibility that this incurs costs, the add/remove/contains
functions can be used from any thread so long as forEachMarkedCell isn't running. This means
that InferredType only needs to add itself to the set during visitChildren. Thus, it needs to
both survive and need it for the hardest work to take place. The work of adding does involve
a gnarly load chain that ends in a CAS: load block handle from block, load index, load
segment, load bitvector, load bit -> if not set, then CAS. That's five dependent loads!
However, it's perfect for running in parallel since the only write operations are to widely
dispersed cache lines that contain the bits underlying the set.

The best part is how forEachMarkedCell works. That skips blocks that don't have any objects
that need unconditional finalizers, and only touches the memory of marked objects that have
the unconditional finalizer bit set. It will walk those objects in roughly address order. I
previously found that this speeds up walking over a lot of objects when I made similar changes
for DOM GC (calling visitAdditionalChildren via forEachMarkedCell rather than by walking a
HashSet).

This change makes InferredStructure be a malloc object again, but now it's in an IsoHeap.

My expectation for this change is that it's perf-neutral. Long-term, it gives us a path
forward for eliminating UnconditionalFinalizer and WeakReferenceHarvester while using
IsoSubspace in more places.

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* heap/AtomIndices.h: Added.
(JSC::AtomIndices::AtomIndices):
* heap/Heap.cpp:
(JSC::Heap::finalizeUnconditionalFinalizers):
* heap/Heap.h:
* heap/IsoCellSet.cpp: Added.
(JSC::IsoCellSet::IsoCellSet):
(JSC::IsoCellSet::~IsoCellSet):
(JSC::IsoCellSet::addSlow):
(JSC::IsoCellSet::didResizeBits):
(JSC::IsoCellSet::didRemoveBlock):
(JSC::IsoCellSet::sweepToFreeList):
* heap/IsoCellSet.h: Added.
* heap/IsoCellSetInlines.h: Added.
(JSC::IsoCellSet::add):
(JSC::IsoCellSet::remove):
(JSC::IsoCellSet::contains const):
(JSC::IsoCellSet::forEachMarkedCell):
* heap/IsoSubspace.cpp:
(JSC::IsoSubspace::didResizeBits):
(JSC::IsoSubspace::didRemoveBlock):
(JSC::IsoSubspace::didBeginSweepingToFreeList):
* heap/IsoSubspace.h:
* heap/MarkedAllocator.cpp:
(JSC::MarkedAllocator::addBlock):
(JSC::MarkedAllocator::removeBlock):
* heap/MarkedAllocator.h:
* heap/MarkedAllocatorInlines.h:
* heap/MarkedBlock.cpp:
(JSC::MarkedBlock::Handle::sweep):
(JSC::MarkedBlock::Handle::isEmpty): Deleted.
* heap/MarkedBlock.h:
(JSC::MarkedBlock::marks const):
(JSC::MarkedBlock::Handle::newlyAllocated const):
* heap/MarkedBlockInlines.h:
(JSC::MarkedBlock::Handle::isAllocated):
(JSC::MarkedBlock::Handle::isEmpty):
(JSC::MarkedBlock::Handle::emptyMode):
(JSC::MarkedBlock::Handle::forEachMarkedCell):
* heap/Subspace.cpp:
(JSC::Subspace::didResizeBits):
(JSC::Subspace::didRemoveBlock):
(JSC::Subspace::didBeginSweepingToFreeList):
* heap/Subspace.h:
* heap/SubspaceInlines.h:
(JSC::Subspace::forEachMarkedCell):
* runtime/InferredStructure.cpp:
(JSC::InferredStructure::InferredStructure):
(JSC::InferredStructure::create): Deleted.
(JSC::InferredStructure::destroy): Deleted.
(JSC::InferredStructure::createStructure): Deleted.
(JSC::InferredStructure::visitChildren): Deleted.
(JSC::InferredStructure::finalizeUnconditionally): Deleted.
(JSC::InferredStructure::finishCreation): Deleted.
* runtime/InferredStructure.h:
* runtime/InferredStructureWatchpoint.cpp:
(JSC::InferredStructureWatchpoint::fireInternal):
* runtime/InferredType.cpp:
(JSC::InferredType::visitChildren):
(JSC::InferredType::willStoreValueSlow):
(JSC::InferredType::makeTopSlow):
(JSC::InferredType::set):
(JSC::InferredType::removeStructure):
(JSC::InferredType::finalizeUnconditionally):
* runtime/InferredType.h:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

Source/WTF:

This adds ConcurrentVector, which is like SegmentedVector, but wastes some space to allow
resizing to proceed concurrently to access. It's not possible to resize concurrently to
resizing, concurrent read/writes aren't protected from racing if they access the same element,
and who knows what you'll get if you iterate up to size() while someone else append()s. The
key insight is to stash all prior copies of the spine, so that nobody crashes trying to access
a stale spine.

I'm going to want to do the same thing for FastBitVector, by creating a segmented WordOwner
class. That would require repeating the dance of having a spine that can resize while stashing
old versions. So, the spine resizing logic is abstracted behind ConcurrentBuffer. You could
use that as a kind of "concurrent vector" for immutable data. That's how ConcurrentVector uses
it: it's an immutable array of segment pointers.

* WTF.xcodeproj/project.pbxproj:
* wtf/ConcurrentBuffer.h: Added.
(WTF::ConcurrentBuffer::ConcurrentBuffer):
(WTF::ConcurrentBuffer::~ConcurrentBuffer):
(WTF::ConcurrentBuffer::growExact):
(WTF::ConcurrentBuffer::grow):
(WTF::ConcurrentBuffer::array const):
(WTF::ConcurrentBuffer::operator[]):
(WTF::ConcurrentBuffer::operator[] const):
(WTF::ConcurrentBuffer::createArray):
* wtf/ConcurrentVector.h: Added.
(WTF::ConcurrentVectorIterator::~ConcurrentVectorIterator):
(WTF::ConcurrentVectorIterator::operator* const):
(WTF::ConcurrentVectorIterator::operator-> const):
(WTF::ConcurrentVectorIterator::operator++):
(WTF::ConcurrentVectorIterator::operator== const):
(WTF::ConcurrentVectorIterator::operator!= const):
(WTF::ConcurrentVectorIterator::operator=):
(WTF::ConcurrentVectorIterator::ConcurrentVectorIterator):
(WTF::ConcurrentVector::~ConcurrentVector):
(WTF::ConcurrentVector::size const):
(WTF::ConcurrentVector::isEmpty const):
(WTF::ConcurrentVector::at):
(WTF::ConcurrentVector::at const):
(WTF::ConcurrentVector::operator[]):
(WTF::ConcurrentVector::operator[] const):
(WTF::ConcurrentVector::first):
(WTF::ConcurrentVector::first const):
(WTF::ConcurrentVector::last):
(WTF::ConcurrentVector::last const):
(WTF::ConcurrentVector::takeLast):
(WTF::ConcurrentVector::append):
(WTF::ConcurrentVector::alloc):
(WTF::ConcurrentVector::removeLast):
(WTF::ConcurrentVector::grow):
(WTF::ConcurrentVector::begin):
(WTF::ConcurrentVector::end):
(WTF::ConcurrentVector::segmentExistsFor):
(WTF::ConcurrentVector::segmentFor):
(WTF::ConcurrentVector::subscriptFor):
(WTF::ConcurrentVector::ensureSegmentsFor):
(WTF::ConcurrentVector::ensureSegment):
(WTF::ConcurrentVector::allocateSegment):

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

20 months agoUnreviewed, fix !ENABLE(MEDIA_STREAM) build after r225822
mcatanzaro@igalia.com [Wed, 13 Dec 2017 01:57:45 +0000 (01:57 +0000)]
Unreviewed, fix !ENABLE(MEDIA_STREAM) build after r225822
https://bugs.webkit.org/show_bug.cgi?id=180666
<rdar://problem/36008948>

* html/HTMLMediaElement.cpp:

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

20 months agoFix possible out-of-bounds read in protocolIsInHTTPFamily
achristensen@apple.com [Wed, 13 Dec 2017 01:54:26 +0000 (01:54 +0000)]
Fix possible out-of-bounds read in protocolIsInHTTPFamily
https://bugs.webkit.org/show_bug.cgi?id=180688

Reviewed by Daniel Bates.

Source/WebCore:

It wouldn't read very far out of bounds, and it would just change a bool return value,
but it's still out of bounds.  Covered by an API test that ASAN wouldn't like.

* platform/URL.cpp:
(WebCore::protocolIsInHTTPFamily):
Check bounds before reading a string.

Tools:

* TestWebKitAPI/Tests/WebCore/URL.cpp:
(TestWebKitAPI::TEST_F):

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

20 months agogetUserMedia is resolving before the document knows it is capturing
commit-queue@webkit.org [Wed, 13 Dec 2017 01:39:36 +0000 (01:39 +0000)]
getUserMedia is resolving before the document knows it is capturing
https://bugs.webkit.org/show_bug.cgi?id=180699

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-12
Reviewed by Eric Carlson.

Source/WebCore:

Covered by updated test.

Ensure the document state is capturing when getUserMedia promise is resolved by doing the following:
- Promise is resolved when MediaStream is producing data.
- MediaStream asks Document to update its state when MediaStream state is updated.

Introduce PendingActivationMediaStream for waiting for the MediaStream to produce data.

* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::statusDidChange):
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::allow):
(WebCore::UserMediaRequest::contextDestroyed):
(WebCore::UserMediaRequest::PendingActivationMediaStream::PendingActivationMediaStream):
(WebCore::UserMediaRequest::PendingActivationMediaStream::~PendingActivationMediaStream):
(WebCore::UserMediaRequest::PendingActivationMediaStream::characteristicsChanged):
(WebCore::UserMediaRequest::mediaStreamIsReady):
* Modules/mediastream/UserMediaRequest.h:
(WebCore::UserMediaRequest::PendingActivationMediaStream::create):
* platform/mediastream/RealtimeMediaSourceCenter.h:
* WebCore/WebCore.xcodeproj/project.pbxproj:

LayoutTests:

* webrtc/video.html: Adding a check that document is capturing within getUserMedia promise resolution callback.
Adding this check without the changes to WebCore makes the test flaky, sometimes the promise resolution happens
after document state is updated.

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

20 months agoStorage Access API: Implement frame-specific access in the network storage session...
wilander@apple.com [Wed, 13 Dec 2017 01:20:06 +0000 (01:20 +0000)]
Storage Access API: Implement frame-specific access in the network storage session layer
https://bugs.webkit.org/show_bug.cgi?id=180679
<rdar://problem/35982116>

Reviewed by Alex Christensen.

Source/WebCore:

Tests: http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-and-try-access-from-right-frame.html
       http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-but-try-access-from-wrong-frame.html

This changes adds frameID and pageID to what is communicated for
storage access and also stored in the network process' table of
partitioning exceptions.

* dom/Document.cpp:
(WebCore::Document::hasStorageAccess):
    Now makes use of the new m_hasFrameSpecificStorageAccess to check
    if access has already been granted to this document's domain and
    frame.
(WebCore::Document::requestStorageAccess):
    Now submits frameID and pageID in the request call and sets
    m_hasFrameSpecificStorageAccess upon granted access callback.
* dom/Document.h:
* page/ChromeClient.h:
* platform/network/NetworkStorageSession.h:
* platform/network/cf/NetworkStorageSessionCFNet.cpp:
(WebCore::NetworkStorageSession::cookieStoragePartition const):
(WebCore::NetworkStorageSession::setPrevalentDomainsToPartitionOrBlockCookies):
(WebCore::NetworkStorageSession::isStorageAccessGranted const):
(WebCore::NetworkStorageSession::setStorageAccessGranted):
    Now makes use of frameID and pageID for partitioning exceptions.
* platform/network/mac/CookieJarMac.mm:
(WebCore::cookiesInPartitionForURL):
(WebCore::setCookiesFromDOM):
    Submits std::nullopt for frameID and pageID.
    Follow-up work tracked in https://bugs.webkit.org/show_bug.cgi?id=180682.
* platform/network/mac/ResourceHandleMac.mm:
(WebCore::ResourceHandle::applySniffingPoliciesAndStoragePartitionIfNeeded):
    Submits std::nullopt for frameID and pageID.
    Follow-up work tracked in https://bugs.webkit.org/show_bug.cgi?id=180682.

Source/WebKit:

This changes adds frameID and pageID to what is communicated for
storage access and also stored in the network process' table of
partitioning exceptions.

* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::create):
    Now stores frameID and pageID for the task for easy retrieval
    in the HSTS checks.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::updateStorageAccessForPrevalentDomains):
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):
    These two methods now submit frameID and pageID to the
    partitioning query call.
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
    These two methods now submit frameID and pageID to the
    partitioning query call.
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::updateStorageAccessForPrevalentDomains):
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::requestStorageAccess):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::requestStorageAccess):
* UIProcess/WebResourceLoadStatisticsStore.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::updateStorageAccessForPrevalentDomainsHandler):
(WebKit::WebsiteDataStore::enableResourceLoadStatisticsAndSetTestingCallback):
(WebKit::WebsiteDataStore::requestStorageAccess):
* UIProcess/WebsiteData/WebsiteDataStore.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::requestStorageAccess):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::requestStorageAccess):
* WebProcess/WebPage/WebPage.h:

LayoutTests:

Note that the expected results for
request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-and-try-access-from-right-frame.html
accepts the missing part where document.cookie is still partitioned
after storage access has been granted. Follow-up work tracked in
https://bugs.webkit.org/show_bug.cgi?id=180682.

* http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-and-try-access-from-right-frame-expected.txt: Added.
* http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-and-try-access-from-right-frame.html: Added.
* http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-but-try-access-from-wrong-frame-expected.txt: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-expected.txt.
* http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-but-try-access-from-wrong-frame.html: Copied from LayoutTests/http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction.html.
* http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction-expected.txt: Removed.
* http/tests/storageAccess/request-and-grant-storage-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-non-recent-user-interaction.html: Removed.
* platform/mac-wk2/TestExpectations:

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

20 months agoModernize WebsiteDataStoreParameters and SandboxExtension::Handle decoding
achristensen@apple.com [Wed, 13 Dec 2017 01:18:20 +0000 (01:18 +0000)]
Modernize WebsiteDataStoreParameters and SandboxExtension::Handle decoding
https://bugs.webkit.org/show_bug.cgi?id=180621

Reviewed by Youenn Fablet.

* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkResourceLoadParameters.cpp:
(WebKit::NetworkResourceLoadParameters::decode):
* Shared/LoadParameters.cpp:
(WebKit::LoadParameters::decode):
* Shared/SandboxExtension.h:
(WebKit::decode):
(WebKit::SandboxExtension::Handle::decode): Deleted.
* Shared/Storage/StorageProcessCreationParameters.cpp:
(WebKit::StorageProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebsiteDataStoreParameters.cpp:
(WebKit::WebsiteDataStoreParameters::decode):
* Shared/WebsiteDataStoreParameters.h:
* Shared/mac/SandboxExtensionMac.mm:
(WebKit::SandboxExtension::Handle::decode):
(WebKit::SandboxExtension::HandleArray::HandleArray):
(WebKit::SandboxExtension::HandleArray::encode const):
(WebKit::SandboxExtension::HandleArray::decode):
(WebKit::SandboxExtension::SandboxExtension):

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

20 months agoVersioning.
jmarcell@apple.com [Wed, 13 Dec 2017 01:13:30 +0000 (01:13 +0000)]
Versioning.

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

20 months agomakeString: support more integral types
jfbastien@apple.com [Wed, 13 Dec 2017 00:50:34 +0000 (00:50 +0000)]
makeString: support more integral types
https://bugs.webkit.org/show_bug.cgi?id=180720

Reviewed by Sam Weinig.

Source/WTF:

Only some integral types worked. Add more types by using template
magic. While we're here, also use the same magic for
floating-point types in the theoretical future where short float
or long double matter.

The core of the magic is a second, defaulted, template
parameter. It's declared in Forward.h (as void), and then in
classes where we want to enable_if we use it (in C++ speak we
create a partial class template specialization), otherwise we
leave it as void.

Also clean up some constructors which were being way too verbose
in stating that they were declarations for this template
specialization right here, when really we already knew that.

* wtf/Forward.h:
* wtf/text/StringConcatenate.h:
(WTF::StringTypeAdapter<char>::StringTypeAdapter<char>): Deleted.
(WTF::StringTypeAdapter<char>::length): Deleted.
(WTF::StringTypeAdapter<char>::is8Bit): Deleted.
(WTF::StringTypeAdapter<char>::writeTo const): Deleted.
(WTF::StringTypeAdapter<char>::toString const): Deleted.
(WTF::StringTypeAdapter<UChar>::StringTypeAdapter<UChar>): Deleted.
(WTF::StringTypeAdapter<UChar>::length const): Deleted.
(WTF::StringTypeAdapter<UChar>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<UChar>::writeTo const): Deleted.
(WTF::StringTypeAdapter<UChar>::toString const): Deleted.
(WTF::StringTypeAdapter<char::StringTypeAdapter): Deleted.
(WTF::StringTypeAdapter<ASCIILiteral>::StringTypeAdapter): Deleted.
(WTF::StringTypeAdapter<Vector<char>>::StringTypeAdapter): Deleted.
(WTF::StringTypeAdapter<Vector<char>>::length const): Deleted.
(WTF::StringTypeAdapter<Vector<char>>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<Vector<char>>::writeTo const): Deleted.
(WTF::StringTypeAdapter<Vector<char>>::toString const): Deleted.
(WTF::StringTypeAdapter<String>::StringTypeAdapter<String>): Deleted.
(WTF::StringTypeAdapter<String>::length const): Deleted.
(WTF::StringTypeAdapter<String>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<String>::writeTo const): Deleted.
(WTF::StringTypeAdapter<String>::toString const): Deleted.
(WTF::StringTypeAdapter<AtomicString>::StringTypeAdapter): Deleted.
* wtf/text/StringConcatenateNumbers.h:
(WTF::StringTypeAdapter<FormattedNumber>::StringTypeAdapter):
(WTF::StringTypeAdapter<int>::StringTypeAdapter<int>): Deleted.
(WTF::StringTypeAdapter<int>::length const): Deleted.
(WTF::StringTypeAdapter<int>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<int>::writeTo const): Deleted.
(WTF::StringTypeAdapter<int>::toString const): Deleted.
(WTF::StringTypeAdapter<unsigned>::StringTypeAdapter<unsigned>): Deleted.
(WTF::StringTypeAdapter<unsigned>::length const): Deleted.
(WTF::StringTypeAdapter<unsigned>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<unsigned>::writeTo const): Deleted.
(WTF::StringTypeAdapter<unsigned>::toString const): Deleted.
(WTF::StringTypeAdapter<double>::StringTypeAdapter<double>): Deleted.
(WTF::StringTypeAdapter<double>::length const): Deleted.
(WTF::StringTypeAdapter<double>::is8Bit const): Deleted.
(WTF::StringTypeAdapter<double>::writeTo const): Deleted.
(WTF::StringTypeAdapter<double>::toString const): Deleted.
(WTF::StringTypeAdapter<float>::StringTypeAdapter<float>): Deleted.
(WTF::StringTypeAdapter<FormattedNumber>::StringTypeAdapter<FormattedNumber>): Deleted.
* wtf/text/StringView.h:
(WTF::StringTypeAdapter<StringView>::StringTypeAdapter<StringView>): Deleted.
(WTF::StringTypeAdapter<StringView>::length): Deleted.
(WTF::StringTypeAdapter<StringView>::is8Bit): Deleted.
(WTF::StringTypeAdapter<StringView>::writeTo): Deleted.
(WTF::StringTypeAdapter<StringView>::toString const): Deleted.

Tools:

Test a few more types can be made string'd.

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

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

20 months agoPlaying webrtc video tracks should prevent from display to got to sleep
commit-queue@webkit.org [Wed, 13 Dec 2017 00:40:08 +0000 (00:40 +0000)]
Playing webrtc video tracks should prevent from display to got to sleep
https://bugs.webkit.org/show_bug.cgi?id=180666

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-12
Reviewed by Darin Adler.

Done through manual testing by checking screen assertions taken on webrtc sites.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::shouldDisableSleep const):

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

20 months agoConstantFoldingPhase rule for GetMyArgumentByVal must check for negative indices
sbarati@apple.com [Wed, 13 Dec 2017 00:32:57 +0000 (00:32 +0000)]
ConstantFoldingPhase rule for GetMyArgumentByVal must check for negative indices
https://bugs.webkit.org/show_bug.cgi?id=180723
<rdar://problem/35859726>

Reviewed by JF Bastien.

JSTests:

* stress/get-my-argument-by-val-constant-folding.js: Added.
(test):
(catch):

Source/JavaScriptCore:

* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):

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

20 months agoWeb Inspector: support async setup() and async teardown() in AsyncTestSuite
bburg@apple.com [Wed, 13 Dec 2017 00:31:15 +0000 (00:31 +0000)]
Web Inspector: support async setup() and async teardown() in AsyncTestSuite
https://bugs.webkit.org/show_bug.cgi?id=180626

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

This can make some code simpler by removing Promise-related boilerplate. I'm splitting
this patch from the new use-site in the interest of making it easier to review.

* UserInterface/Test/TestSuite.js:
(AsyncTestSuite.prototype.runTestCases):
(AsyncTestSuite):

LayoutTests:

Update tests to cover async setup() and async teardown() in the case
of success, runtime failure, and explicit failure.

* inspector/unit-tests/async-test-suite-expected.txt:
* inspector/unit-tests/async-test-suite.html:

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