WebKit-https.git
3 years agoUnreviewed follow-up to r215739 and r215740.
zandobersek@gmail.com [Tue, 25 Apr 2017 17:44:15 +0000 (17:44 +0000)]
Unreviewed follow-up to r215739 and r215740.

* gtk/jhbuild.modules: List the libgcrypt patch that has to be applied.
This (and r215740) was supposed to land in r215739, but I managed to
specify the previous version of the patch.

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

3 years agolowerStackArgs: check Arg::addr.isValidForm when falling back to SP offsets
jfbastien@apple.com [Tue, 25 Apr 2017 17:36:01 +0000 (17:36 +0000)]
lowerStackArgs: check Arg::addr.isValidForm when falling back to SP offsets
https://bugs.webkit.org/show_bug.cgi?id=171278

Reviewed by Filip Pizlo.

lowerStackArgs checked that the FP offsets it tries to generate
are valid form, but didn't check that the fallback was valid
form. This lead to stackAddr's assertion being dead, and the
MaroAssembler asserting way later on move / add when handed a huge
immediate.

* b3/air/AirArg.cpp:
(JSC::B3::Air::Arg::stackAddrImpl):

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

3 years agoResource Load Statistics: Clear network process cache when clearing store
wilander@apple.com [Tue, 25 Apr 2017 17:05:04 +0000 (17:05 +0000)]
Resource Load Statistics: Clear network process cache when clearing store
https://bugs.webkit.org/show_bug.cgi?id=171256
<rdar://problem/31802347>

Reviewed by Brent Fulgham.

Source/WebCore:

Test that covers this code:
http/tests/loading/resourceLoadStatistics/clear-in-memory-and-persistent-store.html

* loader/ResourceLoadObserver.cpp:
(WebCore::ResourceLoadObserver::clearInMemoryStore):
    Better name.
(WebCore::ResourceLoadObserver::logUserInteraction):
    Now passes on the boolean parameter clearFirst to
    ResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler().
(WebCore::ResourceLoadObserver::fireShouldPartitionCookiesHandler):
    Now takes and passes on the boolean parameter clearFirst to
    ResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler().
(WebCore::ResourceLoadObserver::statisticsStore): Deleted.
    This getter violated abstraction. The way it was used
    is now solved through dedicated functions.
* loader/ResourceLoadObserver.h:
* loader/ResourceLoadStatisticsStore.cpp:
(WebCore::ResourceLoadStatisticsStore::readDataFromDecoder):
    Now passes on the boolean parameter clearFirst to
    ResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler().
(WebCore::ResourceLoadStatisticsStore::clearInMemory):
    Better name.
    Now triggers clearing of the associated network process cache.
(WebCore::ResourceLoadStatisticsStore::clearInMemoryAndPersistent):
    Now calls clearInMemory().
(WebCore::ResourceLoadStatisticsStore::setShouldPartitionCookiesCallback):
    Now expects a handler with the boolean parameter clearFirst.
(WebCore::ResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler):
    Now takes and passes on the boolean parameter clearFirst to
    m_shouldPartitionCookiesForDomainsHandler().
* loader/ResourceLoadStatisticsStore.h:
(WebCore::ResourceLoadStatisticsStore::clear): Deleted.
* platform/network/NetworkStorageSession.h:
    NetworkStorageSession::setShouldPartitionCookiesForHosts() now
    takes the boolean parameter clearFirst.
* platform/network/cf/NetworkStorageSessionCFNet.cpp:
(WebCore::NetworkStorageSession::setShouldPartitionCookiesForHosts):
    Now clears m_topPrivatelyControlledDomainsForCookiePartitioning
    if the boolean parameter clearFirst is true.

Source/WebKit2:

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::shouldPartitionCookiesForTopPrivatelyOwnedDomains):
    Now takes and passes on the boolean parameter clearFirst to
    WebCore::NetworkStorageSession::setShouldPartitionCookiesForHosts().
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/NetworkProcess.messages.in:
    The message ShouldPartitionCookiesForTopPrivatelyOwnedDomains now
    takes the boolean parameter clearFirst.
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::shouldPartitionCookiesForTopPrivatelyOwnedDomains):
    Now takes and passes on the boolean parameter clearFirst to
    Messages::NetworkProcess::ShouldPartitionCookiesForTopPrivatelyOwnedDomains.
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/Network/NetworkProcessProxy.messages.in:
    The message ShouldPartitionCookiesForTopPrivatelyOwnedDomains now
    takes the boolean parameter clearFirst.
* UIProcess/WebResourceLoadStatisticsManager.cpp:
(WebKit::WebResourceLoadStatisticsManager::fireShouldPartitionCookiesHandler):
    Now uses the boolean parameter clearFirst when calling
    WebCore::ResourceLoadObserver::fireShouldPartitionCookiesHandler().
(WebKit::WebResourceLoadStatisticsManager::clearInMemoryAndPersistentStore):
    No longer uses the deleted store getter.
(WebKit::WebResourceLoadStatisticsManager::resetToConsistentState):
    No longer uses the deleted store getter.
* UIProcess/WebResourceLoadStatisticsStore.cpp:
(WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):
    No sends the boolean parameter clearFirst to
    ResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler().
(WebKit::WebResourceLoadStatisticsStore::registerSharedResourceLoadObserver):
    Now expects a handler with the boolean parameter clearFirst.
(WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded):
* UIProcess/WebResourceLoadStatisticsStore.h:
    Now uses the new WebCore::ResourceLoadObserver::clearInMemoryStore().
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::shouldPartitionCookiesForTopPrivatelyOwnedDomains):
    Now takes and passes on the boolean parameter clearFirst in its
    message to the network process.
(WebKit::WebsiteDataStore::registerSharedResourceLoadObserver):
    Now expects a handler with the boolean parameter clearFirst.
* UIProcess/WebsiteData/WebsiteDataStore.h:

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

3 years agoUnreviewed follow-up to r215739.
zandobersek@gmail.com [Tue, 25 Apr 2017 17:01:42 +0000 (17:01 +0000)]
Unreviewed follow-up to r215739.

* gtk/patches/libgcrypt-use-only-dev-urandom-for-testing.patch: Add the missing
libgcrypt patch that enforces the use of /dev/urandom.

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

3 years ago[GTK] Add libgpg-error, libgcrypt libraries to JHBuild
zandobersek@gmail.com [Tue, 25 Apr 2017 16:45:59 +0000 (16:45 +0000)]
[GTK] Add libgpg-error, libgcrypt libraries to JHBuild
https://bugs.webkit.org/show_bug.cgi?id=171270

Reviewed by Michael Catanzaro.

* gtk/jhbuild.modules: Add the latest stable versions of libgpg-error and libgcrypt
libraries to the webkitgtk-testing-dependencies metamodule. This will help people
that use systems that don't yet provide libgcrypt >= 1.7.0.

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

3 years agoMark http/tests/inspector/network/resource-sizes-disk-cache.html as flaky.
ryanhaddad@apple.com [Tue, 25 Apr 2017 16:36:23 +0000 (16:36 +0000)]
Mark http/tests/inspector/network/resource-sizes-disk-cache.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=170971

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

3 years agoAdd performance test for FontCache::systemFallbackForCharacters()
mmaxfield@apple.com [Tue, 25 Apr 2017 16:35:39 +0000 (16:35 +0000)]
Add performance test for FontCache::systemFallbackForCharacters()
https://bugs.webkit.org/show_bug.cgi?id=170842

Reviewed by Tim Horton.

PerformanceTests:

* Layout/word-joiner.html: Added.

Source/WebCore:

No new tests because there is no behavior change.

* platform/graphics/FontCascade.h:
(WebCore::FontCascade::treatAsZeroWidthSpace):
(WebCore::FontCascade::treatAsZeroWidthSpaceInComplexScript): Deleted.
* platform/graphics/WidthCache.h:
(WebCore::WidthCache::add):
(WebCore::WidthCache::addSlowCase):

Source/WTF:

* wtf/unicode/CharacterNames.h:

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

3 years agoContent-Disposition header filename is ignored when 'download' attribute is specified...
cdumez@apple.com [Tue, 25 Apr 2017 16:29:25 +0000 (16:29 +0000)]
Content-Disposition header filename is ignored when 'download' attribute is specified in HTML
https://bugs.webkit.org/show_bug.cgi?id=171239
<rdar://problem/31789855>

Reviewed by Alex Christensen.

Source/WebCore:

Add isAttachmentWithFilename() utility method to ResourceResponse to implement:
- https://html.spec.whatwg.org/#as-a-download (Step 2)

Test: http/tests/download/anchor-download-attribute-content-disposition.html

* platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::isAttachmentWithFilename):
* platform/network/ResourceResponseBase.h:

Source/WebKit2:

Content-Disposition header filename is ignored when 'download' attribute is specified in HTML.
This is not as per HTML specification:
- https://html.spec.whatwg.org/#as-a-download (Step 2)

Content-Disposition header filename is supposed to override the value of the download attribute.

Firefox and Chrome follow the specification.

* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::findPendingDownloadLocation):
* UIProcess/Downloads/DownloadProxy.cpp:
(WebKit::DownloadProxy::didReceiveResponse):

LayoutTests:

* http/tests/security/anchor-download-allow-sameorigin.html:
Stop using attachment.php as resource for this download attribute test because attachment.php
returns a Content-Disposition header with a filename. Given the behavior change in this patch,
this resource is no longer suitable for testing the download attribute.

* http/tests/download/anchor-download-attribute-content-disposition-expected.txt: Added.
* http/tests/download/anchor-download-attribute-content-disposition.html: Added.
* http/tests/download/resources/content-disposition-pass.php: Added.
Add layout test coverage.

* platform/ios-wk2/TestExpectations:
* platform/mac-wk1/TestExpectations:
* platform/win/TestExpectations:
Skip new test on platforms where the download attribute is not supported.

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

3 years ago[GTK] Improve an unit test for the JHBuild wrapper.
clopez@igalia.com [Tue, 25 Apr 2017 16:10:03 +0000 (16:10 +0000)]
[GTK] Improve an unit test for the JHBuild wrapper.
https://bugs.webkit.org/show_bug.cgi?id=168036

Unreviewed follow-up patch after r215727

* Scripts/webkitpy/port/base_unittest.py:
(test_jhbuild_wrapper): Improve the unit test by ensuring the directory
wasn't there before calling MockFileSystem.maybe_make_directory(), and
also that it exists after calling it.

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

3 years agoRebaseline fast/canvas/canvas-crash.html for ios-simulator.
ryanhaddad@apple.com [Tue, 25 Apr 2017 16:03:02 +0000 (16:03 +0000)]
Rebaseline fast/canvas/canvas-crash.html for ios-simulator.
https://bugs.webkit.org/show_bug.cgi?id=171238

Unreviewed test gardening.

* platform/ios-simulator/fast/canvas/canvas-crash-expected.txt: Added.

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

3 years agoWebAssembly: exporting a property with a name that's a number doesn't work
utatane.tea@gmail.com [Tue, 25 Apr 2017 15:36:08 +0000 (15:36 +0000)]
WebAssembly: exporting a property with a name that's a number doesn't work
https://bugs.webkit.org/show_bug.cgi?id=168857

Reviewed by JF Bastien.

r213453 allows Wasm instances to expose indexed properties. We activate the tests.

* wasm/js-api/test_Instance.js:
(ExportedNumber):

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

3 years ago[GTK] Add WebKitInspectorWindow to create inspector windows from local and remote...
carlosgc@webkit.org [Tue, 25 Apr 2017 15:24:35 +0000 (15:24 +0000)]
[GTK] Add WebKitInspectorWindow to create inspector windows from local and remote inspector
https://bugs.webkit.org/show_bug.cgi?id=171261

Reviewed by Michael Catanzaro.

Source/WebCore/platform/gtk/po:

Remove WebInspectorProxyGtk.cpp and RemoteWebInspectorProxyGtk.cpp from POTFILES.in and add WebKitInspectorWindow.cpp.

* POTFILES.in:

Source/WebKit2:

The code is currently duplicated in WebInspectorProxyGtk.cpp and RemoteWebInspectorProxyGtk.cpp. We can simplify
it by using a common widget in both places.
This patch also fixes the build when using GTK+ < 3.16.

* PlatformGTK.cmake:
* UIProcess/gtk/RemoteWebInspectorProxyGtk.cpp:
(WebKit::RemoteWebInspectorProxy::updateWindowTitle):
(WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
* UIProcess/gtk/WebInspectorProxyGtk.cpp:
(WebKit::WebInspectorProxy::createInspectorWindow):
(WebKit::WebInspectorProxy::updateInspectorWindowTitle):
* UIProcess/gtk/WebKitInspectorWindow.cpp: Added.
(webkit_inspector_window_class_init):
(webkit_inspector_window_init):
(webkitInspectorWindowNew):
(webkitInspectorWindowSetSubtitle):
* UIProcess/gtk/WebKitInspectorWindow.h: Added.

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

3 years ago[aarch64] moveConditionally32(), moveConditionallyTest32() should move from/to 64...
zandobersek@gmail.com [Tue, 25 Apr 2017 14:15:42 +0000 (14:15 +0000)]
[aarch64] moveConditionally32(), moveConditionallyTest32() should move from/to 64-bit registers
https://bugs.webkit.org/show_bug.cgi?id=170891

Reviewed by Saam Barati.

moveConditionally32() and moveConditionallyTest32() operations in
MacroAssemblerARM64 properly perform comparisons and tests on 32-bit
values, but end up performing the moves from and to 32-bit registers.

Move operations should instead be done on 64-bit registers, just like
on the X86_64 platform. This is achieved by specifying 64 as the data
size for the csel instructions.

* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::moveConditionally32):
(JSC::MacroAssemblerARM64::moveConditionallyTest32):

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

3 years agoEnable expired-only reload policy on Mac and iOS
antti@apple.com [Tue, 25 Apr 2017 14:14:00 +0000 (14:14 +0000)]
Enable expired-only reload policy on Mac and iOS
https://bugs.webkit.org/show_bug.cgi?id=171264
<rdar://problem/31807637>

Reviewed by Andreas Kling.

Source/WebCore:

* loader/NavigationAction.cpp:
(WebCore::navigationType):

Test for reload navigation type correctly.

Source/WebKit2:

Enable the reload policy where only expired subresources are revalidated on Mac and iOS.
The behavor is enabled in Safari and for other clients based on SDK version check.

* UIProcess/API/C/WKPage.cpp:
(WKPageReload):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView reload]):
* UIProcess/Cocoa/VersionChecks.h:

LayoutTests:

* fast/loader/display-image-unset-can-block-image-and-can-reload-in-place.html:

WebKitDisplayImages preference blocks loads, it does not prevent images already in memory cache from displaying.
Modify the test to clear the memory cache so it still tests what it is supposed to.

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

3 years agoImage decoders must have private constructors to avoid refcount misuse: ASSERTION...
magomez@igalia.com [Tue, 25 Apr 2017 12:35:18 +0000 (12:35 +0000)]
Image decoders must have private constructors to avoid refcount misuse: ASSERTION FAILED: m_deletionHasBegun when destroying ImageDecoder
https://bugs.webkit.org/show_bug.cgi?id=171211

Reviewed by Carlos Garcia Campos.

Add a create method to each of the decoders and set their constructors as private. Change
ICOImageDecoder to store its internal PNG decoders as RefPtr and use the new create method, and
change ImageDecoder to use the create methods as well.

Covered by existent tests.

* platform/image-decoders/ImageDecoder.cpp:
(WebCore::ImageDecoder::create):
* platform/image-decoders/bmp/BMPImageDecoder.h:
* platform/image-decoders/gif/GIFImageDecoder.h:
* platform/image-decoders/ico/ICOImageDecoder.cpp:
(WebCore::ICOImageDecoder::decodeAtIndex):
* platform/image-decoders/ico/ICOImageDecoder.h:
* platform/image-decoders/jpeg/JPEGImageDecoder.h:
* platform/image-decoders/png/PNGImageDecoder.h:
* platform/image-decoders/webp/WEBPImageDecoder.h:

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

3 years agoBuild fix
mmaxfield@apple.com [Tue, 25 Apr 2017 12:16:46 +0000 (12:16 +0000)]
Build fix

Unreviewed.

No new tests because there is no behavior change.

* crypto/mac/SerializedCryptoKeyWrapMac.mm:
(WebCore::wrapSerializedCryptoKey):
(WebCore::unwrapSerializedCryptoKey):

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

3 years ago[GTK] ImageDiff should be run by jhbuild-wrapper in case of using jhbuild
clopez@igalia.com [Tue, 25 Apr 2017 10:48:31 +0000 (10:48 +0000)]
[GTK] ImageDiff should be run by jhbuild-wrapper in case of using jhbuild
https://bugs.webkit.org/show_bug.cgi?id=168036

Reviewed by Michael Catanzaro.

Call ImageDiff with the JHBuild wrapper if we should use it.
Also add some unit tests for the JHBuild wrapper feature.

* Scripts/webkitpy/port/base.py:
(Port._should_use_jhbuild): Use self._filesystem instead of os.path to allow mock testing.
* Scripts/webkitpy/port/base_unittest.py:
(test_jhbuild_wrapper): Add a test for port._should_use_jhbuild()
* Scripts/webkitpy/port/image_diff.py:
(ImageDiffer._start): The actual fix, use the wrapper if we should.
* Scripts/webkitpy/port/image_diff_unittest.py: Removed. This two tests are now integrated in port_testcase
* Scripts/webkitpy/port/port_testcase.py:
(PortTestCase):
(PortTestCase.test_diff_image): Test the command with wrapper and without it.
(PortTestCase.test_diff_image_passed): Moved from image_diff_unittest.py
(PortTestCase.test_diff_image_failed): Moved from image_diff_unittest.py

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

3 years agoImport W3C tests for the CSSOM View module
fred.wang@free.fr [Tue, 25 Apr 2017 08:46:07 +0000 (08:46 +0000)]
Import W3C tests for the CSSOM View module
https://bugs.webkit.org/show_bug.cgi?id=171215

Patch by Frederic Wang <fwang@igalia.com> on 2017-04-25
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

This patch imports "cssom-view" test suite from WPT repo:
https://github.com/w3c/web-platform-tests/tree/master/cssom-view

* resources/import-expectations.json:
* resources/resource-files.json:
* web-platform-tests/cssom-view/CaretPosition-001-expected.txt: Added.
* web-platform-tests/cssom-view/CaretPosition-001.html: Added.
* web-platform-tests/cssom-view/HTMLBody-ScrollArea_quirksmode-expected.txt: Added.
* web-platform-tests/cssom-view/HTMLBody-ScrollArea_quirksmode.html: Added.
* web-platform-tests/cssom-view/MediaQueryList-001-expected.txt: Added.
* web-platform-tests/cssom-view/MediaQueryList-001.html: Added.
* web-platform-tests/cssom-view/MediaQueryList-with-empty-string-expected.txt: Added.
* web-platform-tests/cssom-view/MediaQueryList-with-empty-string.html: Added.
* web-platform-tests/cssom-view/OWNERS: Added.
* web-platform-tests/cssom-view/Screen-pixelDepth-Screen-colorDepth001-expected.txt: Added.
* web-platform-tests/cssom-view/Screen-pixelDepth-Screen-colorDepth001.html: Added.
* web-platform-tests/cssom-view/cssom-getBoundingClientRect-001-expected.txt: Added.
* web-platform-tests/cssom-view/cssom-getBoundingClientRect-001.html: Added.
* web-platform-tests/cssom-view/cssom-getBoundingClientRect-002.html: Added.
* web-platform-tests/cssom-view/cssom-getClientRects-expected.txt: Added.
* web-platform-tests/cssom-view/cssom-getClientRects.html: Added.
* web-platform-tests/cssom-view/cssom-view-img-attributes-001-expected.txt: Added.
* web-platform-tests/cssom-view/cssom-view-img-attributes-001.html: Added.
* web-platform-tests/cssom-view/cssom-view-window-screen-interface-expected.txt: Added.
* web-platform-tests/cssom-view/cssom-view-window-screen-interface.html: Added.
* web-platform-tests/cssom-view/cssom-view/media-query-list-interface.xht: Added.
* web-platform-tests/cssom-view/cssom-view/w3c-import.log: Added.
* web-platform-tests/cssom-view/cssom-view/window-interface-expected.txt: Added.
* web-platform-tests/cssom-view/cssom-view/window-interface.xht: Added.
* web-platform-tests/cssom-view/elementFromPoint-001-expected.txt: Added.
* web-platform-tests/cssom-view/elementFromPoint-001.html: Added.
* web-platform-tests/cssom-view/elementFromPoint-expected.txt: Added.
* web-platform-tests/cssom-view/elementFromPoint.html: Added.
* web-platform-tests/cssom-view/elementFromPosition-expected.txt: Added.
* web-platform-tests/cssom-view/elementFromPosition.html: Added.
* web-platform-tests/cssom-view/elementScroll-expected.txt: Added.
* web-platform-tests/cssom-view/elementScroll.html: Added.
* web-platform-tests/cssom-view/elementsFromPoint.html: Added.
* web-platform-tests/cssom-view/historical-expected.txt: Added.
* web-platform-tests/cssom-view/historical.html: Added.
* web-platform-tests/cssom-view/htmlelement-offset-width-001-expected.txt: Added.
* web-platform-tests/cssom-view/htmlelement-offset-width-001.html: Added.
* web-platform-tests/cssom-view/iframe.html: Added.
* web-platform-tests/cssom-view/matchMedia-expected.txt: Added.
* web-platform-tests/cssom-view/matchMedia.xht: Added.
* web-platform-tests/cssom-view/matchMediaAddListener-expected.txt: Added.
* web-platform-tests/cssom-view/matchMediaAddListener.html: Added.
* web-platform-tests/cssom-view/mouseEvent-expected.txt: Added.
* web-platform-tests/cssom-view/mouseEvent.html: Added.
* web-platform-tests/cssom-view/negativeMargins-expected.txt: Added.
* web-platform-tests/cssom-view/negativeMargins.html: Added.
* web-platform-tests/cssom-view/offsetParent_element_test-expected.txt: Added.
* web-platform-tests/cssom-view/offsetParent_element_test.html: Added.
* web-platform-tests/cssom-view/scrollWidthHeight-expected.txt: Added.
* web-platform-tests/cssom-view/scrollWidthHeight.xht: Added.
* web-platform-tests/cssom-view/scrollWidthHeightWhenNotScrollable-expected.txt: Added.
* web-platform-tests/cssom-view/scrollWidthHeightWhenNotScrollable.xht: Added.
* web-platform-tests/cssom-view/scrolling-no-browsing-context-expected.txt: Added.
* web-platform-tests/cssom-view/scrolling-no-browsing-context.html: Added.
* web-platform-tests/cssom-view/scrolling-quirks-vs-nonquirks-expected.txt: Added.
* web-platform-tests/cssom-view/scrolling-quirks-vs-nonquirks.html: Added.
* web-platform-tests/cssom-view/scrollingElement.html: Added.
* web-platform-tests/cssom-view/support/1x1-green.png: Added.
* web-platform-tests/cssom-view/support/1x1-lime.png: Added.
* web-platform-tests/cssom-view/support/1x1-maroon.png: Added.
* web-platform-tests/cssom-view/support/1x1-navy.png: Added.
* web-platform-tests/cssom-view/support/1x1-red.png: Added.
* web-platform-tests/cssom-view/support/1x1-white.png: Added.
* web-platform-tests/cssom-view/support/60x60-gg-rr.png: Added.
* web-platform-tests/cssom-view/support/60x60-green.png: Added.
* web-platform-tests/cssom-view/support/60x60-red.png: Added.
* web-platform-tests/cssom-view/support/README: Added.
* web-platform-tests/cssom-view/support/a-green.css: Added.
(.a):
* web-platform-tests/cssom-view/support/b-green.css: Added.
(.b):
* web-platform-tests/cssom-view/support/c-red.css: Added.
(.c):
* web-platform-tests/cssom-view/support/cat.png: Added.
* web-platform-tests/cssom-view/support/import-green.css: Added.
(.import):
* web-platform-tests/cssom-view/support/import-red.css: Added.
(.import):
* web-platform-tests/cssom-view/support/pattern-grg-rgr-grg.png: Added.
* web-platform-tests/cssom-view/support/pattern-grg-rrg-rgg.png: Added.
* web-platform-tests/cssom-view/support/pattern-rgr-grg-rgr.png: Added.
* web-platform-tests/cssom-view/support/pattern-tr.png: Added.
* web-platform-tests/cssom-view/support/ruler-h-50%.png: Added.
* web-platform-tests/cssom-view/support/ruler-h-50px.png: Added.
* web-platform-tests/cssom-view/support/ruler-v-100px.png: Added.
* web-platform-tests/cssom-view/support/ruler-v-50px.png: Added.
* web-platform-tests/cssom-view/support/square-purple.png: Added.
* web-platform-tests/cssom-view/support/square-teal.png: Added.
* web-platform-tests/cssom-view/support/square-white.png: Added.
* web-platform-tests/cssom-view/support/support/README: Added.
* web-platform-tests/cssom-view/support/support/swatch-green.png: Added.
* web-platform-tests/cssom-view/support/support/swatch-red.png: Added.
* web-platform-tests/cssom-view/support/support/w3c-import.log: Added.
* web-platform-tests/cssom-view/support/swatch-blue.png: Added.
* web-platform-tests/cssom-view/support/swatch-green.png: Added.
* web-platform-tests/cssom-view/support/swatch-lime.png: Added.
* web-platform-tests/cssom-view/support/swatch-orange.png: Added.
* web-platform-tests/cssom-view/support/swatch-red.png: Added.
* web-platform-tests/cssom-view/support/swatch-teal.png: Added.
* web-platform-tests/cssom-view/support/swatch-white.png: Added.
* web-platform-tests/cssom-view/support/swatch-yellow.png: Added.
* web-platform-tests/cssom-view/support/test-bl.png: Added.
* web-platform-tests/cssom-view/support/test-br.png: Added.
* web-platform-tests/cssom-view/support/test-inner-half-size.png: Added.
* web-platform-tests/cssom-view/support/test-outer.png: Added.
* web-platform-tests/cssom-view/support/test-tl.png: Added.
* web-platform-tests/cssom-view/support/test-tr.png: Added.
* web-platform-tests/cssom-view/support/w3c-import.log: Added.
* web-platform-tests/cssom-view/ttwf-js-cssomview-getclientrects-length-expected.txt: Added.
* web-platform-tests/cssom-view/ttwf-js-cssomview-getclientrects-length.html: Added.
* web-platform-tests/cssom-view/ttwf-scrollintoview-expected.txt: Added.
* web-platform-tests/cssom-view/ttwf-scrollintoview.html: Added.
* web-platform-tests/cssom-view/w3c-import.log: Added.
* web-platform-tests/cssom-view/window-screen-height-expected.txt: Added.
* web-platform-tests/cssom-view/window-screen-height-immutable-expected.txt: Added.
* web-platform-tests/cssom-view/window-screen-height-immutable.html: Added.
* web-platform-tests/cssom-view/window-screen-height.html: Added.
* web-platform-tests/cssom-view/window-screen-width-expected.txt: Added.
* web-platform-tests/cssom-view/window-screen-width-immutable-expected.txt: Added.
* web-platform-tests/cssom-view/window-screen-width-immutable.html: Added.
* web-platform-tests/cssom-view/window-screen-width.html: Added.

LayoutTests:

* TestExpectations: Skip some completely failing CSSOM View tests.
* platform/ios-simulator/imported/w3c/web-platform-tests/cssom-view/Screen-pixelDepth-Screen-colorDepth001-actual.txt: Added. Add an expectation for iOS simulator, differing from other platform.
* platform/ios-simulator/imported/w3c/web-platform-tests/cssom-view/scrolling-quirks-vs-nonquirks-expected.txt: Added. Ditto.

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

3 years ago[GTK] Add po/Makevars
commit-queue@webkit.org [Tue, 25 Apr 2017 07:41:07 +0000 (07:41 +0000)]
[GTK] Add po/Makevars
https://bugs.webkit.org/show_bug.cgi?id=170012

Patch by Piotr Drąg <piotrdrag@gmail.com> on 2017-04-25
Reviewed by Carlos Garcia Campos.

* Makevars: Added so we can switch https://l10n.gnome.org/module/webkit/ from intltool to pure gettext and get WEB_UI_STRING* strings extracted.

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

3 years agoSupport reading NSURL titles from the pasteboard when performing data interaction
wenson_hsieh@apple.com [Tue, 25 Apr 2017 07:00:59 +0000 (07:00 +0000)]
Support reading NSURL titles from the pasteboard when performing data interaction
https://bugs.webkit.org/show_bug.cgi?id=171156
<rdar://problem/31356937>

Reviewed by Tim Horton.

Source/WebCore:

Support reading link titles from the pasteboard when performing data interaction. To do this, we refactor
Pasteboard::readURL to take in an additional String& title which is ultimately plumbed to the PlatformPasteboard
where it is set to the value of -[NSURL _title].

Test: DataInteractionTests.ExternalSourceTitledNSURL.

* editing/FrameSelection.h:
* editing/ios/EditorIOS.mm:
(WebCore::Editor::WebContentReader::readURL):
* page/DragController.cpp:
(WebCore::DragController::performDragOperation):
(WebCore::DragController::concludeEditDrag):

Move calls to clearDragCaret() out of concludeEditDrag and into the call site, in performDragOperation after
attempting to concludeEditDrag. This is done so that if the WebEditorClient queries whether the drag caret is
in richly editable content for the purposes of generating a document fragment to insert, the answer will not
always be false as a drop is occurring.

* platform/PasteboardStrategy.h:
* platform/PlatformPasteboard.h:
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::respectsUTIFidelities):
(WebCore::Pasteboard::readString):
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::readURL):

Source/WebKit/mac:

Add a new WK1 SPI property, -[WebFrame hasRichlyEditableDragCaret].

* WebCoreSupport/WebPlatformStrategies.h:
* WebCoreSupport/WebPlatformStrategies.mm:
(WebPlatformStrategies::readURLFromPasteboard):
* WebView/WebFrame.mm:
(-[WebFrame hasRichlyEditableDragCaret]):
* WebView/WebFramePrivate.h:

Source/WebKit2:

Adjust for interface changes in WebCore to support plumbing the title of an NSURL from the platform pasteboard
back to WebCore. Additionally, implement WebEditorClient::hasRichlyEditableSelection (which previously returned
false) to check whether the current selection is richly editable, or the drop caret is in richly editable content.
See WebCore ChangeLog for more details.

* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
(WebKit::WebPasteboardProxy::readURLFromPasteboard):
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::readURLFromPasteboard):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
* WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
(WebKit::WebEditorClient::hasRichlyEditableSelection):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::hasRichlyEditableSelection):
* WebProcess/WebPage/WebPage.h:

Tools:

Adds a new unit test, DataInteractionTests.ExternalSourceTitledNSURL.

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

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

3 years agotest262: test262/test/language/expressions/object/method-definition/early-errors...
commit-queue@webkit.org [Tue, 25 Apr 2017 06:52:04 +0000 (06:52 +0000)]
test262: test262/test/language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js
https://bugs.webkit.org/show_bug.cgi?id=171190

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-04-24
Reviewed by Saam Barati.

JSTests:

* stress/async-await-syntax.js:
* test262.yaml:

Source/JavaScriptCore:

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitNewFunctionExpressionCommon):
(JSC::BytecodeGenerator::emitNewFunction):
* bytecompiler/NodesCodegen.cpp:
(JSC::FunctionNode::emitBytecode):
(JSC::Scope::setSourceParseMode):
* parser/ParserModes.h:
(JSC::isFunctionParseMode):
(JSC::isMethodParseMode):
(JSC::isGeneratorOrAsyncFunctionWrapperParseMode):
(JSC::isGeneratorParseMode):
(JSC::isGeneratorWrapperParseMode):
* runtime/FunctionExecutable.h:
* runtime/JSFunction.cpp:
(JSC::JSFunction::getOwnPropertySlot):
Add a new GeneratorWrapperMethodMode parse mode. The other function types
(async, arrow) already have a FunctionMode and a MethodMode. Give
generators one as well. This lets isMethodParseMode actually be accurate.

* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::isArrowFunctionParameters):
(JSC::Parser<LexerType>::parseFormalParameters):
(JSC::stringForFunctionMode):
(JSC::Parser<LexerType>::parseFunctionParameters):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parsePropertyMethod):
* parser/Parser.h:
Add a duplicate parameter failure if there are duplicate parameters
in method syntax.

LayoutTests:

* js/parser-syntax-check-expected.txt:
* js/script-tests/parser-syntax-check.js:
Extend to cover method duplicate parameter cases.

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

3 years agoClean up ICU headers
commit-queue@webkit.org [Tue, 25 Apr 2017 05:19:03 +0000 (05:19 +0000)]
Clean up ICU headers
https://bugs.webkit.org/show_bug.cgi?id=170997

Patch by Andy VanWagoner <thetalecrafter@gmail.com> on 2017-04-24
Reviewed by JF Bastien.

Update all icu headers to 55.1

Source/JavaScriptCore:

* icu/LICENSE: Update copyright
* icu/README: Explain ICU headers for OS X better
* icu/unicode/localpointer.h:
(LocalPointer::LocalPointer):
(LocalPointer::adoptInsteadAndCheckErrorCode):
* icu/unicode/platform.h:
* icu/unicode/putil.h:
* icu/unicode/ucal.h:
* icu/unicode/uchar.h:
* icu/unicode/ucnv.h:
* icu/unicode/ucol.h:
* icu/unicode/uconfig.h:
* icu/unicode/ucurr.h:
* icu/unicode/udatpg.h:
* icu/unicode/udisplaycontext.h:
* icu/unicode/uformattable.h:
* icu/unicode/uloc.h:
* icu/unicode/umachine.h:
* icu/unicode/unum.h:
* icu/unicode/unumsys.h:
* icu/unicode/urename.h:
* icu/unicode/uscript.h:
* icu/unicode/uset.h:
* icu/unicode/ustring.h:
* icu/unicode/utf8.h:
* icu/unicode/utypes.h:

Source/WebCore:

* icu/LICENSE: Update copyright
* icu/README: Explain ICU headers for OS X better
* icu/unicode/localpointer.h:
(LocalPointer::LocalPointer):
(LocalPointer::adoptInsteadAndCheckErrorCode):
* icu/unicode/platform.h:
* icu/unicode/putil.h:
* icu/unicode/std_string.h:
* icu/unicode/ubrk.h:
* icu/unicode/uchar.h:
* icu/unicode/ucnv.h:
* icu/unicode/ucol.h:
* icu/unicode/ucoleitr.h:
* icu/unicode/uconfig.h:
* icu/unicode/ucurr.h:
* icu/unicode/uidna.h:
* icu/unicode/uloc.h:
* icu/unicode/umachine.h:
* icu/unicode/unistr.h:
(UnicodeString::getArrayStart):
(UnicodeString::UnicodeString):
(UnicodeString::hasShortLength):
(UnicodeString::getShortLength):
(UnicodeString::length):
(UnicodeString::getCapacity):
(UnicodeString::isBogus):
(UnicodeString::isWritable):
(UnicodeString::isBufferWritable):
(UnicodeString::getBuffer):
(UnicodeString::isEmpty):
(UnicodeString::setZeroLength):
(UnicodeString::setShortLength):
(UnicodeString::setLength):
(UnicodeString::setToEmpty):
(UnicodeString::remove):
* icu/unicode/urename.h:
* icu/unicode/uscript.h:
* icu/unicode/usearch.h:
* icu/unicode/uset.h:
* icu/unicode/ustring.h:
* icu/unicode/utf8.h:
* icu/unicode/utypes.h:
* icu/unicode/uvernum.h:

Source/WebKit/mac:

* icu/README: Explain ICU headers for OS X better
* icu/unicode/localpointer.h:
(LocalPointer::LocalPointer):
(LocalPointer::adoptInsteadAndCheckErrorCode):
* icu/unicode/platform.h:
* icu/unicode/putil.h:
* icu/unicode/uchar.h:
* icu/unicode/uconfig.h:
* icu/unicode/ucurr.h:
* icu/unicode/uidna.h:
* icu/unicode/umachine.h:
* icu/unicode/urename.h:
* icu/unicode/uscript.h:
* icu/unicode/ustring.h:
* icu/unicode/utf8.h:
* icu/unicode/utypes.h:
* icu/unicode/uvernum.h:

Source/WTF:

* icu/LICENSE: Update copyright
* icu/README: Explain ICU headers for OS X better
* icu/unicode/localpointer.h:
(LocalPointer::LocalPointer):
(LocalPointer::adoptInsteadAndCheckErrorCode):
* icu/unicode/platform.h:
* icu/unicode/putil.h:
* icu/unicode/std_string.h:
* icu/unicode/ubrk.h:
* icu/unicode/uchar.h:
* icu/unicode/ucnv.h:
* icu/unicode/ucol.h:
* icu/unicode/uconfig.h:
* icu/unicode/ucurr.h:
* icu/unicode/uloc.h:
* icu/unicode/umachine.h:
* icu/unicode/unistr.h:
(UnicodeString::getArrayStart):
(UnicodeString::UnicodeString):
(UnicodeString::hasShortLength):
(UnicodeString::getShortLength):
(UnicodeString::length):
(UnicodeString::getCapacity):
(UnicodeString::isBogus):
(UnicodeString::isWritable):
(UnicodeString::isBufferWritable):
(UnicodeString::getBuffer):
(UnicodeString::isEmpty):
(UnicodeString::setZeroLength):
(UnicodeString::setShortLength):
(UnicodeString::setLength):
(UnicodeString::setToEmpty):
(UnicodeString::remove):
* icu/unicode/urename.h:
* icu/unicode/uscript.h:
* icu/unicode/uset.h:
* icu/unicode/ustring.h:
* icu/unicode/utf8.h:
* icu/unicode/utypes.h:
* icu/unicode/uvernum.h:

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

3 years agoLayoutTests crypto/subtle/ecdsa-generate-key-sign-verify-p384.html and crypto/subtle...
jiewen_tan@apple.com [Tue, 25 Apr 2017 05:10:00 +0000 (05:10 +0000)]
LayoutTests crypto/subtle/ecdsa-generate-key-sign-verify-p384.html and crypto/subtle/ecdsa-generate-key-sign-verify-p256.html are flaky failures
https://bugs.webkit.org/show_bug.cgi?id=171059
<rdar://problem/31734958>

Reviewed by Brent Fulgham.

Source/WebCore:

Covered by existing tests.

* crypto/mac/CryptoAlgorithmECDSAMac.cpp:
(WebCore::signECDSA):
Enhance ways to convert the DER signatures produced from CommonCrypto to r||s.

LayoutTests:

* TestExpectations:
Remove test expectations.

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

3 years ago[JSC] Use JSFixedArray directly when using call_varargs
utatane.tea@gmail.com [Tue, 25 Apr 2017 05:09:10 +0000 (05:09 +0000)]
[JSC] Use JSFixedArray directly when using call_varargs
https://bugs.webkit.org/show_bug.cgi?id=171057

Reviewed by Saam Barati.

JSTests:

* stress/spread-capture-rest.js: Added.
(shouldBe):
(capture):
(a):
(b):
* stress/spread-multi-layers.js: Added.
(shouldBe):
(a):
(b):
(c):
(d):
* stress/spread-non-varargs.js: Added.
(shouldBe):
(a):
(b):

Source/JavaScriptCore:

Previously we always emit new_array_with_spread when calling call(...args).
But this array is unnecessary if varargs operation can handle Spread directly.

This patch implements a peep-hole optimization in the bytecode compiler layer
to omit new_array_with_spread. This is very simple and effective because this
peep-hole optimization is quite common when using (...args) style calls and
this optimization works all the tiers. While we can implement the phase to
omit this NewArrayWithSpread in argument elimination phase, it only works
for FTL. While such an optimization can work with complex data flow, this
peep-hole optimization can optimize a common case easily.

For now, Spread and PhantomSpread can be directly drained by CallVarargs
and LoadVarargs related operations. We modify DFG and FTL to handle this correctly.

This shows six-speed improvement.

    spread.es6                 89.4300+-2.0236     ^     69.6015+-1.7278        ^ definitely 1.2849x faster
    spread-generator.es6      344.7879+-5.9147     ^    331.2712+-6.8610        ^ definitely 1.0408x faster

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitCall):
(JSC::BytecodeGenerator::emitConstruct):
* dfg/DFGArgumentsEliminationPhase.cpp:
* dfg/DFGPreciseLocalClobberize.h:
(JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileForwardVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileForwardVarargsWithSpread):
* interpreter/Interpreter.cpp:
(JSC::sizeOfVarargs):
(JSC::loadVarargs):
* parser/Nodes.h:
(JSC::ArrayNode::elements):
* runtime/JSFixedArray.cpp:
(JSC::JSFixedArray::copyToArguments):
* runtime/JSFixedArray.h:

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

3 years ago[selectors4] :focus-within should use the flat tree
rego@igalia.com [Tue, 25 Apr 2017 04:58:55 +0000 (04:58 +0000)]
[selectors4] :focus-within should use the flat tree
https://bugs.webkit.org/show_bug.cgi?id=170899

Reviewed by Antti Koivisto.

Source/WebCore:

This has been discussed in the following CSS WG issue:
https://github.com/w3c/csswg-drafts/issues/1135

And the spec has been updated (https://drafts.csswg.org/selectors-4/#the-focus-within-pseudo):
"An element also matches :focus-within if one of its descendants in the flat tree
 (including non-element nodes, such as text nodes) matches the conditions for matching :focus."

Test: imported/w3c/web-platform-tests/css/selectors4/focus-within-shadow-006.html

* dom/Element.cpp:
(WebCore::Element::setFocus): Use "flat tree" ("composed tree" in WebKit)
to set focus-within flag.

LayoutTests:

* TestExpectations: Remove test that is passing now.

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

3 years ago[GTK] Fix extraction of translator comments
commit-queue@webkit.org [Tue, 25 Apr 2017 03:48:12 +0000 (03:48 +0000)]
[GTK] Fix extraction of translator comments
https://bugs.webkit.org/show_bug.cgi?id=170012

Patch by Piotr Drąg <piotrdrag@gmail.com> on 2017-04-24
Reviewed by Michael Catanzaro.

* CMakeLists.txt: Remove “TRANSLATORS:” header, as it’s not used and might block extraction of translator comments.

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

3 years agoUnreviewed, fix Windows build after r215715
utatane.tea@gmail.com [Tue, 25 Apr 2017 03:23:20 +0000 (03:23 +0000)]
Unreviewed, fix Windows build after r215715
https://bugs.webkit.org/show_bug.cgi?id=171199

* wtf/StackTrace.h:

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

3 years ago2017-04-24 James Craig <jcraig@apple.com>
jcraig@apple.com [Tue, 25 Apr 2017 03:21:29 +0000 (03:21 +0000)]
2017-04-24  James Craig  <jcraig@apple.com>

        Upload demo files for prefers-reduced-motion post
        https://bugs.webkit.org/show_bug.cgi?id=170663

        Rubber stamped by Jon Davis.

        * blog-files/prefers-reduced-motion: Added.
        * blog-files/prefers-reduced-motion/axi.png: Added.
        * blog-files/prefers-reduced-motion/prm.htm: Added.

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

3 years ago[WTF] Move JSC tools/StackTrace to WTF and unify stack trace dump code
utatane.tea@gmail.com [Tue, 25 Apr 2017 02:53:49 +0000 (02:53 +0000)]
[WTF] Move JSC tools/StackTrace to WTF and unify stack trace dump code
https://bugs.webkit.org/show_bug.cgi?id=171199

Reviewed by Mark Lam.

Source/JavaScriptCore:

This patch adds a utility method to produce demangled names with dladdr.
It fixes several memory leaks because the result of abi::__cxa_demangle()
needs to be `free`-ed.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* inspector/JSGlobalObjectInspectorController.cpp:
(Inspector::JSGlobalObjectInspectorController::appendAPIBacktrace):
* runtime/SamplingProfiler.cpp:
(JSC::SamplingProfiler::StackFrame::displayName):
* tools/CellProfile.h:
* tools/CodeProfile.cpp:
(JSC::CodeProfile::report):
(JSC::symbolName): Deleted.

Source/WTF:

JSC tools/StackTrace's dump code is almost identical to WTF Assertions'
stack trace dump code. This patch moves tools/StackTrace to WTF and use
it in Assertions. It unifies the two duplicate implementations into one.

* WTF.xcodeproj/project.pbxproj:
* wtf/Assertions.cpp:
* wtf/CMakeLists.txt:
* wtf/Platform.h:
* wtf/StackTrace.cpp: Renamed from Source/JavaScriptCore/tools/StackTrace.cpp.
(WTF::StackTrace::captureStackTrace):
(WTF::StackTrace::dump):
* wtf/StackTrace.h: Copied from Source/JavaScriptCore/tools/StackTrace.h.
(WTF::StackTrace::StackTrace):
(WTF::StackTrace::stack):
(WTF::StackTrace::DemangleEntry::mangledName):
(WTF::StackTrace::DemangleEntry::demangledName):
(WTF::StackTrace::DemangleEntry::DemangleEntry):
* wtf/SystemFree.h: Renamed from Source/JavaScriptCore/tools/StackTrace.h.
(WTF::SystemFree::operator()):

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

3 years agoRespect fidelity order when reading web content from item providers
wenson_hsieh@apple.com [Tue, 25 Apr 2017 02:35:02 +0000 (02:35 +0000)]
Respect fidelity order when reading web content from item providers
https://bugs.webkit.org/show_bug.cgi?id=171155
<rdar://problem/31356937>

Reviewed by Tim Horton.

Source/WebCore:

Currently, when reading web content from pasteboards, we assume the old UIPasteboard/NSPasteboard model wherein
the destination must determine which of the items is considered to have the highest fidelity for the purposes of
inserting into an editable area. This destination-side fidelity ranking is determined solely by the NSArray
returned from Pasteboard::supportedPasteboardTypes, which lists compatible types in order from highest fidelity
to lowest fidelity. Pasteboard::read effectively iterates over this list of types in order, attempting to read
highest fidelity types and bailing when it first successfully reads data.

However, when our pasteboard is backed by UIItemProviders, we should instead read pasteboard types in order of
fidelity as specified by the source rather than the destination. To accomplish this, we introduce an alternate
codepath, Pasteboard::readRespectingUTIFidelities, which we take if Pasteboard::respectsUTIFidelities is true
(currently, this only applies for the purposes of data interaction). This version follows a different flow:
for each item in the pasteboard, we ask for just the UTIs for that item, in order of fidelity. For each item,
we then call readPasteboardWebContentDataForType to try and read data for that type, continuing until either
all UTIs have been attempted, or reading was successful.

This patch makes two additional adjustments. First, we introduce Pasteboard::getTypesByFidelityForItemAtIndex,
which is used by Pasteboard::readRespectingUTIFidelities when querying the list of supported UTIs for each
pasteboard item, sorted by highest to lowest fidelity.

Secondly, we refactor logic to write to the item provider pasteboard in PlatformPasteboardIOS. Since we are
now respecting fidelity rankings on the destination, the source must also register UTI types in the right
fidelity order. While this was mostly achieved using our existing method of writing a list of object
representations to the pasteboard and then all of the contents of a NSString => NSData dictionary containing
private UTI data, this approach has two flaws:
1.  We are unable to register high-priority custom types, followed by representing objects, followed by more
    lower-priority custom types, since we assume that all custom types follow all representing objects.
2.  Since we're just iterating over a dictionary of NSString => NSData when registering custom UTI
    representations to the item provider, there cannot inherently be any fidelity ordering for custom types.

To address both of these issues, we introduce two new objects that encapsulate how we register data to the item
provider pasteboard. WebItemProviderRegistrationInfo represents some data that can be registered to an item
provider (either an object conforming to UIItemProviderWriting, or an NSString and NSData).
WebItemProviderRegistrationInfoList represents a list of WebItemProviderRegistrationInfos in order of highest to
lowest fidelity. In PlatformPasteboardIOS, we transform PasteboardWebContent, PasteboardImage, and PasteboardURL
into a WebItemProviderRegistrationInfoList, which we then pass along to the WebItemProviderPasteboard. In
WebItemProviderPasteboard, we traverse the list of WebItemProviderRegistrationInfos in the list and register
each WebItemProviderRegistrationInfo's representing object or data to the item provider.

Test: DataInteractionTests.RespectsExternalSourceFidelityRankings.

* WebCore.xcodeproj/project.pbxproj:
* platform/Pasteboard.h:
* platform/PasteboardStrategy.h:
* platform/PlatformPasteboard.h:
* platform/ios/AbstractPasteboard.h:
* platform/ios/AbstractPasteboard.mm: Removed.

Moves WebItemProviderData, formerly implemented in AbstractPasteboard.mm, into WebItemProviderPasteboard.mm.
We can delete AbstractPasteboard.mm as a result.

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

Pull out common logic for reading data given a UTI type from the pasteboard into the PasteboardWebContentReader.
This is invoked from both the existing Pasteboard::read codepath, as well as the readRespectingUTIFidelities
codepath.

(WebCore::Pasteboard::read):

Refactored to call the new readPasteboardWebContentDataForType helper. Behavior should not have changed, unless
the pasteboard supports UTI fidelities.

(WebCore::Pasteboard::respectsUTIFidelities):
(WebCore::Pasteboard::readRespectingUTIFidelities):

An alternative to Pasteboard::read that considers source-side fidelity rankings of UTIs.

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

Refactored to build a WebItemProviderRegistrationInfoList and pass it to the WebItemProviderPasteboard to
register items and data.

(WebCore::PlatformPasteboard::write):
* platform/ios/WebItemProviderPasteboard.h:
* platform/ios/WebItemProviderPasteboard.mm:
(-[WebItemProviderRegistrationInfo initWithRepresentingObject:typeIdentifier:data:]):
(-[WebItemProviderRegistrationInfo representingObject]):
(-[WebItemProviderRegistrationInfo typeIdentifier]):
(-[WebItemProviderRegistrationInfo data]):

Represents a single calls to register data onto the item provider pasteboard. See
WebItemProviderPasteboard.h header comments for more info.

(-[WebItemProviderRegistrationInfoList init]):
(-[WebItemProviderRegistrationInfoList addData:forType:]):
(-[WebItemProviderRegistrationInfoList addRepresentingObject:]):
(-[WebItemProviderRegistrationInfoList numberOfItems]):
(-[WebItemProviderRegistrationInfoList itemAtIndex:]):
(-[WebItemProviderRegistrationInfoList enumerateItems:]):

Represents a series of calls to register representations onto the item provider pasteboard. See
WebItemProviderPasteboard.h header comments for more info.

(-[WebItemProviderPasteboard pasteboardTypesByFidelityForItemAtIndex:]):
(-[WebItemProviderPasteboard setItemsUsingRegistrationInfoLists:]):
(-[WebItemProviderPasteboard setItemsFromObjectRepresentations:]): Deleted.

Source/WebKit/mac:

Adjusts for changes in WebCore (see WebCore/ChangeLog for more details).

* WebCoreSupport/WebPlatformStrategies.h:
* WebCoreSupport/WebPlatformStrategies.mm:
(WebPlatformStrategies::getTypesByFidelityForItemAtIndex):

Source/WebKit2:

Adjusts for changes in WebCore by adding plumbing to support Pasteboard::getTypesByFidelityForItemAtIndex. See
WebCore/ChangeLog for more details.

* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
(WebKit::WebPasteboardProxy::getPasteboardTypesByFidelityForItemAtIndex):
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::getTypesByFidelityForItemAtIndex):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Tools:

Adds a new unit test (DataInteractionTests.RespectsExternalSourceFidelityRankings). See WebCore ChangeLog for
more details.

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

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

3 years ago[AppleWin] The procedure entry point ?waitForThreadCompletion@WTF@@YAHI@Z could not...
utatane.tea@gmail.com [Tue, 25 Apr 2017 02:15:48 +0000 (02:15 +0000)]
[AppleWin] The procedure entry point ?waitForThreadCompletion@WTF@@YAHI@Z could not be located in the dynamic link library WebKitQuartzCoreAdditions.dll
https://bugs.webkit.org/show_bug.cgi?id=171029

Reviewed by Brent Fulgham.

While WTF Threading APIs are updated, WebKitQuartzCoreAdditions.dll in Windows uses some of the old APIs,
waitForThreadCompletion and createThread. This patch implements both on top of the new APIs.
These APIs are only exposed in Windows for this compatibility problem and new code should not use it.

* wtf/ThreadHolder.cpp:
(WTF::ThreadHolder::initialize):
* wtf/ThreadHolder.h:
* wtf/ThreadHolderWin.cpp:
(WTF::ThreadHolder::get):
(WTF::ThreadHolder::platformInitialize):
(WTF::ThreadHolder::destruct):
* wtf/Threading.h:
* wtf/ThreadingWin.cpp:
(WTF::createThread):
(WTF::waitForThreadCompletion):

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

3 years ago[GTK] Update POTFILES.in
commit-queue@webkit.org [Tue, 25 Apr 2017 02:10:14 +0000 (02:10 +0000)]
[GTK] Update POTFILES.in

It’s missing some files with translatable strings.
https://bugs.webkit.org/show_bug.cgi?id=171232

Patch by Piotr Drąg <piotrdrag@gmail.com> on 2017-04-24
Reviewed by Michael Catanzaro.

* POTFILES.in: Update POTFILES.in.

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

3 years agoRegression(r204605): support for "cp874" charset alias was inadvertently dropped...
cdumez@apple.com [Tue, 25 Apr 2017 01:44:32 +0000 (01:44 +0000)]
Regression(r204605): support for "cp874" charset alias was inadvertently dropped which may cause issues on certain Thai sites
https://bugs.webkit.org/show_bug.cgi?id=171128
<rdar://problem/31526844>

Reviewed by Alexey Proskuryakov.

When using Thai as default language on MacOS, defaultTextEncodingNameForSystemLanguage()
was returning "cp874" encoding with was dropped in r204605 for not being part of the
encoding specification (https://encoding.spec.whatwg.org/#names-and-labels).

To address the issue, we map "cp874" encoding to the "dos-874" encoding which is
properly recognized. Without this, this could lead to issue on WebSites that do not
specify a charset.

* platform/text/TextEncodingRegistry.cpp:
(WebCore::defaultTextEncodingNameForSystemLanguage):

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

3 years ago[CG] Provide a type identifier hint to the CGImageSource so getting the type identifi...
commit-queue@webkit.org [Tue, 25 Apr 2017 01:23:55 +0000 (01:23 +0000)]
[CG] Provide a type identifier hint to the CGImageSource so getting the type identifier is more accurate
https://bugs.webkit.org/show_bug.cgi?id=171042

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-04-24
Reviewed by Tim Horton.

The image URL can be used to get the type identifier hint. Without providing
this hint, the image type identifier is not accurate for image formats.

Also add a function to the ImageDecoder class to get the typeIdentifier. Add
all the pluming from the ImageDecoder till the Image class.

* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/BitmapImage.cpp:
(WebCore::BitmapImage::destroyDecodedData):
(WebCore::BitmapImage::frameImageAtIndexCacheIfNeeded):
(WebCore::BitmapImage::draw):
(WebCore::BitmapImage::internalStartAnimation):
(WebCore::BitmapImage::advanceAnimation):
(WebCore::BitmapImage::internalAdvanceAnimation):
(WebCore::BitmapImage::newFrameNativeImageAvailableAtIndex):
* platform/graphics/BitmapImage.h:
* platform/graphics/Image.cpp:
(WebCore::Image::sourceURL):
* platform/graphics/Image.h: Change the sourceURL() to return a URL so CG can create CFURLRef from it.
(WebCore::Image::uti):
* platform/graphics/ImageFrameCache.cpp:
(WebCore::ImageFrameCache::cacheAsyncFrameNativeImageAtIndex):
(WebCore::ImageFrameCache::startAsyncDecodingQueue):
(WebCore::ImageFrameCache::requestFrameAsyncDecodingAtIndex):
(WebCore::ImageFrameCache::stopAsyncDecodingQueue):
(WebCore::ImageFrameCache::clearMetadata):
(WebCore::ImageFrameCache::sourceURL):
(WebCore::ImageFrameCache::encodedDataStatus):
(WebCore::ImageFrameCache::uti):
(WebCore::ImageFrameCache::filenameExtension):
* platform/graphics/ImageFrameCache.h:
* platform/graphics/ImageSource.cpp:
(WebCore::ImageSource::ensureDecoderAvailable):
* platform/graphics/ImageSource.h:
(WebCore::ImageSource::uti):
* platform/graphics/cg/ImageDecoderCG.cpp:
(WebCore::ImageDecoder::ImageDecoder): Pass the type identifier hint to CGImageSourceCreateIncremental().
(WebCore::ImageDecoder::uti):
(WebCore::ImageDecoder::filenameExtension):
(WebCore::ImageDecoder::frameHasAlphaAtIndex):
(WebCore::ImageDecoder::createFrameImageAtIndex):
* platform/graphics/cg/ImageDecoderCG.h:
(WebCore::ImageDecoder::create):
* platform/graphics/win/ImageDecoderDirect2D.cpp:
(WebCore::ImageDecoder::encodedDataStatus):
* platform/graphics/win/ImageDecoderDirect2D.h:
(WebCore::ImageDecoder::create): Add an argument of type URL.
* platform/image-decoders/ImageDecoder.cpp:
(WebCore::ImageDecoder::create): Add an argument of type URL.
* platform/image-decoders/ImageDecoder.h:
(WebCore::ImageDecoder::encodedDataStatus): Make it const.
* platform/image-decoders/bmp/BMPImageDecoder.cpp:
(WebCore::BMPImageDecoder::encodedDataStatus):
* platform/image-decoders/bmp/BMPImageDecoder.h:
* platform/image-decoders/gif/GIFImageDecoder.cpp:
(WebCore::GIFImageDecoder::encodedDataStatus):
* platform/image-decoders/gif/GIFImageDecoder.h:
* platform/image-decoders/ico/ICOImageDecoder.cpp:
(WebCore::ICOImageDecoder::encodedDataStatus):
* platform/image-decoders/ico/ICOImageDecoder.h:
* platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
(WebCore::JPEGImageDecoder::encodedDataStatus):
* platform/image-decoders/jpeg/JPEGImageDecoder.h:
* platform/image-decoders/png/PNGImageDecoder.cpp:
(WebCore::PNGImageDecoder::encodedDataStatus):
* platform/image-decoders/png/PNGImageDecoder.h:
* platform/image-decoders/webp/WEBPImageDecoder.cpp:
(WebCore::WEBPImageDecoder::encodedDataStatus):
* platform/image-decoders/webp/WEBPImageDecoder.h:
* platform/spi/cg/ImageIOSPI.h: Added.

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

3 years agoUnreviewed build fix.
ryanhaddad@apple.com [Tue, 25 Apr 2017 00:43:36 +0000 (00:43 +0000)]
Unreviewed build fix.

* crypto/mac/CryptoAlgorithmAES_GCMMac.cpp:
(WebCore::encryptAES_GCM):
(WebCore::decyptAES_GCM):

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

3 years agoSyntaxError fix after r215702.
clopez@igalia.com [Tue, 25 Apr 2017 00:30:31 +0000 (00:30 +0000)]
SyntaxError fix after r215702.
https://bugs.webkit.org/show_bug.cgi?id=168944

Unreviewed "build" fix.

* BuildSlaveSupport/built-product-archive:
(archiveBuiltProduct):

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

3 years agoWebProcessPools should always have a WebsiteDataStore
beidson@apple.com [Tue, 25 Apr 2017 00:18:52 +0000 (00:18 +0000)]
WebProcessPools should always have a WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=171252

Reviewed by Alex Christensen.

* UIProcess/API/APIWebsiteDataStore.cpp:
(API::WebsiteDataStore::registerSharedResourceLoadObserver): Deleted.
* UIProcess/API/APIWebsiteDataStore.h:
* UIProcess/API/C/WKContext.cpp:
(WKContextGetWebsiteDataStore):
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitialize):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::createWebPage):
* UIProcess/WebProcessPool.h:
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::isAssociatedProcessPool):

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

3 years agoWhitelist supported image MIME types
commit-queue@webkit.org [Tue, 25 Apr 2017 00:14:31 +0000 (00:14 +0000)]
Whitelist supported image MIME types
https://bugs.webkit.org/show_bug.cgi?id=171077

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-04-24
Reviewed by Tim Horton.

Restrict the CG port image formats to a known whitelist. Build this list from image
UTI's instead of MIME types, since the image UTI's is a superset of the MIME types.
Use this list to build the list of supported image MIME types.

* PlatformAppleWin.cmake:
* WebCore.xcodeproj/project.pbxproj:
* platform/MIMETypeRegistry.cpp:
(WebCore::initializeSupportedImageMIMETypes):
* platform/graphics/cg/UTIRegistry.cpp: Added.
(WebCore::allowedImageUTIs):
(WebCore::isAllowedImageUTI):
* platform/graphics/cg/UTIRegistry.h: Added.

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

3 years agoAX: Crash at WebCore::AXObjectCache::characterOffsetForIndex(int, WebCore::Accessibil...
n_wang@apple.com [Tue, 25 Apr 2017 00:05:20 +0000 (00:05 +0000)]
AX: Crash at WebCore::AXObjectCache::characterOffsetForIndex(int, WebCore::AccessibilityObject const*) + 703
https://bugs.webkit.org/show_bug.cgi?id=171247

Reviewed by Chris Fleizach.

Source/WebCore:

Crashed because we were passing a nil node into rootAXEditableElement(). Fixed it by
adding a null check.

Test: accessibility/mac/input-string-for-range-crash.html

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

LayoutTests:

* accessibility/mac/input-string-for-range-crash-expected.txt: Added.
* accessibility/mac/input-string-for-range-crash.html: Added.

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

3 years agoAdd ML to ARES6
sbarati@apple.com [Tue, 25 Apr 2017 00:04:00 +0000 (00:04 +0000)]
Add ML to ARES6
https://bugs.webkit.org/show_bug.cgi?id=171206

Rubber stamped by Filip Pizlo.

This patch adds a new test to ARES6 called ML. ML is an implementation of
a feedforward neural network: https://github.com/mljs/feedforward-neural-networks.
It makes heavy use of classes, and does non-trivial matrix math using the
ml-matrix library: https://github.com/mljs/matrix

* ARES-6/about.html:
* ARES-6/cli.js:
* ARES-6/glue.js:
* ARES-6/index.html:
* ARES-6/ml: Added.
* ARES-6/ml/benchmark.js: Added.
* ARES-6/ml/index.js: Added.
* ARES-6/ml_benchmark.js: Added.

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

3 years agoSet defaults video getUserMedia constraints
commit-queue@webkit.org [Tue, 25 Apr 2017 00:02:29 +0000 (00:02 +0000)]
Set defaults video getUserMedia constraints
https://bugs.webkit.org/show_bug.cgi?id=171127

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

Source/WebCore:

Test: fast/mediastream/getUserMedia-default.html

Adding default optional constraints for video size and frame rate if none is defined.
Default is 640x480 30fps.

Doing some refactoring in MeddiaConstraintsImpl and MeddiaConstraintsData to use more move constructors.

* Modules/mediastream/MediaConstraintsImpl.cpp:
(WebCore::defaultVideoConstraints):
(WebCore::MediaConstraintsData::setDefaultVideoConstraints):
(WebCore::MediaConstraintsImpl::create): Deleted.
* Modules/mediastream/MediaConstraintsImpl.h:
* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::getUserMedia):
* platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
(WebCore::MockRealtimeVideoSourceMac::updateSampleBuffer): Fixing crash when setting frameRate.

Source/WebKit2:

Updated to cope with MediaStreamConstraintsImpl refactoring.

* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):

LayoutTests:

* fast/mediastream/getUserMedia-default-expected.txt: Added.
* fast/mediastream/getUserMedia-default.html: Added.

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

3 years agoPackage ImageDiff built with host SDK
jbedard@apple.com [Mon, 24 Apr 2017 23:44:58 +0000 (23:44 +0000)]
Package ImageDiff built with host SDK
https://bugs.webkit.org/show_bug.cgi?id=168944
<rdar://problem/30745642>

Reviewed by David Kilzer.

iOS Simulator and iOS device should archive the ImageDiff built for the host
machine.

* BuildSlaveSupport/built-product-archive:
(determineWebKitBuildDirectories): Add _hostBuildDirectory for iOS.
(archiveBuiltProduct): Archive Mac products for iOS so that ImageDiff is included.

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

3 years agocreateElementNS() should now throw only InvalidCharacterError, not NamespaceError
cdumez@apple.com [Mon, 24 Apr 2017 23:43:24 +0000 (23:43 +0000)]
createElementNS() should now throw only InvalidCharacterError, not NamespaceError
https://bugs.webkit.org/show_bug.cgi?id=171052

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Re-sync web-platform-tests/dom from upstream to gain test coverage.

* web-platform-tests/dom/collections/HTMLCollection-as-proto-length-get-throws.html:
* web-platform-tests/dom/collections/HTMLCollection-empty-name.html:
* web-platform-tests/dom/collections/HTMLCollection-supported-property-indices.html:
* web-platform-tests/dom/collections/HTMLCollection-supported-property-names.html:
* web-platform-tests/dom/collections/domstringmap-supported-property-names.html:
* web-platform-tests/dom/collections/namednodemap-supported-property-names.html:
* web-platform-tests/dom/events/AddEventListenerOptions-once.html:
* web-platform-tests/dom/events/AddEventListenerOptions-passive.html:
* web-platform-tests/dom/events/CustomEvent.html:
* web-platform-tests/dom/events/Event-cancelBubble.html:
* web-platform-tests/dom/events/Event-constants.html:
* web-platform-tests/dom/events/Event-constructors.html:
* web-platform-tests/dom/events/Event-defaultPrevented-after-dispatch.html:
* web-platform-tests/dom/events/Event-defaultPrevented.html:
* web-platform-tests/dom/events/Event-dispatch-bubble-canceled.html:
* web-platform-tests/dom/events/Event-dispatch-bubbles-false.html:
* web-platform-tests/dom/events/Event-dispatch-bubbles-true.html:
* web-platform-tests/dom/events/Event-dispatch-click.html:
* web-platform-tests/dom/events/Event-dispatch-detached-click.html:
* web-platform-tests/dom/events/Event-dispatch-handlers-changed.html:
* web-platform-tests/dom/events/Event-dispatch-multiple-cancelBubble.html:
* web-platform-tests/dom/events/Event-dispatch-multiple-stopPropagation.html:
* web-platform-tests/dom/events/Event-dispatch-omitted-capture.html:
* web-platform-tests/dom/events/Event-dispatch-order.html:
* web-platform-tests/dom/events/Event-dispatch-other-document.html:
* web-platform-tests/dom/events/Event-dispatch-propagation-stopped.html:
* web-platform-tests/dom/events/Event-dispatch-redispatch.html:
* web-platform-tests/dom/events/Event-dispatch-reenter.html:
* web-platform-tests/dom/events/Event-dispatch-target-moved.html:
* web-platform-tests/dom/events/Event-dispatch-target-removed.html:
* web-platform-tests/dom/events/Event-dispatch-throwing.html:
* web-platform-tests/dom/events/Event-init-while-dispatching.html:
* web-platform-tests/dom/events/Event-initEvent.html:
* web-platform-tests/dom/events/Event-propagation.html:
* web-platform-tests/dom/events/Event-subclasses-constructors.html:
* web-platform-tests/dom/events/Event-type-empty.html:
* web-platform-tests/dom/events/Event-type.html:
* web-platform-tests/dom/events/EventListener-handleEvent.html:
* web-platform-tests/dom/events/EventListener-incumbent-global-1.sub.html:
* web-platform-tests/dom/events/EventListener-incumbent-global-2.sub.html:
* web-platform-tests/dom/events/EventListener-invoke-legacy.html:
* web-platform-tests/dom/events/EventListenerOptions-capture.html:
* web-platform-tests/dom/events/EventTarget-addEventListener.html:
* web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue.html:
* web-platform-tests/dom/events/EventTarget-dispatchEvent.html:
* web-platform-tests/dom/events/EventTarget-removeEventListener.html:
* web-platform-tests/dom/historical.html:
* web-platform-tests/dom/interface-objects.html:
* web-platform-tests/dom/interfaces.html:
* web-platform-tests/dom/lists/DOMTokenList-Iterable.html:
* web-platform-tests/dom/lists/DOMTokenList-coverage-for-attributes.html:
* web-platform-tests/dom/lists/DOMTokenList-iteration.html:
* web-platform-tests/dom/lists/DOMTokenList-stringifier.html:
* web-platform-tests/dom/lists/DOMTokenList-value.html:
* web-platform-tests/dom/nodes/CharacterData-appendChild.html:
* web-platform-tests/dom/nodes/CharacterData-appendData.html:
* web-platform-tests/dom/nodes/CharacterData-data.html:
* web-platform-tests/dom/nodes/CharacterData-deleteData.html:
* web-platform-tests/dom/nodes/CharacterData-insertData.html:
* web-platform-tests/dom/nodes/CharacterData-remove.html:
* web-platform-tests/dom/nodes/CharacterData-replaceData.html:
* web-platform-tests/dom/nodes/CharacterData-substringData.html:
* web-platform-tests/dom/nodes/CharacterData-surrogates.html:
* web-platform-tests/dom/nodes/ChildNode-after.html:
* web-platform-tests/dom/nodes/ChildNode-before.html:
* web-platform-tests/dom/nodes/ChildNode-replaceWith.html:
* web-platform-tests/dom/nodes/Comment-constructor.html:
* web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt:
* web-platform-tests/dom/nodes/DOMImplementation-createDocument.html:
* web-platform-tests/dom/nodes/DOMImplementation-createDocumentType-expected.txt:
* web-platform-tests/dom/nodes/DOMImplementation-createDocumentType.html:
* web-platform-tests/dom/nodes/DOMImplementation-createHTMLDocument.html:
* web-platform-tests/dom/nodes/DOMImplementation-hasFeature.html:
* web-platform-tests/dom/nodes/Document-URL.sub.html:
* web-platform-tests/dom/nodes/Document-adoptNode.html:
* web-platform-tests/dom/nodes/Document-characterSet-normalization.html:
* web-platform-tests/dom/nodes/Document-constructor.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_bmp.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_css.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_01.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_02.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_gif.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_html.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_javascripturi.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_jpg.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_01.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_02.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_png.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_txt.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_xml.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/createDocument.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/createHTMLDocument.html:
* web-platform-tests/dom/nodes/Document-contentType/contentType/xhr_responseType_document.html:
* web-platform-tests/dom/nodes/Document-createAttribute.html:
* web-platform-tests/dom/nodes/Document-createComment.html:
* web-platform-tests/dom/nodes/Document-createElement-namespace-tests/w3c-import.log:
* web-platform-tests/dom/nodes/Document-createElement-namespace.html:
* web-platform-tests/dom/nodes/Document-createElement.html:
* web-platform-tests/dom/nodes/Document-createElementNS-expected.txt:
* web-platform-tests/dom/nodes/Document-createElementNS.html:
* web-platform-tests/dom/nodes/Document-createElementNS.js:
* web-platform-tests/dom/nodes/Document-createEvent.html:
* web-platform-tests/dom/nodes/Document-createProcessingInstruction-xhtml.xhtml:
* web-platform-tests/dom/nodes/Document-createProcessingInstruction.html:
* web-platform-tests/dom/nodes/Document-createTextNode.html:
* web-platform-tests/dom/nodes/Document-createTreeWalker.html:
* web-platform-tests/dom/nodes/Document-doctype.html:
* web-platform-tests/dom/nodes/Document-getElementById.html:
* web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml:
* web-platform-tests/dom/nodes/Document-getElementsByTagName.html:
* web-platform-tests/dom/nodes/Document-getElementsByTagNameNS.html:
* web-platform-tests/dom/nodes/Document-implementation.html:
* web-platform-tests/dom/nodes/Document-importNode.html:
* web-platform-tests/dom/nodes/DocumentType-literal-xhtml.xhtml:
* web-platform-tests/dom/nodes/DocumentType-literal.html:
* web-platform-tests/dom/nodes/DocumentType-remove.html:
* web-platform-tests/dom/nodes/Element-childElement-null-xhtml.xhtml:
* web-platform-tests/dom/nodes/Element-childElement-null.html:
* web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-xhtml.xhtml:
* web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.html:
* web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-xhtml.xhtml:
* web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove.html:
* web-platform-tests/dom/nodes/Element-childElementCount-nochild-xhtml.xhtml:
* web-platform-tests/dom/nodes/Element-childElementCount-nochild.html:
* web-platform-tests/dom/nodes/Element-childElementCount-xhtml.xhtml:
* web-platform-tests/dom/nodes/Element-childElementCount.html:
* web-platform-tests/dom/nodes/Element-children.html:
* web-platform-tests/dom/nodes/Element-classlist.html:
* web-platform-tests/dom/nodes/Element-closest.html:
* web-platform-tests/dom/nodes/Element-firstElementChild-entity-xhtml.xhtml:
* web-platform-tests/dom/nodes/Element-firstElementChild-namespace-xhtml.xhtml:
* web-platform-tests/dom/nodes/Element-firstElementChild-namespace.html:
* web-platform-tests/dom/nodes/Element-firstElementChild-xhtml.xhtml:
* web-platform-tests/dom/nodes/Element-firstElementChild.html:
* web-platform-tests/dom/nodes/Element-getElementsByClassName.html:
* web-platform-tests/dom/nodes/Element-getElementsByTagName-change-document-HTMLNess.html:
* web-platform-tests/dom/nodes/Element-getElementsByTagName.html:
* web-platform-tests/dom/nodes/Element-getElementsByTagNameNS.html:
* web-platform-tests/dom/nodes/Element-hasAttributes.html:
* web-platform-tests/dom/nodes/Element-insertAdjacentElement.html:
* web-platform-tests/dom/nodes/Element-insertAdjacentText.html:
* web-platform-tests/dom/nodes/Element-lastElementChild-xhtml.xhtml:
* web-platform-tests/dom/nodes/Element-lastElementChild.html:
* web-platform-tests/dom/nodes/Element-matches.html:
* web-platform-tests/dom/nodes/Element-nextElementSibling-xhtml.xhtml:
* web-platform-tests/dom/nodes/Element-nextElementSibling.html:
* web-platform-tests/dom/nodes/Element-previousElementSibling-xhtml.xhtml:
* web-platform-tests/dom/nodes/Element-previousElementSibling.html:
* web-platform-tests/dom/nodes/Element-remove.html:
* web-platform-tests/dom/nodes/Element-removeAttributeNS.html:
* web-platform-tests/dom/nodes/Element-siblingElement-null-xhtml.xhtml:
* web-platform-tests/dom/nodes/Element-siblingElement-null.html:
* web-platform-tests/dom/nodes/Element-tagName.html:
* web-platform-tests/dom/nodes/Element-webkitMatchesSelector.html:
* web-platform-tests/dom/nodes/MutationObserver-attributes.html:
* web-platform-tests/dom/nodes/MutationObserver-characterData.html:
* web-platform-tests/dom/nodes/MutationObserver-childList.html:
* web-platform-tests/dom/nodes/MutationObserver-disconnect.html:
* web-platform-tests/dom/nodes/MutationObserver-document.html:
* web-platform-tests/dom/nodes/MutationObserver-inner-outer.html:
* web-platform-tests/dom/nodes/MutationObserver-takeRecords.html:
* web-platform-tests/dom/nodes/Node-appendChild.html:
* web-platform-tests/dom/nodes/Node-baseURI.html:
* web-platform-tests/dom/nodes/Node-childNodes.html:
* web-platform-tests/dom/nodes/Node-cloneNode.html:
* web-platform-tests/dom/nodes/Node-compareDocumentPosition.html:
* web-platform-tests/dom/nodes/Node-constants.html:
* web-platform-tests/dom/nodes/Node-contains-xml.xml:
* web-platform-tests/dom/nodes/Node-contains.html:
* web-platform-tests/dom/nodes/Node-insertBefore.html:
* web-platform-tests/dom/nodes/Node-isConnected.html:
* web-platform-tests/dom/nodes/Node-isEqualNode-xhtml.xhtml:
* web-platform-tests/dom/nodes/Node-isEqualNode.html:
* web-platform-tests/dom/nodes/Node-isSameNode.html:
* web-platform-tests/dom/nodes/Node-lookupNamespaceURI.html:
* web-platform-tests/dom/nodes/Node-lookupPrefix.xhtml:
* web-platform-tests/dom/nodes/Node-nodeName-xhtml.xhtml:
* web-platform-tests/dom/nodes/Node-nodeName.html:
* web-platform-tests/dom/nodes/Node-nodeValue.html:
* web-platform-tests/dom/nodes/Node-normalize.html:
* web-platform-tests/dom/nodes/Node-parentElement.html:
* web-platform-tests/dom/nodes/Node-parentNode.html:
* web-platform-tests/dom/nodes/Node-properties.html:
* web-platform-tests/dom/nodes/Node-removeChild.html:
* web-platform-tests/dom/nodes/Node-replaceChild.html:
* web-platform-tests/dom/nodes/Node-textContent.html:
* web-platform-tests/dom/nodes/NodeList-Iterable.html:
* web-platform-tests/dom/nodes/ParentNode-append.html:
* web-platform-tests/dom/nodes/ParentNode-prepend.html:
* web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht.xht:
* web-platform-tests/dom/nodes/ParentNode-querySelector-All.html:
* web-platform-tests/dom/nodes/ProcessingInstruction-escapes-1.xhtml:
* web-platform-tests/dom/nodes/ProcessingInstruction-literal-1.xhtml:
* web-platform-tests/dom/nodes/ProcessingInstruction-literal-2.xhtml:
* web-platform-tests/dom/nodes/Text-constructor.html:
* web-platform-tests/dom/nodes/Text-splitText.html:
* web-platform-tests/dom/nodes/append-on-Document.html:
* web-platform-tests/dom/nodes/attributes-expected.txt:
* web-platform-tests/dom/nodes/attributes.html:
* web-platform-tests/dom/nodes/case.html:
* web-platform-tests/dom/nodes/getElementsByClassName-01.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-02.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-03.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-04.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-05.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-06.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-07.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-08.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-09.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-10.xml:
* web-platform-tests/dom/nodes/getElementsByClassName-11.xml:
* web-platform-tests/dom/nodes/getElementsByClassName-12.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-13.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-14.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-15.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-16.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-17.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-18.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-19.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-20.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-21.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-22.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-23.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-24.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-25.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-26.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-27.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-28.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-29.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-30.htm:
* web-platform-tests/dom/nodes/getElementsByClassName-31.htm:
* web-platform-tests/dom/nodes/insert-adjacent.html:
* web-platform-tests/dom/nodes/prepend-on-Document.html:
* web-platform-tests/dom/nodes/remove-unscopable.html:
* web-platform-tests/dom/nodes/rootNode.html:
* web-platform-tests/dom/nodes/w3c-import.log:
* web-platform-tests/dom/ranges/Range-attributes.html:
* web-platform-tests/dom/ranges/Range-cloneContents.html:
* web-platform-tests/dom/ranges/Range-cloneRange.html:
* web-platform-tests/dom/ranges/Range-collapse.html:
* web-platform-tests/dom/ranges/Range-commonAncestorContainer-2.html:
* web-platform-tests/dom/ranges/Range-commonAncestorContainer.html:
* web-platform-tests/dom/ranges/Range-compareBoundaryPoints.html:
* web-platform-tests/dom/ranges/Range-comparePoint-2.html:
* web-platform-tests/dom/ranges/Range-comparePoint.html:
* web-platform-tests/dom/ranges/Range-constructor.html:
* web-platform-tests/dom/ranges/Range-deleteContents.html:
* web-platform-tests/dom/ranges/Range-detach.html:
* web-platform-tests/dom/ranges/Range-extractContents.html:
* web-platform-tests/dom/ranges/Range-insertNode.html:
* web-platform-tests/dom/ranges/Range-intersectsNode-binding.html:
* web-platform-tests/dom/ranges/Range-intersectsNode.html:
* web-platform-tests/dom/ranges/Range-isPointInRange.html:
* web-platform-tests/dom/ranges/Range-mutations-appendChild.html:
* web-platform-tests/dom/ranges/Range-mutations-appendData.html:
* web-platform-tests/dom/ranges/Range-mutations-dataChange.html:
* web-platform-tests/dom/ranges/Range-mutations-deleteData.html:
* web-platform-tests/dom/ranges/Range-mutations-insertBefore.html:
* web-platform-tests/dom/ranges/Range-mutations-insertData.html:
* web-platform-tests/dom/ranges/Range-mutations-removeChild.html:
* web-platform-tests/dom/ranges/Range-mutations-replaceChild.html:
* web-platform-tests/dom/ranges/Range-mutations-replaceData.html:
* web-platform-tests/dom/ranges/Range-mutations-splitText.html:
* web-platform-tests/dom/ranges/Range-selectNode.html:
* web-platform-tests/dom/ranges/Range-set.html:
* web-platform-tests/dom/ranges/Range-stringifier.html:
* web-platform-tests/dom/ranges/Range-surroundContents.html:
* web-platform-tests/dom/traversal/NodeFilter-constants.html:
* web-platform-tests/dom/traversal/NodeIterator-removal.html:
* web-platform-tests/dom/traversal/NodeIterator.html:
* web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html:
* web-platform-tests/dom/traversal/TreeWalker-basic.html:
* web-platform-tests/dom/traversal/TreeWalker-currentNode.html:
* web-platform-tests/dom/traversal/TreeWalker-previousNodeLastChildReject.html:
* web-platform-tests/dom/traversal/TreeWalker-previousSiblingLastChildSkip.html:
* web-platform-tests/dom/traversal/TreeWalker-traversal-reject.html:
* web-platform-tests/dom/traversal/TreeWalker-traversal-skip-most.html:
* web-platform-tests/dom/traversal/TreeWalker-traversal-skip.html:
* web-platform-tests/dom/traversal/TreeWalker-walking-outside-a-tree.html:
* web-platform-tests/dom/traversal/TreeWalker.html:

Source/WebCore:

Validating a qualified name should only throw InvalidCharacterError, not NamespaceError,
after:
- https://github.com/whatwg/dom/issues/319
- https://github.com/w3c/web-platform-tests/issues/5161
- https://github.com/whatwg/dom/issues/423

Latest spec:
- https://dom.spec.whatwg.org/#validate

No new tests, updated web-platform-tests.

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

LayoutTests:

Updated / rebaselined existing tests to reflect behavior change.

* fast/dom/DOMImplementation/createDocument-namespace-err-expected.txt:
* fast/dom/DOMImplementation/createDocumentType-err-expected.txt:
* fast/dom/DOMImplementation/script-tests/createDocument-namespace-err.js:
* fast/dom/DOMImplementation/script-tests/createDocumentType-err.js:
* fast/dom/Document/createAttributeNS-namespace-err-expected.txt:
* fast/dom/Document/createElementNS-namespace-err-expected.txt:
* fast/dom/Document/script-tests/createAttributeNS-namespace-err.js:
* fast/dom/Document/script-tests/createElementNS-namespace-err.js:
* fast/dom/Element/script-tests/setAttributeNS-namespace-err.js:
* fast/dom/Element/setAttributeNS-namespace-err-expected.txt:

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

3 years agoREGRESSION (214503): Webkit crash under RenderElement::repaintForPausedImageAnimation...
cdumez@apple.com [Mon, 24 Apr 2017 22:46:11 +0000 (22:46 +0000)]
REGRESSION (214503): Webkit crash under RenderElement::repaintForPausedImageAnimationsIfNeeded() when scrolling giphy pages
https://bugs.webkit.org/show_bug.cgi?id=171243
<rdar://problem/31715572>

Reviewed by Antti Koivisto.

Source/WebCore:

After r214503, we would frequently crash when scrolling giphy pages because we were failing to call
RenderView::removeRendererWithPausedImageAnimations(renderer, cachedImage) in some cases. This would
cause a RenderElement to still be associated to a CachedImage in RenderView but not in practice.
If the CachedImage then gets destroyed and the user scrolls, we end up calling
RenderElement::repaintForPausedImageAnimationsIfNeeded() with a bad CachedImage.

StyleCachedImage was properly calling RenderView::removeRendererWithPausedImageAnimations() before
unregistering the renderer as a client to the CachedImage. However, RenderImageResource was failing
to do the same. To make this less error-prone, I added a didRemoveCachedImageClient(CachedImage&)
function to the CachedImageClient interface. It is overriden in RenderElement only to call
RenderView::removeRendererWithPausedImageAnimations().

Test: fast/images/animated-gif-scrolling-crash.html

* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::didRemoveClient):
* loader/cache/CachedImageClient.h:
(WebCore::CachedImageClient::didRemoveCachedImageClient):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::didRemoveCachedImageClient):
* rendering/RenderElement.h:
* rendering/style/StyleCachedImage.cpp:
(WebCore::StyleCachedImage::removeClient):

LayoutTests:

Add layout test coverage.

* fast/images/animated-gif-scrolling-crash-expected.txt: Added.
* fast/images/animated-gif-scrolling-crash.html: Added.

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

3 years agoAllow tabs with capturing audio or video to exceed background CPU limit
cdumez@apple.com [Mon, 24 Apr 2017 22:43:22 +0000 (22:43 +0000)]
Allow tabs with capturing audio or video to exceed background CPU limit
https://bugs.webkit.org/show_bug.cgi?id=171249
<rdar://problem/31796314>

Reviewed by Geoffrey Garen.

Allow tabs with capturing audio or video to exceed background CPU limit as this
is a legit case of potentially high background CPU use.

* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didExceedBackgroundCPULimit):

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

3 years agoWeb Inspector: ObjC RWIProtocol codegen should better handle optional members
joepeck@webkit.org [Mon, 24 Apr 2017 22:02:06 +0000 (22:02 +0000)]
Web Inspector: ObjC RWIProtocol codegen should better handle optional members
https://bugs.webkit.org/show_bug.cgi?id=171251
<rdar://problem/31697002>

Reviewed by Brian Burg.

* inspector/scripts/codegen/generate_objc_protocol_types_implementation.py:
(ObjCProtocolTypesImplementationGenerator._generate_getter_for_member):
* inspector/scripts/codegen/objc_generator.py:
(ObjCGenerator.protocol_to_objc_expression_for_member):
(ObjCGenerator.protocol_to_objc_code_block_for_object_member):
Always be safe and nil check object property accesses, optional or not.

* inspector/scripts/tests/generic/expected/type-declaration-object-type.json-result:
* inspector/scripts/tests/generic/expected/type-requiring-runtime-casts.json-result:
Rebaselined inspector generator tests.

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

3 years agoThreadMessage API tests failing on release bots
keith_miller@apple.com [Mon, 24 Apr 2017 21:43:50 +0000 (21:43 +0000)]
ThreadMessage API tests failing on release bots
https://bugs.webkit.org/show_bug.cgi?id=171246

Reviewed by Saam Barati.

Need to make sure that C++ doesn't optimize away our spin loop.

* TestWebKitAPI/Tests/WTF/ThreadMessages.cpp:
(runThreadMessageTest):
(TEST):

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

3 years ago[macOS] Fix two minor issues with MediaSelectionOption::Type
aestes@apple.com [Mon, 24 Apr 2017 21:33:05 +0000 (21:33 +0000)]
[macOS] Fix two minor issues with MediaSelectionOption::Type
https://bugs.webkit.org/show_bug.cgi?id=171235

Reviewed by Sam Weinig.

* platform/MediaSelectionOption.h: Gave type a default value, and added explicit
constructors to make gcc and msvc happy.
* platform/mac/WebPlaybackControlsManager.mm:
(toAVTouchBarMediaSelectionOptionType): Added an ASSERT_NOT_REACHED if none of the switch
cases match.

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

3 years ago[mac debug] LayoutTest workers/wasm-long-compile-many.html is a flaky timeout
sbarati@apple.com [Mon, 24 Apr 2017 21:17:24 +0000 (21:17 +0000)]
[mac debug] LayoutTest workers/wasm-long-compile-many.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=171120
<rdar://problem/31781889>

Rubber stamped by Mark Lam.

Make the wasm binary we compile close to 50% smaller.

* workers/wasm-resources/long-compile-many.js:
(i.async.run):
(i.worker.onmessage):
* workers/wasm-resources/long-compile-worker.js:
* workers/wasm-resources/long-compile.js:
(async.run):
(worker.onmessage):

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

3 years agoASSERTION FAILED: m_table seen with workers/wasm-hashset LayoutTests
sbarati@apple.com [Mon, 24 Apr 2017 21:11:44 +0000 (21:11 +0000)]
ASSERTION FAILED: m_table seen with workers/wasm-hashset LayoutTests
https://bugs.webkit.org/show_bug.cgi?id=171119
<rdar://problem/31760635>

Reviewed by Keith Miller.

The HashSet of timer set notification callbacks can be accessed
and augmented simultaneously from different threads. e.g, the worker
thread can augment it while the wasm compilation thread will
access it. Therefore, accesses must be guarded by a lock.

* runtime/JSRunLoopTimer.cpp:
(JSC::JSRunLoopTimer::scheduleTimer):
(JSC::JSRunLoopTimer::addTimerSetNotification):
(JSC::JSRunLoopTimer::removeTimerSetNotification):
* runtime/JSRunLoopTimer.h:

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

3 years agoTry to fix the 32-bit macOS build.
aestes@apple.com [Mon, 24 Apr 2017 20:58:26 +0000 (20:58 +0000)]
Try to fix the 32-bit macOS build.

* UIProcess/Cocoa/WebViewImpl.mm:

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

3 years agoMark media/modern-media-controls/scrubber-support/scrubber-support-click.html as...
ryanhaddad@apple.com [Mon, 24 Apr 2017 20:48:17 +0000 (20:48 +0000)]
Mark media/modern-media-controls/scrubber-support/scrubber-support-click.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=171245

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

3 years ago[macOS] Enable media selection button on AVTouchBarScrubber
aestes@apple.com [Mon, 24 Apr 2017 20:46:41 +0000 (20:46 +0000)]
[macOS] Enable media selection button on AVTouchBarScrubber
https://bugs.webkit.org/show_bug.cgi?id=171149
<rdar://problem/29875010>

Reviewed by Beth Dakin.

Source/WebCore:

* platform/spi/cocoa/AVKitSPI.h:

Source/WebKit2:

* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::updateMediaTouchBar):

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

3 years agoWeb Inspector: DOM/XHR breakpoint sections should be collapsed by default
mattbaker@apple.com [Mon, 24 Apr 2017 19:48:20 +0000 (19:48 +0000)]
Web Inspector: DOM/XHR breakpoint sections should be collapsed by default
https://bugs.webkit.org/show_bug.cgi?id=170931

Reviewed by Brian Burg.

Set the default collapsed parameter for DOM / XHR Breakpoints sections,
and auto-expand the DOM Breakpoints when a breakpoint is added.

* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel):
(WebInspector.DebuggerSidebarPanel.prototype._domBreakpointAddedOrRemoved):

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

3 years agotest262: test262/test/language/computed-property-names/class/static/getter-prototype.js
commit-queue@webkit.org [Mon, 24 Apr 2017 19:25:01 +0000 (19:25 +0000)]
test262: test262/test/language/computed-property-names/class/static/getter-prototype.js
https://bugs.webkit.org/show_bug.cgi?id=170897

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-04-24
Reviewed by Saam Barati.

JSTests:

* test262.yaml:

Source/JavaScriptCore:

* parser/ASTBuilder.h:
(JSC::ASTBuilder::createArguments):
(JSC::ASTBuilder::createArgumentsList):
Reorder so all the createProperty methods are grouped together.

* parser/Parser.h:
* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseProperty):
(JSC::Parser<LexerType>::parseGetterSetter):
Refine the conditions for syntax errors for getter/setter
properties names. "prototype" is not allowed as a static
and "constructor" is not all when non-static.

* runtime/JSObject.cpp:
(JSC::JSObject::putGetter):
(JSC::JSObject::putSetter):
Throw exceptions. These methods are only used by this path
via op_put_getter_by_val / op_put_setter_by_val.

LayoutTests:

* js/class-syntax-declaration-expected.txt:
* js/script-tests/class-syntax-declaration.js:
Extend tests for static and non-static methods named "constructor" and "prototype".

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

3 years agoAddress some FIXMEs in JavaScript tests for bugs that have been fixed
commit-queue@webkit.org [Mon, 24 Apr 2017 18:08:56 +0000 (18:08 +0000)]
Address some FIXMEs in JavaScript tests for bugs that have been fixed
https://bugs.webkit.org/show_bug.cgi?id=171191

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-04-24
Reviewed by JF Bastien.

JSTests:

* stress/proxy-is-extensible.js:

LayoutTests:

* js/dom/custom-constructors-expected.txt:
* js/dom/script-tests/custom-constructors.js:
* js/script-tests/keyword-method-names.js:

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

3 years agotest262: test262/test/language/statements/for-of/dstr-array-elem-init-fn-name-arrow.js
commit-queue@webkit.org [Mon, 24 Apr 2017 17:59:49 +0000 (17:59 +0000)]
test262: test262/test/language/statements/for-of/dstr-array-elem-init-fn-name-arrow.js
https://bugs.webkit.org/show_bug.cgi?id=171160

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-04-24
Reviewed by JF Bastien.

JSTests:

* stress/inferred-names.js:
* test262.yaml:

Source/JavaScriptCore:

* parser/ASTBuilder.h:
(JSC::ASTBuilder::tryInferNameInPattern):
(JSC::ASTBuilder::tryInferNameInPatternWithIdentifier):
We supported getting the name from a BindingNode.
We extend this to support getting the name from a
ResolveNode inside of an AssignmentElementNode.

* parser/Nodes.h:
(JSC::DestructuringPatternNode::isAssignmentElementNode):
(JSC::AssignmentElementNode::isAssignmentElementNode):
Make it possible to identify an assignment element node.

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

3 years agoReduce copies and allocations in SharedBuffer::append
achristensen@apple.com [Mon, 24 Apr 2017 17:31:05 +0000 (17:31 +0000)]
Reduce copies and allocations in SharedBuffer::append
https://bugs.webkit.org/show_bug.cgi?id=170956

Reviewed by Andreas Kling.

Source/JavaScriptCore:

* runtime/ArrayBuffer.h:

Source/WebCore:

SharedBuffer was a mess of different data structures added over the years.
SharedBuffer::append would allocate large Vector<char>s and call memcpy, and that
is inefficient and causes crashes when large allocations fail, and the allocations
and copies aren't even necessary.  There were also const correctness problems in
ResourceLoader::addDataOrBuffer, and iterating a SharedBuffer was strange because
sometimes we don't want to add unnecessary copies.

These problems are solved by making SharedBuffer a Vector of read-only data segments,
which can be contained in various ways but we don't care because all we want to do is
read them.  Appending SharedBuffers is now const correct because we just add to a
Vector<Ref<DataSegment>> and neither SharedBuffer can write to the data.  Sometimes,
though, we want all the data to be in continuous memory, and if there are multiple
segments then the data needs to be copied once to a new segment.  We should audit the
call sites of SharedBuffer::data and see if this is really necessary.

No change in functional behavior.  Fewer copies of the data are made when buffering
data in the NetworkProcess.  No extra memory is allocated for bytes we think we might
need to append in the future.  Data is now only copied into one buffer lazily as needed,
which could slightly change when small delays from memcpy happen, but it's an overall
improvement.  We could have a performance hit if we were to call append() then data()
then append() then data() etc. but that doesn't happen in WebKit because we call append
repeatedly when buffering the data then call data() once when reading the data.

* editing/cocoa/EditorCocoa.mm:
(WebCore::archivedDataForAttributedString):
(WebCore::Editor::selectionInWebArchiveFormat):
(WebCore::Editor::dataInRTFDFormat):
(WebCore::Editor::dataInRTFFormat):
* editing/ios/EditorIOS.mm:
(WebCore::Editor::WebContentReader::readURL):
* editing/mac/EditorMac.mm:
(WebCore::Editor::imageInWebArchiveFormat):
* loader/TextTrackLoader.cpp:
(WebCore::TextTrackLoader::processNewCueData):
* loader/archive/cf/LegacyWebArchive.cpp:
(WebCore::LegacyWebArchive::createResource):
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::tryReplaceEncodedData):
* loader/cocoa/DiskCacheMonitorCocoa.mm:
(WebCore::DiskCacheMonitor::tryGetFileBackedSharedBufferFromCFURLCachedResponse):
* platform/SharedBuffer.cpp:
(WebCore::SharedBuffer::SharedBuffer):
(WebCore::SharedBuffer::create):
(WebCore::SharedBuffer::combineToOneSegment):
(WebCore::SharedBuffer::data):
(WebCore::SharedBuffer::createArrayBuffer):
(WebCore::SharedBuffer::append):
(WebCore::SharedBuffer::clear):
(WebCore::SharedBuffer::copy):
(WebCore::SharedBuffer::DataSegment::data):
(WebCore::SharedBuffer::DataSegment::size):
(WebCore::segmentIndex): Deleted.
(WebCore::offsetInSegment): Deleted.
(WebCore::allocateSegment): Deleted.
(WebCore::freeSegment): Deleted.
(WebCore::SharedBuffer::~SharedBuffer): Deleted.
(WebCore::SharedBuffer::size): Deleted.
(WebCore::SharedBuffer::duplicateDataBufferIfNecessary): Deleted.
(WebCore::SharedBuffer::appendToDataBuffer): Deleted.
(WebCore::SharedBuffer::clearDataBuffer): Deleted.
(WebCore::SharedBuffer::copyBufferAndClear): Deleted.
(WebCore::SharedBuffer::buffer): Deleted.
(WebCore::SharedBuffer::getSomeData): Deleted.
(WebCore::SharedBuffer::maybeTransferMappedFileData): Deleted.
(WebCore::SharedBuffer::clearPlatformData): Deleted.
(WebCore::SharedBuffer::maybeTransferPlatformData): Deleted.
(WebCore::SharedBuffer::hasPlatformData): Deleted.
(WebCore::SharedBuffer::platformData): Deleted.
(WebCore::SharedBuffer::maybeAppendPlatformData): Deleted.
* platform/SharedBuffer.h:
(WebCore::SharedBuffer::create): Deleted.
(WebCore::SharedBuffer::isEmpty): Deleted.
* platform/SharedBufferChunkReader.cpp:
(WebCore::SharedBufferChunkReader::nextChunk):
(WebCore::SharedBufferChunkReader::peek):
* platform/SharedBufferChunkReader.h:
* platform/URLParser.cpp:
(WebCore::URLParser::URLParser):
* platform/cf/KeyedEncoderCF.cpp:
(WebCore::KeyedEncoderCF::finishEncoding):
* platform/cf/SharedBufferCF.cpp:
(WebCore::SharedBuffer::SharedBuffer):
(WebCore::SharedBuffer::createCFData):
(WebCore::SharedBuffer::create):
(WebCore::SharedBuffer::hintMemoryNotNeededSoon):
(WebCore::SharedBuffer::append):
(WebCore::SharedBuffer::wrapCFData): Deleted.
(WebCore::SharedBuffer::hasPlatformData): Deleted.
(WebCore::SharedBuffer::platformData): Deleted.
(WebCore::SharedBuffer::platformDataSize): Deleted.
(WebCore::SharedBuffer::maybeTransferPlatformData): Deleted.
(WebCore::SharedBuffer::clearPlatformData): Deleted.
(WebCore::SharedBuffer::tryReplaceContentsWithPlatformBuffer): Deleted.
(WebCore::SharedBuffer::maybeAppendPlatformData): Deleted.
(WebCore::SharedBuffer::copyBufferAndClear): Deleted.
(WebCore::SharedBuffer::copySomeDataFromDataArray): Deleted.
(WebCore::SharedBuffer::singleDataArrayBuffer): Deleted.
(WebCore::SharedBuffer::maybeAppendDataArray): Deleted.
* platform/cocoa/NetworkExtensionContentFilter.mm:
(WebCore::NetworkExtensionContentFilter::replacementData):
* platform/cocoa/ParentalControlsContentFilter.mm:
(WebCore::ParentalControlsContentFilter::replacementData):
* platform/cocoa/SharedBufferCocoa.mm:
(-[WebCoreSharedBufferData initWithSharedBufferDataSegment:]):
(-[WebCoreSharedBufferData length]):
(-[WebCoreSharedBufferData bytes]):
(WebCore::SharedBuffer::create):
(WebCore::SharedBuffer::createCFData):
(WebCore::SharedBuffer::createFromReadingFile):
(WebCore::SharedBuffer::createNSDataArray):
(-[WebCoreSharedBufferData initWithSharedBufferDataBuffer:]): Deleted.
(WebCore::SharedBuffer::wrapNSData): Deleted.
(WebCore::SharedBuffer::existingCFData): Deleted.
* platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm:
(WebCore::WebCoreAVFResourceLoader::fulfillRequestWithResource):
* platform/graphics/cocoa/FontPlatformDataCocoa.mm:
(WebCore::FontPlatformData::openTypeTable):
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(ResourceHandleStreamingClient::didReceiveBuffer):
* platform/graphics/mac/ImageMac.mm:
(WebCore::Image::loadPlatformResource):
* platform/image-decoders/ImageDecoder.cpp:
(WebCore::ImageDecoder::create):
* platform/image-decoders/png/PNGImageDecoder.cpp:
(WebCore::PNGImageReader::decode):
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::readBuffer):
* platform/mac/PasteboardMac.mm:
(WebCore::writeFileWrapperAsRTFDAttachment):
(WebCore::Pasteboard::write):
* platform/mac/PlatformPasteboardMac.mm:
(WebCore::PlatformPasteboard::bufferForType):
* platform/network/BlobResourceHandle.cpp:
(WebCore::BlobResourceHandle::notifyReceiveData):
* platform/network/MIMEHeader.cpp:
* platform/network/MIMEHeader.h:
* platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveData):
* platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp:
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveData):
* platform/network/mac/WebCoreResourceHandleAsDelegate.mm:
(-[WebCoreResourceHandleAsDelegate connection:didReceiveData:lengthReceived:]):
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveData:lengthReceived:]):
* platform/soup/SharedBufferSoup.cpp:
(WebCore::SharedBuffer::SharedBuffer):
(WebCore::SharedBuffer::createSoupBuffer):
(WebCore::SharedBuffer::clearPlatformData): Deleted.
(WebCore::SharedBuffer::maybeTransferPlatformData): Deleted.
(WebCore::SharedBuffer::hasPlatformData): Deleted.
(WebCore::SharedBuffer::platformData): Deleted.
(WebCore::SharedBuffer::platformDataSize): Deleted.
(WebCore::SharedBuffer::maybeAppendPlatformData): Deleted.
(WebCore::SharedBuffer::tryReplaceContentsWithPlatformBuffer): Deleted.

Source/WebKit/mac:

* WebView/WebArchive.mm:
(-[WebArchive initWithData:]):
* WebView/WebFrame.mm:
(-[WebFrame _loadData:MIMEType:textEncodingName:baseURL:unreachableURL:]):
* WebView/WebResource.mm:
(-[WebResource initWithCoder:]):
(-[WebResource _initWithData:URL:MIMEType:textEncodingName:frameName:response:copyData:]):

Source/WebKit2:

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveData:]):
* Platform/IPC/DataReference.cpp:
(IPC::SharedBufferDataReference::encode):
* Shared/ShareableResource.cpp:
(WebKit::ShareableResource::wrapInSharedBuffer):
* UIProcess/API/Cocoa/WKURLSchemeHandlerTask.mm:
(-[WKURLSchemeHandlerTaskImpl didReceiveData:]):
* WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
(-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]):
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::addArchiveResource):
(WebKit::PDFPlugin::liveResourceData):
(WebKit::PDFPlugin::writeItemsToPasteboard):
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::redeliverManualStream):
* WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::WebDragClient::declareAndWriteDragImage):
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::cachedResponseDataForURL):

Tools:

* TestWebKitAPI/Tests/WebCore/cocoa/SharedBuffer.mm:
(TestWebKitAPI::TEST_F):

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

3 years ago[Cocoa] Some ivars are needlessly @protected
mitz@apple.com [Mon, 24 Apr 2017 17:26:23 +0000 (17:26 +0000)]
[Cocoa] Some ivars are needlessly @protected
https://bugs.webkit.org/show_bug.cgi?id=171208

Source/WebCore:

Reviewed by Anders Carlsson.

Made ivars @private where possible.

* platform/mac/WebCoreFullScreenPlaceholderView.h:
* platform/mac/WebCoreFullScreenWarningView.h:
* platform/mac/WebPlaybackControlsManager.h:
* platform/network/cocoa/WebCoreNSURLSession.h:

Source/WebKit/mac:

Reviewed by Anders Carlsson

Made ivars @private where possible.

* Misc/WebUserContentURLPattern.h:
* Plugins/WebPluginDatabase.h:
* Storage/WebDatabaseQuotaManager.h:
* WebCoreSupport/WebSecurityOriginPrivate.h:
* WebInspector/WebInspector.h:
* WebView/WebDeviceOrientation.h:
* WebView/WebDeviceOrientationProviderMock.h:
* WebView/WebGeolocationPosition.h:
* WebView/WebHTMLRepresentation.h:
* WebView/WebNotification.h:

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

3 years agoUnreviewed follow-up to r215681.
zandobersek@gmail.com [Mon, 24 Apr 2017 17:21:00 +0000 (17:21 +0000)]
Unreviewed follow-up to r215681.

* Source/cmake/OptionsGTK.cmake: Don't re-define the ENABLE_SUBTLE_CRYPTO
macro, that's already done by the option macro.

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

3 years ago[GTK] Switch to use ENABLE_REMOTE_INSPECTOR instead of ENABLE_INSPECTOR_SERVER for...
carlosgc@webkit.org [Mon, 24 Apr 2017 16:17:16 +0000 (16:17 +0000)]
[GTK] Switch to use ENABLE_REMOTE_INSPECTOR instead of ENABLE_INSPECTOR_SERVER for the remote inspector
https://bugs.webkit.org/show_bug.cgi?id=166680

Reviewed by Michael Catanzaro.

.:

Add private option for ENABLE_REMOTE_INSPECTOR and enabled it by default.

* Source/cmake/OptionsGTK.cmake:

Source/JavaScriptCore:

Add GTK+ port implementation of RemoteInspector.

* PlatformGTK.cmake:
* inspector/remote/RemoteConnectionToTarget.h:
* inspector/remote/RemoteInspector.h:
* inspector/remote/glib/RemoteConnectionToTargetGlib.cpp: Added.
(Inspector::RemoteConnectionToTarget::RemoteConnectionToTarget):
(Inspector::RemoteConnectionToTarget::~RemoteConnectionToTarget):
(Inspector::RemoteConnectionToTarget::setup):
(Inspector::RemoteConnectionToTarget::sendMessageToTarget):
(Inspector::RemoteConnectionToTarget::close):
(Inspector::RemoteConnectionToTarget::targetClosed):
(Inspector::RemoteConnectionToTarget::targetIdentifier):
(Inspector::RemoteConnectionToTarget::sendMessageToFrontend):
* inspector/remote/glib/RemoteInspectorGlib.cpp: Added.
(Inspector::RemoteInspector::singleton):
(Inspector::RemoteInspector::RemoteInspector):
(Inspector::RemoteInspector::start):
(Inspector::RemoteInspector::stopInternal):
(Inspector::RemoteInspector::setupConnection):
(Inspector::dbusConnectionCallAsyncReadyCallback):
(Inspector::RemoteInspector::listingForInspectionTarget):
(Inspector::RemoteInspector::listingForAutomationTarget):
(Inspector::RemoteInspector::pushListingsNow):
(Inspector::RemoteInspector::pushListingsSoon):
(Inspector::RemoteInspector::updateAutomaticInspectionCandidate):
(Inspector::RemoteInspector::sendAutomaticInspectionCandidateMessage):
(Inspector::RemoteInspector::sendMessageToRemote):
(Inspector::RemoteInspector::receivedGetTargetListMessage):
(Inspector::RemoteInspector::receivedSetupMessage):
(Inspector::RemoteInspector::receivedDataMessage):
(Inspector::RemoteInspector::receivedCloseMessage):
(Inspector::RemoteInspector::setup):
(Inspector::RemoteInspector::sendMessageToTarget):
(Inspector::RemoteInspector::requestAutomationSession):
* inspector/remote/glib/RemoteInspectorServer.cpp: Added.
(Inspector::generateConnectionID):
(Inspector::RemoteInspectorServer::singleton):
(Inspector::RemoteInspectorServer::~RemoteInspectorServer):
(Inspector::RemoteInspectorServer::interfaceInfo):
(Inspector::RemoteInspectorServer::start):
(Inspector::RemoteInspectorServer::newConnectionCallback):
(Inspector::RemoteInspectorServer::connectionClosedCallback):
(Inspector::RemoteInspectorServer::newConnection):
(Inspector::dbusConnectionCallAsyncReadyCallback):
(Inspector::RemoteInspectorServer::setTargetList):
(Inspector::RemoteInspectorServer::clientConnectionClosedCallback):
(Inspector::RemoteInspectorServer::getTargetList):
(Inspector::RemoteInspectorServer::setup):
(Inspector::RemoteInspectorServer::close):
(Inspector::RemoteInspectorServer::clientConnectionClosed):
(Inspector::RemoteInspectorServer::connectionClosed):
(Inspector::RemoteInspectorServer::sendMessageToBackend):
(Inspector::RemoteInspectorServer::sendMessageToFrontend):
(Inspector::RemoteInspectorServer::startAutomationSession):
* inspector/remote/glib/RemoteInspectorServer.h: Added.
(Inspector::RemoteInspectorServer::isRunning):

Source/WebCore:

Add PageDebuggable.cpp to the compilation.

* CMakeLists.txt:

Source/WebCore/platform/gtk/po:

* POTFILES.in: Add RemoteWebInspectorProxyGtk.cpp.

Source/WebKit2:

Remove INSPECTOR_SERVER code and add new classes to implement REMOTE_INSPECTOR. The WebKitWebContext registers a
custom protocol "inspector" that loads a page with the list of debuggable targets.

* PlatformGTK.cmake: Add new files to compilation and remove the old ones.
* UIProcess/API/gtk/WebKit2InspectorGResourceBundle.xml: Removed.
* UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp: Added.
(WebKit::RemoteInspectorProtocolHandler::RemoteInspectorProtocolHandler):
(WebKit::RemoteInspectorProtocolHandler::~RemoteInspectorProtocolHandler):
(WebKit::RemoteInspectorProtocolHandler::webViewDestroyed):
(WebKit::RemoteInspectorProtocolHandler::userContentManagerDestroyed):
(WebKit::RemoteInspectorProtocolHandler::handleRequest):
(WebKit::RemoteInspectorProtocolHandler::inspect):
(WebKit::RemoteInspectorProtocolHandler::targetListChanged):
(WebKit::RemoteInspectorProtocolHandler::connectionClosed):
* UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.h: Added.
* UIProcess/API/gtk/WebKitWebContext.cpp:
(webkitWebContextConstructed):
* UIProcess/InspectorServer/HTTPRequest.cpp: Add missing ENABLE(INSPECTOR_SERVER) ifdefs.
* UIProcess/InspectorServer/HTTPRequest.h:
* UIProcess/InspectorServer/WebInspectorServer.h:
* UIProcess/InspectorServer/gtk/WebInspectorServerGtk.cpp: Removed.
* UIProcess/RemoteWebInspectorProxy.cpp:
* UIProcess/RemoteWebInspectorProxy.h:
* UIProcess/WebProcessPool.cpp:
* UIProcess/glib/RemoteInspectorClient.cpp: Added.
(WebKit::RemoteInspectorClient::RemoteInspectorClient):
(WebKit::RemoteInspectorClient::~RemoteInspectorClient):
(WebKit::dbusConnectionCallAsyncReadyCallback):
(WebKit::RemoteInspectorClient::connectionClosedCallback):
(WebKit::RemoteInspectorClient::setupConnection):
(WebKit::RemoteInspectorClient::connectionClosed):
(WebKit::RemoteInspectorClient::inspect):
(WebKit::RemoteInspectorClient::sendMessageToBackend):
(WebKit::RemoteInspectorClient::closeFromFrontend):
(WebKit::RemoteInspectorClient::setTargetList):
(WebKit::RemoteInspectorClient::sendMessageToFrontend):
* UIProcess/glib/RemoteInspectorClient.h: Added.
(WebKit::RemoteInspectorObserver::~RemoteInspectorObserver):
(WebKit::RemoteInspectorClient::targets):
(WebKit::RemoteInspectorClient::hostAndPort):
* UIProcess/gtk/RemoteWebInspectorProxyGtk.cpp: Added.
(WebKit::RemoteWebInspectorProxy::updateWindowTitle):
(WebKit::inspectorViewDestroyed):
(WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
(WebKit::RemoteWebInspectorProxy::platformCloseFrontendPageAndWindow):
(WebKit::RemoteWebInspectorProxy::platformBringToFront):
(WebKit::RemoteWebInspectorProxy::platformSave):
(WebKit::RemoteWebInspectorProxy::platformAppend):
(WebKit::RemoteWebInspectorProxy::platformStartWindowDrag):
(WebKit::RemoteWebInspectorProxy::platformOpenInNewTab):
* UIProcess/gtk/WebProcessPoolGtk.cpp:
(WebKit::initializeRemoteInspectorServer):
(WebKit::WebProcessPool::platformInitialize):
(WebKit::WebProcessPool::platformInitializeWebProcess):
* WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:
(didReceiveMessageToPage): Updated after the GRefPtr hash traitds changes.
* config.h:

Source/WTF:

Add GRefPtr hash traits to allow using GRefPtr as a key of HashMaps.

* wtf/glib/GRefPtr.h:
(WTF::HashTraits<GRefPtr<P>>::emptyValue):
(WTF::HashTraits<GRefPtr<P>>::peek):
(WTF::HashTraits<GRefPtr<P>>::customDeleteBucket):

Tools:

Update remote inspector unit tests.

* TestWebKitAPI/Tests/WebKit2Gtk/InspectorTestServer.cpp:
(main):
* TestWebKitAPI/Tests/WebKit2Gtk/TestInspectorServer.cpp:
(connectToInspectorServer):
(waitUntilInspectorServerIsReady):
(startTestServer):
(testInspectorServerPageList):
(beforeAll):

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

3 years agotest262: test262/test/language/expressions/generators/yield-as-label.js
commit-queue@webkit.org [Mon, 24 Apr 2017 16:06:33 +0000 (16:06 +0000)]
test262: test262/test/language/expressions/generators/yield-as-label.js
https://bugs.webkit.org/show_bug.cgi?id=170979

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-04-24
Reviewed by Saam Barati.

JSTests:

* stress/async-await-module-reserved-word.js:
* stress/async-await-reserved-word.js:
Converge on "Cannot" instead of "Can't".

* catch-parameter-syntax.js:
* yield-named-variable-generator.js:
* yield-named-variable.js:
* stress/yield-label-generator.js:
* stress/yield-label.js:
* stress/yield-reserved-word.js: Added.
More complete list of when 'yield' is allowed.

* ChakraCore/test/strict/23.reservedWords_sm.baseline-jsc:
* test262.yaml:

Source/JavaScriptCore:

* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseVariableDeclarationList):
(JSC::Parser<LexerType>::parseDestructuringPattern):
(JSC::Parser<LexerType>::parseFormalParameters):
Converge on "Cannot" instead of "Can't" in error messages.

(JSC::Parser<LexerType>::parseFunctionInfo):
Disallow "yield" as the generator function name in function expressions.
This refers to the difference between Declaration and Expression, where
only GeneratorExpression explicitly has [+Yield] disallowing yield for
the generator name:

    GeneratorDeclaration[Yield, Await, Default]:
        function * BindingIdentifier[?Yield, ?Await] ...

    GeneratorExpression:
        function * BindingIdentifier[+Yield, ~Await]opt ...

(JSC::Parser<LexerType>::parseExpressionOrLabelStatement):
Disallow "yield" as a label name in strict mode or inside a generator.

(JSC::Parser<LexerType>::parseProperty):
Disallow "yield" or any keyword in object literal shorthands.

* parser/Parser.h:
(JSC::Parser::getToken):
(JSC::Parser::isDisallowedIdentifierLet):
(JSC::Parser::isDisallowedIdentifierYield):
(JSC::Parser::disallowedIdentifierLetReason):
(JSC::Parser::disallowedIdentifierYieldReason):
Follow pattern for improved error messages based on context.

LayoutTests:

* js/object-literal-shorthand-construction-expected.txt:
* js/script-tests/object-literal-shorthand-construction.js:
Extend this test to cover object literal shorthand with keywords.

* js/dom/reserved-words-as-property-expected.txt:
* js/let-syntax-expected.txt:
* js/parser-syntax-check-expected.txt:
Improved error messages.

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

3 years ago[GTK] Make the ENABLE_SUBTLE_CRYPTO option depend on libgcrypt 1.7.0
zandobersek@gmail.com [Mon, 24 Apr 2017 13:15:35 +0000 (13:15 +0000)]
[GTK] Make the ENABLE_SUBTLE_CRYPTO option depend on libgcrypt 1.7.0
https://bugs.webkit.org/show_bug.cgi?id=171112

Reviewed by Michael Catanzaro.

* Source/cmake/OptionsGTK.cmake: When ENABLE_SUBTLE_CRYPTO feature is enabled,
the detected libgcrypt library version should be at least 1.7.0 since we'll be
relying on API that was introduced in that version.

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

3 years agoUnreviewed, rolling out r215674.
commit-queue@webkit.org [Mon, 24 Apr 2017 05:51:53 +0000 (05:51 +0000)]
Unreviewed, rolling out r215674.
https://bugs.webkit.org/show_bug.cgi?id=171212

Possible unintended commit. This patch was on the wrong bug.
(Requested by JoePeck on #webkit).

Reverted changeset:

"test262: test262/test/language/expressions/generators/yield-
as-label.js"
https://bugs.webkit.org/show_bug.cgi?id=170979
http://trac.webkit.org/changeset/215674

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

3 years agotest262: test262/test/built-ins/Number/prototype/toPrecision/nan.js
commit-queue@webkit.org [Sun, 23 Apr 2017 21:19:11 +0000 (21:19 +0000)]
test262: test262/test/built-ins/Number/prototype/toPrecision/nan.js
https://bugs.webkit.org/show_bug.cgi?id=171197

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-04-23
Reviewed by Saam Barati.

JSTests:

* test262.yaml:

Source/JavaScriptCore:

* runtime/NumberPrototype.cpp:
(JSC::numberProtoFuncToExponential):
(JSC::numberProtoFuncToFixed):
(JSC::numberProtoFuncToPrecision):
Refine the order of operations to match the spec.

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

3 years ago[macOS] WKWebInspectorProxyObjCAdapter has a public ivar
mitz@apple.com [Sun, 23 Apr 2017 20:47:13 +0000 (20:47 +0000)]
[macOS] WKWebInspectorProxyObjCAdapter has a public ivar
https://bugs.webkit.org/show_bug.cgi?id=171200

Reviewed by Geoffrey Garen.

* UIProcess/API/C/mac/WKInspectorPrivateMac.h: Made ivar private.

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

3 years agoUnreviewed, rolling out r215657 and r215676.
commit-queue@webkit.org [Sun, 23 Apr 2017 20:32:06 +0000 (20:32 +0000)]
Unreviewed, rolling out r215657 and r215676.
https://bugs.webkit.org/show_bug.cgi?id=171201

Broke the build (Requested by ap on #webkit).

Reverted changesets:

"[macOS] Enable media selection button on AVTouchBarScrubber"
https://bugs.webkit.org/show_bug.cgi?id=171149
http://trac.webkit.org/changeset/215657

"Build fix after r215657."
http://trac.webkit.org/changeset/215676

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

3 years agoBuild fix after r215657.
ap@apple.com [Sun, 23 Apr 2017 19:53:43 +0000 (19:53 +0000)]
Build fix after r215657.

* UIProcess/Cocoa/WebViewImpl.mm:

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

3 years agoAdd a tool to update expected.txt files from EWS bot results
commit-queue@webkit.org [Sun, 23 Apr 2017 19:52:07 +0000 (19:52 +0000)]
Add a tool to update expected.txt files from EWS bot results
https://bugs.webkit.org/show_bug.cgi?id=169538

Patch by Youenn Fablet <youenn@apple.com> on 2017-04-23
Reviewed by Ryosuke Niwa.

This script updates expected-txt files from bugzilla posted EWS results.
It uses mac-wk2 as the generic baseline and adds platform-specific results if other ports
have results different from the generic baseline.

* Scripts/update-test-expectations-from-bugzilla: Added.
* Scripts/webkitpy/common/net/bugzilla/test_expectation_updater.py: Added.
* Scripts/webkitpy/common/net/bugzilla/test_expectation_updater_unittest.py: Added.
* Scripts/webkitpy/layout_tests/controllers/test_result_writer.py: Adding helper routines.

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

3 years agotest262: test262/test/language/expressions/generators/yield-as-label.js
commit-queue@webkit.org [Sun, 23 Apr 2017 17:23:03 +0000 (17:23 +0000)]
test262: test262/test/language/expressions/generators/yield-as-label.js
https://bugs.webkit.org/show_bug.cgi?id=170979

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-04-23
Reviewed by Saam Barati.

JSTests:

* stress/async-await-module-reserved-word.js:
* stress/async-await-reserved-word.js:
Converge on "Cannot" instead of "Can't".

* catch-parameter-syntax.js:
* yield-named-variable-generator.js:
* yield-named-variable.js:
* stress/yield-label-generator.js:
* stress/yield-label.js:
* stress/yield-reserved-word.js: Added.
More complete list of when 'yield' is allowed.

* ChakraCore/test/strict/23.reservedWords_sm.baseline-jsc:
* test262.yaml:

Source/JavaScriptCore:

* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseVariableDeclarationList):
(JSC::Parser<LexerType>::parseDestructuringPattern):
(JSC::Parser<LexerType>::parseFormalParameters):
Converge on "Cannot" instead of "Can't" in error messages.

(JSC::Parser<LexerType>::parseFunctionInfo):
Disallow "yield" as the generator function name in function expressions.
This refers to the difference between Declaration and Expression, where
only GeneratorExpression explicitly has [+Yield] disallowing yield for
the generator name:

    GeneratorDeclaration[Yield, Await, Default]:
        function * BindingIdentifier[?Yield, ?Await] ...

    GeneratorExpression:
        function * BindingIdentifier[+Yield, ~Await]opt ...

(JSC::Parser<LexerType>::parseExpressionOrLabelStatement):
Disallow "yield" as a label name in strict mode or inside a generator.

(JSC::Parser<LexerType>::parseProperty):
Disallow "yield" or any keyword in object literal shorthands.

* parser/Parser.h:
(JSC::Parser::getToken):
(JSC::Parser::isDisallowedIdentifierLet):
(JSC::Parser::isDisallowedIdentifierYield):
(JSC::Parser::disallowedIdentifierLetReason):
(JSC::Parser::disallowedIdentifierYieldReason):
Follow pattern for improved error messages based on context.

LayoutTests:

* js/object-literal-shorthand-construction-expected.txt:
* js/script-tests/object-literal-shorthand-construction.js:
Extend this test to cover object literal shorthand with keywords.

* js/dom/reserved-words-as-property-expected.txt:
* js/let-syntax-expected.txt:
* js/parser-syntax-check-expected.txt:
Improved error messages.

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

3 years agotest262: test262/test/built-ins/Number/parseFloat.js
commit-queue@webkit.org [Sun, 23 Apr 2017 15:37:53 +0000 (15:37 +0000)]
test262: test262/test/built-ins/Number/parseFloat.js
https://bugs.webkit.org/show_bug.cgi?id=171193

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-04-23
Reviewed by Yusuke Suzuki.

JSTests:

* test262.yaml:

Source/JavaScriptCore:

* runtime/CommonIdentifiers.h:
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::parseFloatFunction):
Expose parseFloat on the global object to be shared with Number constructor.

* runtime/NumberConstructor.cpp:
(JSC::NumberConstructor::finishCreation):
parseFloat uses the same value as the global parseFloat.

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

3 years ago[macOS] AVTouchBarMediaSelectionOptions should be created with the correct type
aestes@apple.com [Sun, 23 Apr 2017 11:27:56 +0000 (11:27 +0000)]
[macOS] AVTouchBarMediaSelectionOptions should be created with the correct type
https://bugs.webkit.org/show_bug.cgi?id=171192
<rdar://problem/29875010>

Reviewed by Wenson Hsieh.

Source/WebCore:

AVTouchBarMediaSelectionOption was always being created with type
AVTouchBarMediaSelectionOptionTypeRegular, but we know if a TextTrack is really the legible
off or legible auto track. This change plumbs that information into
WebPlaybackControlsManager so that AVTouchBarMediaSelectionOptions can be created with the
right AVTouchBarMediaSelectionOptionType.

* WebCore.xcodeproj/project.pbxproj:
* page/CaptionUserPreferences.cpp:
(WebCore::CaptionUserPreferences::mediaSelectionOptionForTrack):
* page/CaptionUserPreferences.h:
* platform/MediaSelectionOption.h: Added.
* platform/cocoa/WebPlaybackSessionModel.h:
(WebCore::WebPlaybackSessionModelClient::audioMediaSelectionOptionsChanged):
(WebCore::WebPlaybackSessionModelClient::legibleMediaSelectionOptionsChanged):
* platform/cocoa/WebPlaybackSessionModelMediaElement.h:
* platform/cocoa/WebPlaybackSessionModelMediaElement.mm:
(WebCore::WebPlaybackSessionModelMediaElement::audioMediaSelectionOptions):
(WebCore::WebPlaybackSessionModelMediaElement::legibleMediaSelectionOptions):
* platform/ios/WebPlaybackSessionInterfaceAVKit.h:
* platform/ios/WebPlaybackSessionInterfaceAVKit.mm:
(WebCore::mediaSelectionOptions):
(WebCore::WebPlaybackSessionInterfaceAVKit::audioMediaSelectionOptionsChanged):
(WebCore::WebPlaybackSessionInterfaceAVKit::legibleMediaSelectionOptionsChanged):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(WebVideoFullscreenControllerContext::audioMediaSelectionOptionsChanged):
(WebVideoFullscreenControllerContext::legibleMediaSelectionOptionsChanged):
(WebVideoFullscreenControllerContext::audioMediaSelectionOptions):
(WebVideoFullscreenControllerContext::legibleMediaSelectionOptions):
* platform/mac/WebPlaybackControlsManager.h:
* platform/mac/WebPlaybackControlsManager.mm:
(toAVTouchBarMediaSelectionOptionType):
(mediaSelectionOptions):
(-[WebPlaybackControlsManager setAudioMediaSelectionOptions:withSelectedIndex:]):
(-[WebPlaybackControlsManager setLegibleMediaSelectionOptions:withSelectedIndex:]):
(-[WebPlaybackControlsManager webPlaybackSessionInterfaceMac]):
(-[WebPlaybackControlsManager setWebPlaybackSessionInterfaceMac:]):
* platform/mac/WebPlaybackSessionInterfaceMac.h:
* platform/mac/WebPlaybackSessionInterfaceMac.mm:
(WebCore::WebPlaybackSessionInterfaceMac::audioMediaSelectionOptionsChanged):
(WebCore::WebPlaybackSessionInterfaceMac::legibleMediaSelectionOptionsChanged):

Source/WebKit2:

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<MediaSelectionOption>::encode):
(IPC::ArgumentCoder<MediaSelectionOption>::decode):
* Shared/WebCoreArgumentCoders.h:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
(WebKit::WebPlaybackSessionModelContext::setAudioMediaSelectionOptions):
(WebKit::WebPlaybackSessionModelContext::setLegibleMediaSelectionOptions):
(WebKit::WebPlaybackSessionManagerProxy::setAudioMediaSelectionOptions):
(WebKit::WebPlaybackSessionManagerProxy::setLegibleMediaSelectionOptions):
* WebProcess/cocoa/WebPlaybackSessionManager.h:
* WebProcess/cocoa/WebPlaybackSessionManager.mm:
(WebKit::WebPlaybackSessionInterfaceContext::audioMediaSelectionOptionsChanged):
(WebKit::WebPlaybackSessionInterfaceContext::legibleMediaSelectionOptionsChanged):
(WebKit::WebPlaybackSessionManager::audioMediaSelectionOptionsChanged):
(WebKit::WebPlaybackSessionManager::legibleMediaSelectionOptionsChanged):

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

3 years ago[JSC] Use DoublyLinkedList for MachineThread
utatane.tea@gmail.com [Sun, 23 Apr 2017 09:12:44 +0000 (09:12 +0000)]
[JSC] Use DoublyLinkedList for MachineThread
https://bugs.webkit.org/show_bug.cgi?id=171171

Reviewed by Mark Lam.

MachineThread can use WTF::DoublyLinkedList to simplify
its implementation. We should not use Vector<> etc. since
we do not want to call allocations during suspending and
resuming threads.

* heap/MachineStackMarker.cpp:
(JSC::MachineThreads::MachineThreads):
(JSC::MachineThreads::~MachineThreads):
(JSC::MachineThreads::addCurrentThread):
(JSC::MachineThreads::removeThreadIfFound):
(JSC::MachineThreads::MachineThread::MachineThread):
(JSC::MachineThreads::tryCopyOtherThreadStacks):
* heap/MachineStackMarker.h:
(JSC::MachineThreads::threadsListHead):
* runtime/SamplingProfiler.cpp:
(JSC::FrameWalker::isValidFramePointer):
* runtime/VMTraps.cpp:
(JSC::findActiveVMAndStackBounds):

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

3 years agoAdd an option to import tip-of-tree WPT tests
commit-queue@webkit.org [Sun, 23 Apr 2017 06:27:15 +0000 (06:27 +0000)]
Add an option to import tip-of-tree WPT tests
https://bugs.webkit.org/show_bug.cgi?id=171152

Patch by Youenn Fablet <youenn@apple.com> on 2017-04-22
Reviewed by Joseph Pecoraro.

Adding a '-t' option to import tip of tree WPT tests.
Updating importer based on the fact that csswg-test is no longer a thing.

* Scripts/webkitpy/w3c/test_downloader.py:
(TestDownloader.download_tests):
* Scripts/webkitpy/w3c/test_importer.py:
(configure_logging):
(TestImporter.do_import):
(TestImporter.write_import_log):

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

3 years agoFile inputs only accept UTI types that can be inserted into contenteditable areas...
wenson_hsieh@apple.com [Sun, 23 Apr 2017 03:52:12 +0000 (03:52 +0000)]
File inputs only accept UTI types that can be inserted into contenteditable areas when dropping
https://bugs.webkit.org/show_bug.cgi?id=171177
<rdar://problem/31765379>

Reviewed by Andy Estes.

Source/WebCore:

Currently, DragController::canProcessDrag bails immediately with `false` if the drag data does not contain
compatible content. However, if we are dragging over a file input, we want the presence of files in the drag
data to take priority. To fix this, we teach DragData::containsCompatibleContent to take the purpose of the drag
into account (by default, this is Editing, but when dragging over a file input, this becomes FileUpload). We
then consider DragData to have compatible content for the purpose of file uploading if it contains any files.

Test: DataInteractionTests.ExternalSourceJSONToFileInput.

* page/DragController.cpp:
(WebCore::DragController::canProcessDrag):
* platform/DragData.h:
* platform/gtk/DragDataGtk.cpp:
(WebCore::DragData::containsCompatibleContent):
* platform/mac/DragDataMac.mm:
(WebCore::DragData::containsCompatibleContent):
* platform/win/DragDataWin.cpp:
(WebCore::DragData::containsCompatibleContent):

Tools:

Tests uploading a JSON file to a file input.

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

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

3 years ago[MediaStream] Fix regression caused by r215626
eric.carlson@apple.com [Sat, 22 Apr 2017 18:46:06 +0000 (18:46 +0000)]
[MediaStream] Fix regression caused by r215626
https://bugs.webkit.org/show_bug.cgi?id=171168
<rdar://problem/31774787>

Reviewed by Antoine Quint.

No new tests, fixes fast/mediastream/MediaStream-page-muted.html

* Modules/mediastream/MediaStream.cpp:
(WebCore::MediaStream::mediaState): Test muted before m_isProducingData because if both are
true we want to report that the stream is muted.

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

3 years ago[JSC] Get stack pointer without pthread attr
utatane.tea@gmail.com [Sat, 22 Apr 2017 18:08:01 +0000 (18:08 +0000)]
[JSC] Get stack pointer without pthread attr
https://bugs.webkit.org/show_bug.cgi?id=171162

Reviewed by Mark Lam.

If HAVE(MACHINE_CONTEXT) is not enabled, we get stack base and boundary by using
pthread_attr functions. However, it is wrong since this function can be called
after the thread is suspended. In that case, we should not call any functions
that is not async signal safe. For example, pthread_getattr_np calls malloc.

Instead we use getApproximateStackPointer(), which returns approximate stack pointer.

* wtf/Threading.h:
* wtf/ThreadingPthreads.cpp:
(WTF::getApproximateStackPointer):
(WTF::isOnAlternativeSignalStack):
When gathering conservative roots, we should keep stack pointer pointing stack.
And if concurrent GC is enabled, we always need to keep the above invariant.
So, we do not support alternative signal stack.

(WTF::Thread::signalHandlerSuspendResume):
(WTF::Thread::getRegisters):

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

3 years agoDo not measure large chunk of text repeatedly during mid-word breaking.
zalan@apple.com [Sat, 22 Apr 2017 14:34:35 +0000 (14:34 +0000)]
Do not measure large chunk of text repeatedly during mid-word breaking.
https://bugs.webkit.org/show_bug.cgi?id=171065
<rdar://problem/31630245>

Reviewed by Antti Koivisto.

This patch reduces redundant text measuring for mid-word breaking by
1. Adjusting the range for the binary search when the text fragment is longer than the available width
2. Preserving the width value for the left side of the split fragment (computed during the binary search) so
that when the fragment is being split we don't need to re-measure it
3. Checking if the right side fits the next line and only adjust the width (by re-measuring the text) for
kerning/ligature if it does (if it does not fit, we'll end up re-measuring some part of it
during the next split)

Performance test has already been added.

* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::hyphenPositionForFragment):
(WebCore::SimpleLineLayout::split): binary search with adjusting the range and preserving the width for the left side.
(WebCore::SimpleLineLayout::splitFragmentToFitLine):
(WebCore::SimpleLineLayout::FragmentForwardIterator::FragmentForwardIterator): Deleted.
(WebCore::SimpleLineLayout::FragmentForwardIterator::operator++): Deleted.
(WebCore::SimpleLineLayout::FragmentForwardIterator::operator!=): Deleted.
(WebCore::SimpleLineLayout::FragmentForwardIterator::operator==): Deleted.
(WebCore::SimpleLineLayout::FragmentForwardIterator::operator*): Deleted.
(WebCore::SimpleLineLayout::begin): Deleted.
(WebCore::SimpleLineLayout::end): Deleted.
* rendering/SimpleLineLayoutTextFragmentIterator.h:
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::split):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::splitWithHyphen):

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

3 years agoREGRESSION(r215638): [Linux] Several worker tests are crashing in Thread::signalHandl...
utatane.tea@gmail.com [Sat, 22 Apr 2017 14:07:29 +0000 (14:07 +0000)]
REGRESSION(r215638): [Linux] Several worker tests are crashing in Thread::signalHandlerSuspendResume after r215638
https://bugs.webkit.org/show_bug.cgi?id=171159

Reviewed by Michael Catanzaro.

Now, SIGUSR2 is used by ThreadMessage. Instead SIGUSR1 becomes empty.
We should use some signal, that is not managed by WTF Signal mechanism
because the behaivor of this suspend and resume is a bit tricky.
For example, we set a bit tricky signal mask to sigaction to temporary
block SIGUSR2 in the handler to avoid nested SIGUSR2. And we cannot
use ThreadMessage to implement this mechanism because this suspend
and resume handler will stop in the middle of the handler by sigsuspend.
It is not the expected semantics by ThreadMessage.

So now, we use SIGUSR1 instead. And we note that SIGUSR1 is used for
pthread ports.

* wtf/ThreadingPthreads.cpp:
* wtf/threads/Signals.h:

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

3 years agoWebAssembly: Module.exports, Module.imports, Module.customSections are wrong
jfbastien@apple.com [Sat, 22 Apr 2017 07:52:03 +0000 (07:52 +0000)]
WebAssembly: Module.exports, Module.imports, Module.customSections are wrong
https://bugs.webkit.org/show_bug.cgi?id=171078

Reviewed by Saam Barati.

They're static properties of Module, not instance properties of a module.
https://github.com/WebAssembly/design/blob/master/JS.md#webassemblymoduleexports

JSTests:

* wasm/js-api/Module.customSection.js:
(assert.throws.WebAssembly.Module.customSections):
(assert.eq):
(assert.throws.WebAssembly.Module.prototype.customSections): Deleted.
* wasm/js-api/Module.exports.js:
(assert.throws.WebAssembly.Module.exports):
(assert.truthy):
(assert.throws.WebAssembly.Module.prototype.exports): Deleted.
* wasm/js-api/Module.imports.js:
(assert.throws.WebAssembly.Module.imports):
(assert.truthy):
(assert.throws.WebAssembly.Module.prototype.imports): Deleted.

Source/JavaScriptCore:

* wasm/js/WebAssemblyModuleConstructor.cpp:
(JSC::webAssemblyModuleCustomSections):
(JSC::webAssemblyModuleImports):
(JSC::webAssemblyModuleExports):
* wasm/js/WebAssemblyModulePrototype.cpp:
(JSC::webAssemblyModuleProtoCustomSections): Deleted.
(JSC::webAssemblyModuleProtoImports): Deleted.
(JSC::webAssemblyModuleProtoExports): Deleted.

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

3 years agoSupport writing link titles to the pasteboard when beginning data interaction on...
wenson_hsieh@apple.com [Sat, 22 Apr 2017 06:18:53 +0000 (06:18 +0000)]
Support writing link titles to the pasteboard when beginning data interaction on a link
https://bugs.webkit.org/show_bug.cgi?id=171154
<rdar://problem/31356937>

Reviewed by Andy Estes.

Source/WebCore:

Currently, when writing NSURLs to the pasteboard, we only write a String to the pasteboard corresponding to
kUTTypeURL. This means richer data associated with the link (in this case, the title) are not captured when
writing to the pasteboard. To address this, we introduce a new codepath for writing links to the pasteboard that
mirrors the way PasteboardImage and PasteboardWebContent are written to the pasteboard.

Test: Augmented DataInteractionTests.LinkToInput.

* platform/PasteboardStrategy.h:
* platform/PlatformPasteboard.h:

Add plumbing support for writing PasteboardURLs.

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

Teach PlatformPasteboard to also set the _title attribute of the NSURL when creating an NSURL representation
for registering with the shared WebItemProviderPasteboard.

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

Remove deprecation guards and replace deprecated method calls with the latest undeprecated versions.

(-[WebItemProviderPasteboard setItemsFromObjectRepresentations:]):

Source/WebKit/mac:

Adjust for some changes in WebCore to introduce a separate codepath for writing PasteboardURLs. See WebCore
and WebKit2 ChangeLogs for more details.

* WebCoreSupport/WebPlatformStrategies.h:
* WebCoreSupport/WebPlatformStrategies.mm:
(WebPlatformStrategies::writeToPasteboard):

Source/WebKit2:

Adds support for setting the _title attribute of NSURLs written to the pasteboard. See WebCore ChangeLog for more details.

* Scripts/webkit/messages.py:
(headers_for_type):
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<PasteboardURL>::encode):
(IPC::ArgumentCoder<PasteboardURL>::decode):
* Shared/WebCoreArgumentCoders.h:

Teach PasteboardURL to be serialized in IPC. For now, we just send across the absolute string of the link and
its title.

* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
(WebKit::WebPasteboardProxy::writeURLToPasteboard):
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:

Add IPC plumbing for writing PasteboarURLs to the pasteboard.

* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::writeToPasteboard):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Tools:

Augments an existing unit test, DataInteractionTests.LinkToInput, to also check that the fetching the NSURL from
the source UIItemProvider generated by performing data interaction results in an NSURL with the _title attribute
matching the title of the link.

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

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

3 years agoNoisy OOM
jfbastien@apple.com [Sat, 22 Apr 2017 04:31:37 +0000 (04:31 +0000)]
Noisy OOM

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

3 years agoUnreviewed, rolling out r215608.
mcatanzaro@igalia.com [Sat, 22 Apr 2017 02:23:45 +0000 (02:23 +0000)]
Unreviewed, rolling out r215608.

Hundreds of test failures on GTK bot

Reverted changeset:

"Reduce copies and allocations in SharedBuffer::append"
https://bugs.webkit.org/show_bug.cgi?id=170956
http://trac.webkit.org/changeset/215608

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

3 years agoREGRESSION(r205374): <li> content inside <ul> should mid-word wrap when word-break...
zalan@apple.com [Sat, 22 Apr 2017 02:01:55 +0000 (02:01 +0000)]
REGRESSION(r205374): <li> content inside <ul> should mid-word wrap when word-break: break-word is present.
https://bugs.webkit.org/show_bug.cgi?id=171108
<rdar://problem/30271747>

Reviewed by Dan Bernstein.

Source/WebCore:

This patch ensures that we search for mid-word breaks when a zero sized element has been committed on the line
unless it's an image or some other replaced element with special properties (e.g. list-style: inside).

Tests: fast/replaced/ul-li-word-break-break-word.html
       fast/replaced/zero-width-image-force-linebreak.html

* rendering/line/BreakingContext.h:
(WebCore::BreakingContext::handleReplaced):
(WebCore::BreakingContext::handleText): This matches pre-r205374 behaviour, but it's explicit about whether a
replaced width has already been committed on the current line.
* rendering/line/LineWidth.cpp:
(WebCore::LineWidth::commit):
* rendering/line/LineWidth.h:
(WebCore::LineWidth::hasCommittedReplaced):
(WebCore::LineWidth::addUncommittedReplacedWidth): These 2 last functions were removed with r205374 (and now I am adding them back).

LayoutTests:

* fast/replaced/ul-li-word-break-break-word-expected.html: Added.
* fast/replaced/ul-li-word-break-break-word.html: Added.
* fast/replaced/zero-width-image-force-linebreak-expected.html: Added.
* fast/replaced/zero-width-image-force-linebreak.html: Added.

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

3 years ago[MediaCapture] Improvements to CoreAudioCaptureSource
jer.noble@apple.com [Sat, 22 Apr 2017 01:00:00 +0000 (01:00 +0000)]
[MediaCapture] Improvements to CoreAudioCaptureSource
https://bugs.webkit.org/show_bug.cgi?id=171146

Reviewed by Eric Carlson.

Various interlocking improvements to CoreAudioCaptureSource:

- Allow the volume, sampleRate, and echoCancellation settings to be applied to the source.
- Update the values returned via settings() when these values change.
- Obey the sampleRate and echoCancellation settings when creating the VPIO unit.
- Because AudioUnitRender() mutates the passed in AudioBufferList, reset it immediately before calling.

* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSource::create):
(WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource):
(WebCore::CoreAudioCaptureSource::preferredSampleRate):
(WebCore::CoreAudioCaptureSource::preferredIOBufferSize):
(WebCore::CoreAudioCaptureSource::configureMicrophoneProc):
(WebCore::CoreAudioCaptureSource::configureSpeakerProc):
(WebCore::CoreAudioCaptureSource::processMicrophoneSamples):
(WebCore::CoreAudioCaptureSource::setupAudioUnits):
(WebCore::CoreAudioCaptureSource::stopProducingData):
(WebCore::CoreAudioCaptureSource::settings):
(WebCore::CoreAudioCaptureSource::settingsDidChange):
(WebCore::CoreAudioCaptureSource::preferredIOBufferDuration): Deleted.
* platform/mediastream/mac/CoreAudioCaptureSource.h:

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

3 years agocom.apple.WebCore: non-virtual thunk to WebCore::LibWebRTCDataChannelHandler::OnBuffe...
commit-queue@webkit.org [Sat, 22 Apr 2017 00:55:53 +0000 (00:55 +0000)]
com.apple.WebCore: non-virtual thunk to WebCore::LibWebRTCDataChannelHandler::OnBufferedAmountChange + 39
https://bugs.webkit.org/show_bug.cgi?id=171087
<rdar://problem/31739051>

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

Covered by existing tests.
No test added as this behavior is really libwebrtc specific and cannot be triggered easily.

* Modules/mediastream/RTCDataChannel.cpp:
(WebCore::RTCDataChannel::close): Stopping observing libwebrtc data channel before closing it.
This ensures we will stop getting notified as soon as there is no more interest.
* Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:
(WebCore::LibWebRTCDataChannelHandler::OnStateChange): libwebrtc can still notify us even though we said we were
not interested. Ensuring we do not call the client if we are no longer interested.
(WebCore::LibWebRTCDataChannelHandler::OnMessage): Ditto.
(WebCore::LibWebRTCDataChannelHandler::OnBufferedAmountChange): Ditto.

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

3 years ago[macOS] Enable media selection button on AVTouchBarScrubber
aestes@apple.com [Sat, 22 Apr 2017 00:53:44 +0000 (00:53 +0000)]
[macOS] Enable media selection button on AVTouchBarScrubber
https://bugs.webkit.org/show_bug.cgi?id=171149
<rdar://problem/29875010>

Reviewed by Beth Dakin.

Source/WebCore:

* platform/spi/cocoa/AVKitSPI.h:

Source/WebKit2:

* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::updateMediaTouchBar):

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

3 years ago[macOS] Name WebPlaybackControlsManager delegate methods correctly depending on OS...
aestes@apple.com [Sat, 22 Apr 2017 00:51:15 +0000 (00:51 +0000)]
[macOS] Name WebPlaybackControlsManager delegate methods correctly depending on OS version
https://bugs.webkit.org/show_bug.cgi?id=171147
<rdar://problem/29875010>

Reviewed by Beth Dakin.

On macOS 10.12, WebPlaybackControlsManager conforms to
AVFunctionBarPlaybackControlsControlling, but on 10.13 it conforms to
AVTouchBarPlaybackControlsControlling. These protocols are near-identical, except for
instances of "FunctionBar" in method names are renamed to "TouchBar". This patch updates to
the new method names, and generally renames things with "FunctionBar" to "TouchBar".

* platform/mac/WebPlaybackControlsManager.h:
* platform/mac/WebPlaybackControlsManager.mm:
(-[WebPlaybackControlsManager generateTouchBarThumbnailsForTimes:tolerance:size:thumbnailHandler:]):
(-[WebPlaybackControlsManager generateTouchBarAudioAmplitudeSamples:completionHandler:]):
(-[WebPlaybackControlsManager canBeginTouchBarScrubbing]):
(-[WebPlaybackControlsManager beginTouchBarScrubbing]):
(-[WebPlaybackControlsManager endTouchBarScrubbing]):
(-[WebPlaybackControlsManager generateFunctionBarThumbnailsForTimes:size:completionHandler:]):
(-[WebPlaybackControlsManager generateFunctionBarAudioAmplitudeSamples:completionHandler:]):
(-[WebPlaybackControlsManager canBeginFunctionBarScrubbing]):
(-[WebPlaybackControlsManager beginFunctionBarScrubbing]):
(-[WebPlaybackControlsManager endFunctionBarScrubbing]):
(-[WebPlaybackControlsManager audioTouchBarMediaSelectionOptions]):
(-[WebPlaybackControlsManager setAudioTouchBarMediaSelectionOptions:]):
(-[WebPlaybackControlsManager currentAudioTouchBarMediaSelectionOption]):
(-[WebPlaybackControlsManager setCurrentAudioTouchBarMediaSelectionOption:]):
(-[WebPlaybackControlsManager legibleTouchBarMediaSelectionOptions]):
(-[WebPlaybackControlsManager setLegibleTouchBarMediaSelectionOptions:]):
(-[WebPlaybackControlsManager currentLegibleTouchBarMediaSelectionOption]):
(-[WebPlaybackControlsManager setCurrentLegibleTouchBarMediaSelectionOption:]):
(-[WebPlaybackControlsManager setAudioMediaSelectionOptions:withSelectedIndex:]):
(-[WebPlaybackControlsManager setLegibleMediaSelectionOptions:withSelectedIndex:]):
(-[WebPlaybackControlsManager audioFunctionBarMediaSelectionOptions]): Deleted.
(-[WebPlaybackControlsManager setAudioFunctionBarMediaSelectionOptions:]): Deleted.
(-[WebPlaybackControlsManager currentAudioFunctionBarMediaSelectionOption]): Deleted.
(-[WebPlaybackControlsManager setCurrentAudioFunctionBarMediaSelectionOption:]): Deleted.
(-[WebPlaybackControlsManager legibleFunctionBarMediaSelectionOptions]): Deleted.
(-[WebPlaybackControlsManager setLegibleFunctionBarMediaSelectionOptions:]): Deleted.
(-[WebPlaybackControlsManager currentLegibleFunctionBarMediaSelectionOption]): Deleted.
(-[WebPlaybackControlsManager setCurrentLegibleFunctionBarMediaSelectionOption:]): Deleted.

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

3 years agoMake CoreAudioCaptureDevice stackable.
jer.noble@apple.com [Sat, 22 Apr 2017 00:14:09 +0000 (00:14 +0000)]
Make CoreAudioCaptureDevice stackable.
https://bugs.webkit.org/show_bug.cgi?id=171097

Reviewed by Eric Carlson.

There's no real reason to keep CoreAudioCaptureDevice from being created on the stack.
Make it un-RefCounted, and have it's static factory method return an std::optional rather
than a RefPtr.

Drive-by fix: clean up the factory method of CoreAudioCaptureSource a bit.

* platform/mediastream/mac/CoreAudioCaptureDevice.cpp:
(WebCore::CoreAudioCaptureDevice::create):
(WebCore::CoreAudioCaptureDevice::deviceID): Deleted.
* platform/mediastream/mac/CoreAudioCaptureDevice.h:
(WebCore::CoreAudioCaptureDevice::deviceID):
* platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:
(WebCore::CoreAudioCaptureDeviceManager::coreAudioCaptureDevices):
(WebCore::CoreAudioCaptureDeviceManager::coreAudioDeviceWithUID):
(WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices):
* platform/mediastream/mac/CoreAudioCaptureDeviceManager.h:
* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSource::create):
(WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource):
* platform/mediastream/mac/CoreAudioCaptureSource.h:

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

3 years ago[MediaStream iOS] Release capture session when not producing data
eric.carlson@apple.com [Sat, 22 Apr 2017 00:06:41 +0000 (00:06 +0000)]
[MediaStream iOS] Release capture session when not producing data
https://bugs.webkit.org/show_bug.cgi?id=171148
<rdar://problem/29265868>

Reviewed by Jer Noble.

On iOS, only one AVCaptureSession can be active at a time, so release a session whenever
it is told to stop producing data. The session will recreated if the capture source if/when
told to produce data again.

* platform/mediastream/mac/AVMediaCaptureSource.mm:
(WebCore::AVMediaCaptureSource::stopProducingData): Clear m_session to release the session.
It will be re-allocated if startProducingData is called later.

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

3 years ago[WK2] Add delegate hooks for overriding unhanded data interaction operations
wenson_hsieh@apple.com [Sat, 22 Apr 2017 00:03:01 +0000 (00:03 +0000)]
[WK2] Add delegate hooks for overriding unhanded data interaction operations
https://bugs.webkit.org/show_bug.cgi?id=171005
<rdar://problem/31669646>

Reviewed by Tim Horton.

Source/WebKit2:

Adds support for overriding data interaction operations through two new delegate methods:
_webView:willUpdateDataInteractionOperationToOperation:forSession:, and
_webView:dataInteractionOperationWasHandled:forSession:. The former may be overridden to return a different
operation type than what WebKit would originally have returned, and the latter may be overridden to run custom
logic after the web process has handled a data interaction operation.

Additionally, includes some minor cleanup around WKContentViewInteraction. With the new
_webView:dataInteractionOperationWasHandled:forSession: delegate method, the last method on _WKTestingDelegate
may be removed. This means _WKTestingDelegate is no longer needed, so this patch removes its header entirely.
Also, relocates some state variables formerly on WKContentView to WKContentView's WKDataInteractionState struct
instead, so that all state associated with data interaction may be cleaned up at the same time.

* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _testingDelegate]): Deleted.
(-[WKWebView _setTestingDelegate:]): Deleted.
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/Cocoa/_WKTestingDelegate.h: Removed.
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:

Add a new "handled" IPC argument to DidPerformDataInteractionControllerOperation. This lets the UI process
know whether or not the data interaction operation was handled by the web process, and is eventually plumbed
through to the UI delegate via the new SPI.

* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::didPerformDataInteractionControllerOperation):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView cleanupInteraction]):
(-[WKContentView _displayFormNodeInputView]):
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:userObject:]):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::didPerformDataInteractionControllerOperation):
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::performDragControllerAction):

Tools:

Adds a new API test checking that normal WebKit behavior when vending updated data interaction operations may
be overridden, resulting in a data interaction operation being performed when it otherwise would not have. Also
adjusts for some changes in WebKit2 (See WebKit2 ChangeLog for more details).

New API test:
DataInteractionTests.OverrideDataInteractionOperation

* TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
(-[UIItemProvider registerDataRepresentationForTypeIdentifier:withData:]):
(TestWebKitAPI::TEST):
* TestWebKitAPI/ios/DataInteractionSimulator.h:
* TestWebKitAPI/ios/DataInteractionSimulator.mm:
(-[DataInteractionSimulator initWithWebView:]):
(-[DataInteractionSimulator dealloc]):
(-[DataInteractionSimulator _webView:dataInteractionOperationWasHandled:forSession:itemProviders:]):
(-[DataInteractionSimulator _webView:willUpdateDataInteractionOperationToOperation:forSession:]):
(-[DataInteractionSimulator webViewDidPerformDataInteractionControllerOperation:]): Deleted.

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

3 years agoAX: FKA: Buttons need a visible focus indicator
commit-queue@webkit.org [Fri, 21 Apr 2017 23:58:51 +0000 (23:58 +0000)]
AX: FKA: Buttons need a visible focus indicator
https://bugs.webkit.org/show_bug.cgi?id=171040
<rdar://problem/30922548>

Patch by Aaron Chu <aaron_chu@apple.com> on 2017-04-21
Reviewed by Antoine Quint.

Source/WebCore:

Added a background color for the focus state of the icon buttons in modern media controls.

Test: media/modern-media-controls/icon-button/icon-button-focus-state.html

* Modules/modern-media-controls/controls/icon-button.css:
(button.icon:focus):

LayoutTests:

* TestExpectations:
* media/modern-media-controls/icon-button/icon-button-focus-state-expected.txt: Added.
* media/modern-media-controls/icon-button/icon-button-focus-state.html: Added.
* platform/mac/TestExpectations:

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

3 years agoTemporarily disable two flaky API tests.
ryanhaddad@apple.com [Fri, 21 Apr 2017 22:55:40 +0000 (22:55 +0000)]
Temporarily disable two flaky API tests.

Unreviewed test gardening.

* TestWebKitAPI/Tests/WebKit2Cocoa/BundleRangeHandle.mm:
(TEST):
* TestWebKitAPI/Tests/WebKit2Cocoa/DataDetection.mm:
(TEST):

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

3 years agoMark inspector/debugger/tail-deleted-frames-this-value.html as flaky.
ryanhaddad@apple.com [Fri, 21 Apr 2017 22:55:37 +0000 (22:55 +0000)]
Mark inspector/debugger/tail-deleted-frames-this-value.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=169119

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

3 years agoConsider muting audio hardware a form of autoplay interference.
mrajca@apple.com [Fri, 21 Apr 2017 22:45:46 +0000 (22:45 +0000)]
Consider muting audio hardware a form of autoplay interference.
https://bugs.webkit.org/show_bug.cgi?id=169971

Reviewed by Eric Carlson.

If the user mutes audio hardware and a media element is auto-playing, consider that
as a form of auto-play interference that we tell clients about.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::~HTMLMediaElement):
(WebCore::HTMLMediaElement::hardwareMutedStateDidChange):
* html/HTMLMediaElement.h:
* platform/audio/AudioSession.h:
(WebCore::AudioSession::MutedStateObserver::~MutedStateObserver):
* platform/audio/mac/AudioSessionMac.cpp:
(WebCore::AudioSession::isMuted):
(WebCore::muteProcess):
(WebCore::AudioSession::handleMutedStateChange):
(WebCore::AudioSession::addMutedStateObserver):
(WebCore::AudioSession::removeMutedStateObserver):

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

3 years agoRegression(r206240): XMLSerializer.serializeToString() does not properly escape ...
cdumez@apple.com [Fri, 21 Apr 2017 22:23:10 +0000 (22:23 +0000)]
Regression(r206240): XMLSerializer.serializeToString() does not properly escape '<' / '>' in attribute values
https://bugs.webkit.org/show_bug.cgi?id=171132
<rdar://problem/31426752>

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Re-sync web-platform-tests/domparsing from upstream.

* web-platform-tests/domparsing/DOMParser-parseFromString-html.html:
* web-platform-tests/domparsing/DOMParser-parseFromString-xml-doctype.html:
* web-platform-tests/domparsing/DOMParser-parseFromString-xml.html:
* web-platform-tests/domparsing/XMLSerializer-serializeToString.html:
* web-platform-tests/domparsing/createContextualFragment.html:
* web-platform-tests/domparsing/innerhtml-01.xhtml:
* web-platform-tests/domparsing/innerhtml-03.xhtml:
* web-platform-tests/domparsing/innerhtml-04.html:
* web-platform-tests/domparsing/innerhtml-05.xhtml:
* web-platform-tests/domparsing/innerhtml-06.html:
* web-platform-tests/domparsing/innerhtml-07.html:
* web-platform-tests/domparsing/insert-adjacent.html:
* web-platform-tests/domparsing/insert_adjacent_html-xhtml.xhtml:
* web-platform-tests/domparsing/insert_adjacent_html.html:
* web-platform-tests/domparsing/outerhtml-01.html:
* web-platform-tests/domparsing/outerhtml-02.html:
* web-platform-tests/domparsing/style_attribute_html.html:
* web-platform-tests/domparsing/w3c-import.log:
* web-platform-tests/domparsing/xml-serialization.xhtml:

Source/WebCore:

Use XMLSerialization [1] in MarkupAccumulator::appendAttribute() when inXMLFragmentSerialization()
returns true, even if the node's associated document is an HTML document. When XMLSerializer.serializeToString()
is called on a Node, we want XML serialization, even if the node comes from an HTML document.

[1] https://w3c.github.io/DOM-Parsing/#dfn-xml-serialization

Test: fast/dom/XMLSerializer-serializeToString-entities.html

* editing/MarkupAccumulator.cpp:
(WebCore::MarkupAccumulator::appendAttributeValue):
(WebCore::MarkupAccumulator::appendAttribute):
* editing/MarkupAccumulator.h:

LayoutTests:

Add layout test coverage. This test is passing in both Firefox and Chrome.

* fast/dom/XMLSerializer-serializeToString-entities-expected.txt: Added.
* fast/dom/XMLSerializer-serializeToString-entities.html: Added.

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

3 years ago[ios-simulator] LayoutTest webrtc/multi-video.html is a flaky crash
commit-queue@webkit.org [Fri, 21 Apr 2017 22:17:13 +0000 (22:17 +0000)]
[ios-simulator] LayoutTest webrtc/multi-video.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=170823
<rdar://problem/31611583>

Unreviewed.

Patch by Youenn Fablet <youenn@apple.com> on 2017-04-21

* TestExpectations: Reactivating test.

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

3 years agoSplit cryptographic digest computation and parsing out of CSP code so it can be reused
weinig@apple.com [Fri, 21 Apr 2017 22:13:58 +0000 (22:13 +0000)]
Split cryptographic digest computation and parsing out of CSP code so it can be reused
https://bugs.webkit.org/show_bug.cgi?id=171076

Reviewed by Chris Dumez.

Source/WebCore:

Factor out cryptographic digest parsing from Content Security Policy code
so that it can be reused for the Subresource Integrity implementation.

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
Add new files.

* html/parser/ParsingUtilities.h:
(WebCore::skipExactlyIgnoringASCIICase):
Add parsing helper to match / skip over a constant string, using IgnoringASCIICase semantics.

* loader/ResourceCryptographicDigest.cpp: Added.
(WebCore::parseHashAlgorithmAdvancingPosition):
(WebCore::parseCryptographicDigestImpl):
(WebCore::parseCryptographicDigest):
Move parsing of cryptographic-digest strings from ContentSecurityPolicySourceList.cpp
and optimize it a little by avoiding String allocations and generalizing it so that it
can parse either UChars or LChars.

* loader/ResourceCryptographicDigest.h: Added.
(WebCore::ResourceCryptographicDigest::operator==):
(WebCore::ResourceCryptographicDigest::operator!=):
(WTF::DefaultHash<WebCore::ResourceCryptographicDigest>::Hash::hash):
(WTF::DefaultHash<WebCore::ResourceCryptographicDigest>::Hash::equal):
(WTF::HashTraits<WebCore::ResourceCryptographicDigest>::emptyValue):
(WTF::HashTraits<WebCore::ResourceCryptographicDigest>::constructDeletedValue):
(WTF::HashTraits<WebCore::ResourceCryptographicDigest>::isDeletedValue):
Add a struct (rather than using a std::pair) to represent the digest + algorithm. And add
HashTraits so it can be used as HashMap.

* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::findHashOfContentInPolicies):
(WebCore::toCryptoDigestAlgorithm): Deleted.
Move algorithm conversion to ResourceCryptographicDigest.cpp. Make use of new
cryptographicDigestForBytes function to do hashing.

* page/csp/ContentSecurityPolicy.h:
* page/csp/ContentSecurityPolicyHash.h:
(WTF::DefaultHash<WebCore::ContentSecurityPolicyDigest>::Hash::hash): Deleted.
(WTF::DefaultHash<WebCore::ContentSecurityPolicyDigest>::Hash::equal): Deleted.
Remove HashTraits for the digest, this is now handled by ResourceCryptographicDigest.
To keep things relatively straight-forward, redefine ContentSecurityPolicyHashAlgorithm
and ContentSecurityPolicyHash in terms of ResourceCryptographicDigest, so that less code
has to be changed all at once. In a later pass, if wanted, we can remove these using
declarations.

* page/csp/ContentSecurityPolicySourceList.cpp:
(WebCore::isNonceCharacter):
Use renamed isBase64OrBase64URLCharacter predicate.

(WebCore::ContentSecurityPolicySourceList::parseHashSource):
Rework using ResourceCryptographicDigest parsing. Quotation and maximum digest
length have been kept here, as they are not applicable to other uses of
the digest, specifically Subresource Integrity.

Source/WTF:

* wtf/text/Base64.cpp:
(WTF::base64Decode):
(WTF::base64URLDecode):
Add overloads for base64Decode and base64URLDecode that take a StringView, to avoid allocations
of Strings.

* wtf/text/Base64.h:
(WTF::isBase64OrBase64URLCharacter):
Move helper predicate used for parsing either type of Base64 encoded string from WebCore.

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

3 years agoUnreviewed fix after r215624; null-deref crash.
jer.noble@apple.com [Fri, 21 Apr 2017 22:01:38 +0000 (22:01 +0000)]
Unreviewed fix after r215624; null-deref crash.

Make sure to call reset() inside each constructor.

* platform/audio/WebAudioBufferList.cpp:
(WebCore::WebAudioBufferList::WebAudioBufferList):

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

3 years agoSharedArrayBuffer-opt.js fails with Briggs
sbarati@apple.com [Fri, 21 Apr 2017 21:45:12 +0000 (21:45 +0000)]
SharedArrayBuffer-opt.js fails with Briggs
https://bugs.webkit.org/show_bug.cgi?id=170948
<rdar://problem/31740568>

Reviewed by Michael Saboff.

The bug was not actually with Briggs, but instead was with
our X86-64 MacroAssembler. Michael fixed the bug here:
https://trac.webkit.org/changeset/215618/webkit

The issue was we weren't adding the REX byte for AtomicXchg8,
leading to the incorrect encoding for the result register depending
on which register it was. If you look at this code, you'll see the issue:

  Int32 @38 = AtomicXchg(@59, @64, width = 8, range = 0, fenceRange = 0, ControlDependent|Fence|Writes:0|Reads:0, DFG:@49)
      AtomicXchg8 %rsi, (%rax,%rdx), @38
          0x2dcb5bc0015e: lock xchg %dh, (%rax,%rdx)
  Int32 @66 = Const32(255, DFG:@49)
  Int32 @67 = BitAnd(@38, $255(@66), DFG:@49)
      ZeroExtend8To32 %rsi, %rax, @67
          0x2dcb5bc00162: movzx %sil, %eax

Air thought the result was in the lower 8 bits of %rsi,
however, the code we emitted stored it in the [8-15] bits
of %rdx. Since this issue is fixed, I'm turning Briggs back
on.

* b3/air/AirAllocateRegistersByGraphColoring.h:
(JSC::B3::Air::useIRC):

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