Timeline



Apr 25, 2017:

11:39 PM Changeset in webkit [215795] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

REGRESSION (r209882): Web Inspector: Command-G does not work in the console
https://bugs.webkit.org/show_bug.cgi?id=170555
<rdar://problem/31481247>

Reviewed by Brian Burg.

Command-G didn't work in the console when the console content view was in focus. It only
worked when the search input field was focused.

  • UserInterface/Views/LogContentView.js:

(WebInspector.LogContentView.prototype.findBannerRevealPreviousResult):
(WebInspector.LogContentView.prototype.highlightPreviousSearchMatch): Added.
(WebInspector.LogContentView.prototype.findBannerRevealNextResult):
(WebInspector.LogContentView.prototype.highlightNextSearchMatch): Added.
Re-introduce highlightPreviousSearchMatch and highlightNextSearchMatch methods that were
removed in r209882.

11:38 PM Changeset in webkit [215794] by commit-queue@webkit.org
  • 5 edits in trunk/LayoutTests

[mac-wk1 Debug] LayoutTest http/tests/inspector/network/resource-sizes-network.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=170953

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-04-25
Reviewed by Brian Burg.

  • http/tests/inspector/network/resource-sizes-disk-cache.html:
  • http/tests/inspector/network/resource-sizes-network.html:

Read the entire data to ensure the load is complete before we notify the frontend.

  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations:

Unflake these tests, they should be more reliable now.

11:35 PM Changeset in webkit [215793] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Network Tab - Sorting by Priority Column hides all rows in the datagrid (uncaught exception)
https://bugs.webkit.org/show_bug.cgi?id=171312
<rdar://problem/31828554>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-04-25
Reviewed by Brian Burg.

  • UserInterface/Models/Resource.js:

(WebInspector.Resource.comparePriority):
Provide a helper for compariting NetworkPriority enum values.

  • UserInterface/Views/NetworkGridContentView.js:

(WebInspector.NetworkGridContentView):
(WebInspector.NetworkGridContentView.prototype.dataGridSortComparator):

  • UserInterface/Views/NetworkTimelineView.js:

(WebInspector.NetworkTimelineView.prototype.dataGridSortComparator):
Custom sort handler for priority.

10:18 PM Changeset in webkit [215792] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Unhandled enumeration values in IntlDateTimeFormat.cpp
https://bugs.webkit.org/show_bug.cgi?id=171241

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

Added some missing cases of the UDateFormatField to partTypeString,
and made them conditional to the ICU version that added them.
This should remove the warnings that appear on platform builds using the
newer system ICU headers.

  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::partTypeString):

9:31 PM Changeset in webkit [215791] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebCore

[WebCrypto] Enhance ways to convert an ECDSA signature binary into DER format
https://bugs.webkit.org/show_bug.cgi?id=171287
<rdar://problem/31735332>

Reviewed by Brent Fulgham.

Covered by existing tests.

  • crypto/mac/CryptoAlgorithmECDSAMac.cpp:

(WebCore::verifyECDSA):

9:27 PM Changeset in webkit [215790] by achristensen@apple.com
  • 7 edits
    1 add in trunk

REGRESSION(206450): WebKit2PlatformMouseEvent m_modifierFlags not set
https://bugs.webkit.org/show_bug.cgi?id=171297
<rdar://problem/31530719>

Reviewed by Geoffrey Garen.

Source/WebKit2:

  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):

Tools:

  • TestWebKitAPI/PlatformWebView.h:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/EventModifiers.cpp: Added.

(TestWebKitAPI::didFinishLoadForFrame):
(TestWebKitAPI::mouseDidMoveOverElement):
(TestWebKitAPI::setClients):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/mac/PlatformWebViewMac.mm:

(TestWebKitAPI::PlatformWebView::simulateRightClick):
(TestWebKitAPI::PlatformWebView::simulateMouseMove):

9:27 PM Changeset in webkit [215789] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

REGRESSION (r214863): Web Inspector: Uncaught Exception when losing focus from a selector field
https://bugs.webkit.org/show_bug.cgi?id=171254
<rdar://problem/31813959>

Reviewed by Joseph Pecoraro.

The event.relatedTarget of a blur event contains the element where focus moved to.
In some cases this can be null, such as if the user leaves the application window.
For example Command+Tab to switch to another application.

  • UserInterface/Views/CSSStyleDeclarationSection.js:

(WebInspector.CSSStyleDeclarationSection.prototype._handleSelectorPaste):

9:24 PM Changeset in webkit [215788] by commit-queue@webkit.org
  • 4 edits in trunk/LayoutTests

fast/mediastream/RTCPeerConnection-icecandidate-event.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=171242

Patch by Youenn Fablet <youenn@apple.com> on 2017-04-25
Reviewed by Alex Christensen.

  • TestExpectations:
  • fast/mediastream/RTCPeerConnection-icecandidate-event-expected.txt:
  • fast/mediastream/RTCPeerConnection-icecandidate-event.html: Updating test to be more deterministic.
7:26 PM Changeset in webkit [215787] by Brent Fulgham
  • 5 edits
    2 adds in trunk

Relax the event firing ASSERT for Attr changes
https://bugs.webkit.org/show_bug.cgi?id=171236
<rdar://problem/30516349>

Reviewed by Dean Jackson.

Source/WebCore:

The assertions added in Bug 167318 were overly strict, and trigger for valid behavior.
Relax the assertion preventing event dispatch for the case of Attr elements at the
end of childrenChanged.

Test: fast/dom/HTMLLinkElement/event-while-removing-attribute.html

  • dom/Attr.cpp:

(WebCore::Attr::childrenChanged):

LayoutTests:

  • fast/dom/HTMLLinkElement/event-while-removing-attribute-expected.txt: Added.
  • fast/dom/HTMLLinkElement/event-while-removing-attribute.html: Added.
7:16 PM Changeset in webkit [215786] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit2

Unreviewed, speculative build fix

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

For the time being, remove all references to UIItemProviders from this private header.
This should be fixed to use unavailability macros in a followup. See <rdar://problem/31827095>.

7:02 PM Changeset in webkit [215785] by Wenson Hsieh
  • 4 edits in trunk/Tools

Unreviewed, temporarily disable the data interaction unit tests.

The API around data interaction will change significantly in the near future, and
these tests will begin to fail. These will be reenabled once the bots are on an SDK
that supports the updated data interaction API.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:
  • TestWebKitAPI/ios/DataInteractionSimulator.h:
  • TestWebKitAPI/ios/DataInteractionSimulator.mm:
6:53 PM Changeset in webkit [215784] by Brent Fulgham
  • 7 edits
    3 adds in trunk

Limit allowed size of document.title to avoid locking WebKit clients
https://bugs.webkit.org/show_bug.cgi?id=165113
<rdar://problem/28324389>

Reviewed by Darin Adler.

Source/WebKit/mac:

When a web application attempts to set an extremely long title, truncate the
title to a more reasonable size.

We do this at at the presentation layer, rather than in the DOM, so that we do
not affect script function. Instead, we merely limit display to a level that is
reasonable for normal GUI widgets. Anything else needs to be truncated in the UI
layer, so it is a waste of effort to send across IPC.

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::dispatchDidReceiveTitle):

Source/WebKit2:

When a web application attempts to set an extremely long title, truncate the
title to a more reasonable size.

We do this at at the presentation layer, rather than in the DOM, so that we do
not affect script function. Instead, we merely limit display to a level that is
reasonable for normal GUI widgets. Anything else needs to be truncated in the UI
layer, so it is a waste of effort to send across IPC.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidReceiveTitle):

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add new files.
  • TestWebKitAPI/Tests/WebKit2/LimitTitleSize.cpp: Added.
  • TestWebKitAPI/Tests/WebKit2/set-long-title.html: Added.
  • TestWebKitAPI/Tests/mac/LimitTitleSize.mm: Added.
6:45 PM Changeset in webkit [215783] by dino@apple.com
  • 2 edits in trunk/LayoutTests

REGRESSION (r214129): fast/media/mq-prefers-reduced-motion.html fails
https://bugs.webkit.org/show_bug.cgi?id=171303
<rdar://problem/31434879>

Reviewed by Brent Fulgham.

This particular test was calling notifyDone() from within
a callback triggered by the UIScriptController script, which
meant that by the time the controller tried to call its callback,
the test had finished.

  • fast/media/mq-prefers-reduced-motion-matchMedia.html: Make sure

notifyDone is called after both the callback-like functions have
triggered.

6:22 PM Changeset in webkit [215782] by wilander@apple.com
  • 21 edits
    1 copy
    1 add in trunk

Resource Load Statistics: Introduce shorter time-to-live for cookie partition whitelisting
https://bugs.webkit.org/show_bug.cgi?id=171295
<rdar://problem/31823818>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-partitioning-timeout.html

  • loader/ResourceLoadObserver.cpp:

(WebCore::reduceTimeResolutionToOneDay): Deleted.
(WebCore::reduceTimeResolution):

Changed name to no longer lock this to a specific resolution.

(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):

Now calls WebCore::reduceTimeResolution().

(WebCore::ResourceLoadObserver::setTimeToLiveCookiePartitionFree):

Added for testing purposes.

(WebCore::ResourceLoadObserver::fireShouldPartitionCookiesHandler):

Added for testing purposes.

  • loader/ResourceLoadObserver.h:
  • loader/ResourceLoadStatisticsStore.cpp:

(WebCore::shouldPartitionCookies):

Static inline convenience function.

(WebCore::ResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler):

Now decides whether a domain should get partitioned cookies
based on timeToLiveCookiePartitionFree.
Removed clearFirst parameter since it's not needed here
and it introduced complexity in keeping the store and the
network process cache in sync.

(WebCore::ResourceLoadStatisticsStore::setTimeToLiveCookiePartitionFree):

Added for testing purposes.

  • loader/ResourceLoadStatisticsStore.h:

Source/WebKit2:

  • UIProcess/API/C/WKResourceLoadStatisticsManager.cpp:

(WKResourceLoadStatisticsManagerSetTimeToLiveCookiePartitionFree):
(WKResourceLoadStatisticsManagerFireShouldPartitionCookiesHandler):
(WKResourceLoadStatisticsManagerFireShouldPartitionCookiesHandlerForOneDomain):

Changes and additions to test infrastructure.

  • UIProcess/API/C/WKResourceLoadStatisticsManager.h:
  • UIProcess/WebResourceLoadStatisticsManager.cpp:

(WebKit::WebResourceLoadStatisticsManager::setTimeToLiveCookiePartitionFree):
(WebKit::WebResourceLoadStatisticsManager::fireShouldPartitionCookiesHandler):
(WebKit::WebResourceLoadStatisticsManager::fireShouldPartitionCookiesHandlerForOneDomain):
(WebKit::WebResourceLoadStatisticsManager::resetToConsistentState):

Changes and additions to test infrastructure.

  • UIProcess/WebResourceLoadStatisticsManager.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):

No longer sends a boolean parameter to
WebCore::ResourceLoadStatisticsStore::fireShouldPartitionCookiesHandler().

Tools:

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setStatisticsTimeToLiveCookiePartitionFree):
(WTR::TestRunner::statisticsFireShouldPartitionCookiesHandler):
(WTR::TestRunner::statisticsFireShouldPartitionCookiesHandlerForOneDomain):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::setStatisticsTimeToLiveCookiePartitionFree):
(WTR::TestController::statisticsFireShouldPartitionCookiesHandler):
(WTR::TestController::statisticsFireShouldPartitionCookiesHandlerForOneDomain):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

  • http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletion.html:

Changed a TestRunner function name to
statisticsFireShouldPartitionCookiesHandlerForOneDomain().

  • http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-partitioning-timeout-expected.txt: Added.
  • http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-partitioning-timeout.html: Added.
  • http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction.html:

Changed a TestRunner function name to
statisticsFireShouldPartitionCookiesHandlerForOneDomain().

6:11 PM Changeset in webkit [215781] by matthew_hanson@apple.com
  • 5 edits in branches/safari-603-branch/Source

Versioning.

6:11 PM Changeset in webkit [215780] by Simon Fraser
  • 2 edits in trunk/Source/WebKit2

REGRESSION (r213719): WebGL content on cubeslam.com is 1/4 expected size
https://bugs.webkit.org/show_bug.cgi?id=171300
rdar://problem/31051538

Reviewed by Dean Jackson.

Propagating the contentsScale to the UI process for canvas content layers causes
scaling issues, so don't do it for contents-provided layers.

No test because WebGL can't be tested in the iOS simulator.

  • WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::PlatformCALayerRemote):

5:57 PM Changeset in webkit [215779] by commit-queue@webkit.org
  • 49 edits
    13 deletes in trunk

Unreviewed, rolling out r215476.
https://bugs.webkit.org/show_bug.cgi?id=171304

"It broke JSBench" (Requested by saamyjoon on #webkit).

Reverted changeset:

"[ES6]. Implement Annex B.3.3 function hoisting rules for
eval"
https://bugs.webkit.org/show_bug.cgi?id=163208
http://trac.webkit.org/changeset/215476

5:52 PM Changeset in webkit [215778] by beidson@apple.com
  • 6 edits in trunk/Source/WebKit2

Update WebProcess(Pool) to assume there's always a WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=171299

Reviewed by Alex Christensen.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::reattachToWebProcess):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::createNewWebProcess):
(WebKit::WebProcessPool::warmInitialProcess):
(WebKit::WebProcessPool::createNewWebProcessRespectingProcessCountLimit):
(WebKit::WebProcessPool::createWebPage):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::create):
(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::m_userMediaCaptureManagerProxy):

  • UIProcess/WebProcessProxy.h:

(WebKit::WebProcessProxy::websiteDataStore):

5:52 PM Changeset in webkit [215777] by sbarati@apple.com
  • 19 edits
    5 adds in trunk

JSArray::isArrayPrototypeIteratorProtocolFastAndNonObservable is wrong because it does not do the necessary checks on the base object
https://bugs.webkit.org/show_bug.cgi?id=171150
<rdar://problem/31771880>

Reviewed by Sam Weinig.

JSTests:

  • stress/spread-optimized-properly.js: Added.

(assert):
(test):
(shallowEq):
(makeArrayIterator):
(test.bar):
(test.callback):
(test.arr.proto.Symbol.iterator):
(test.arr.Symbol.iterator):
(test.get bar):
(test.hackedNext):
(test.test):
(test.):

Source/JavaScriptCore:

This patch fixes a huge oversight from the patch that introduced
op_spread/Spread. The original patch did not account for the
base object having Symbol.iterator or getters that could
change the iterator protocol. This patch fixes the oversight both
in the C code, as well as the DFG/FTL backends. We only perform
the memcpy version of spread if we've proven that it's guaranteed
to be side-effect free (no indexed getters), and if the iterator
protocol is guaranteed to be the original protocol. To do this, we
must prove that:

  1. The protocol on Array.prototype hasn't changed (this is the same as the

introductory patch for op_spread).

  1. The base object's proto is Array.prototype
  2. The base object does not have indexed getters
  3. The base object does not have Symbol.iterator property.
  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::canDoFastSpread):

  • dfg/DFGGraph.h:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileSpread):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileSpread):

  • runtime/JSArray.cpp:

(JSC::JSArray::isIteratorProtocolFastAndNonObservable):

  • runtime/JSArray.h:
  • runtime/JSArrayInlines.h:

(JSC::JSArray::isIteratorProtocolFastAndNonObservable): Deleted.

  • runtime/JSGlobalObject.h:
  • runtime/JSGlobalObjectInlines.h:

(JSC::JSGlobalObject::isArrayPrototypeIteratorProtocolFastAndNonObservable):
(JSC::JSGlobalObject::isArrayIteratorProtocolFastAndNonObservable): Deleted.

Source/WebCore:

This patch moves the sequence converters to use the now fixed
JSArray::isArrayPrototypeIteratorProtocolFastAndNonObservable test
inside JSC.

This patch also fixes a few bugs:

  1. Converting to a sequence of numbers must prove that the JSArray

is filled only with Int32/Double. If there is a chance the array
contains objects, the conversion to a numeric IDLType can be observable
(via valueOf()), and can change the iterator protocol.

  1. There are other conversions that can have side effects a-la valueOf().

This patch introduces a new static constant in the various Converter
classes that tell the sequence converter if the conversion operation
can have JS side effects. If it does have side effects, we fall back to
the generic conversion that uses the iterator protocol. If not, we can
do a faster version that iterates over each element of the array,
reading it directly, and converting it.

Tests: js/sequence-iterator-protocol-2.html

js/sequence-iterator-protocol.html

  • bindings/js/JSDOMConvertAny.h: Does not have side effects.
  • bindings/js/JSDOMConvertBase.h: We pessimistically assume inside DefaultConverter that converions have side effects.
  • bindings/js/JSDOMConvertBoolean.h: Does not have side effects.
  • bindings/js/JSDOMConvertCallbacks.h: Does not have side effects.
  • bindings/js/JSDOMConvertObject.h: Does not have side effects.
  • bindings/js/JSDOMConvertSequences.h:

(WebCore::Detail::NumericSequenceConverter::convert):
(WebCore::Detail::SequenceConverter::convert):

LayoutTests:

  • js/sequence-iterator-protocol-2-expected.txt: Added.
  • js/sequence-iterator-protocol-2.html: Added.
  • js/sequence-iterator-protocol-expected.txt: Added.
  • js/sequence-iterator-protocol.html: Added.
5:42 PM Changeset in webkit [215776] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark media/modern-media-controls/pip-support/pip-support-click.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=165311

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:39 PM Changeset in webkit [215775] by msaboff@apple.com
  • 4 edits in trunk/Source

Call bmalloc scavenger first when handling a memory pressure event
https://bugs.webkit.org/show_bug.cgi?id=171289

Reviewed by Geoffrey Garen.

Source/bmalloc:

Registered a critical memory pressure handler. We add this handler in addition to the
call to release bmalloc memory in the WebCore releaseMemory handler for the case of
JSC API users that don't use WebCore. When both handlers are in the process, it is
basically a race. One will win, but the loser won't do any more work, so it is harmless.

  • bmalloc/Heap.cpp:

(bmalloc::Heap::Heap):

Source/WebCore:

Let bmalloc free any pages to the OS that it can before doing anything else.

  • page/MemoryRelease.cpp:

(WebCore::releaseMemory):

5:38 PM Changeset in webkit [215774] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

Skip WebKitAdditions for Safari Technology Preview media controls
https://bugs.webkit.org/show_bug.cgi?id=171302
<rdar://problem/31823256>

Reviewed by Simon Fraser.

Safari Technology Preview should use the same controls
as OpenSource.

  • WebCore.xcodeproj/project.pbxproj:
5:16 PM Changeset in webkit [215773] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark http/tests/security/contentSecurityPolicy/1.1/module-scriptnonce-invalidnonce.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=171301

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
5:07 PM Changeset in webkit [215772] by Ryan Haddad
  • 8 edits in trunk

Unreviewed, rolling out r215730.

The LayoutTest for this change is a flaky timeout on mac-wk1
debug.

Reverted changeset:

"Enable expired-only reload policy on Mac and iOS"
https://bugs.webkit.org/show_bug.cgi?id=171264
http://trac.webkit.org/changeset/215730

5:02 PM Changeset in webkit [215771] by mrajca@apple.com
  • 17 edits in trunk

Indicate presence of audio when handling autoplay events.
https://bugs.webkit.org/show_bug.cgi?id=171227

Reviewed by Alex Christensen.

Source/WebCore:

Added API tests.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::handleAutoplayEvent):
(WebCore::HTMLMediaElement::playInternal):
(WebCore::HTMLMediaElement::mediaPlayerTimeChanged):
(WebCore::HTMLMediaElement::stopWithoutDestroyingMediaPlayer):
(WebCore::HTMLMediaElement::userDidInterfereWithAutoplay):
(WebCore::HTMLMediaElement::setPlaybackWithoutUserGesture):

  • html/HTMLMediaElement.h:
  • page/AutoplayEvent.h:
  • page/ChromeClient.h:

Source/WebKit2:

  • UIProcess/API/APIUIClient.h:

(API::UIClient::handleAutoplayEvent):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageUIClient):

  • UIProcess/API/C/WKPageUIClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::handleAutoplayEvent):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::handleAutoplayEvent):

  • WebProcess/WebCoreSupport/WebChromeClient.h:
4:50 PM Changeset in webkit [215770] by mark.lam@apple.com
  • 1 edit
    1 move in trunk/JSTests

[Follow up] Array.prototype.slice() should ensure that end >= begin.
https://bugs.webkit.org/show_bug.cgi?id=170989
<rdar://problem/31705652>

Not reviewed.

Follow up to rename a test file that was accidentally named wrongly.

  • stress/regress-170989.js: Copied from JSTests/stress/regress-170989.patch.
  • stress/regress-170989.patch: Removed.
4:49 PM Changeset in webkit [215769] by aakash_jain@apple.com
  • 2 edits in trunk/Source/WebCore

WebCore.framework should restrict allowable_clients
https://bugs.webkit.org/show_bug.cgi?id=171260

Reviewed by Alexey Proskuryakov.

  • Configurations/WebCore.xcconfig: Adding allowable_client to all platform, in order to restrict WebCore

from being directly linked on any platform.
Moved WebKitLegacy and WebCoreTestSupport to OTHER_LDFLAGS_BASE.
Removed WebKit2 as allowable_client from mac.
Added iTunesU, Casablanca and Remote to OTHER_LDFLAGS_BASE_ios for iTunes related projects.
Added WebKit, TVBooks, DumpRenderTree, WebKitTestRunner and TestWebKitAPI to OTHER_LDFLAGS_BASE_ios.

4:45 PM Changeset in webkit [215768] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Array.prototype.slice() should ensure that end >= begin.
https://bugs.webkit.org/show_bug.cgi?id=170989
<rdar://problem/31705652>

Reviewed by Saam Barati.

JSTests:

  • stress/regress-170989.patch: Added.

Source/JavaScriptCore:

  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoFuncSlice):

3:23 PM Changeset in webkit [215767] by commit-queue@webkit.org
  • 4 edits
    6 adds in trunk

Restrict WebKit image formats to a known whitelist
https://bugs.webkit.org/show_bug.cgi?id=170700

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

Source/WebCore:

If the image format is not supported, the load should be canceled and the
image is marked a broken image.

Test: fast/images/image-formats-support.html

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::addIncrementalDataBuffer):
(WebCore::CachedImage::setImageDataBuffer):
(WebCore::CachedImage::finishLoading):

  • loader/cache/CachedImage.h:

LayoutTests:

  • fast/images/image-formats-support-expected.txt: Added.
  • fast/images/image-formats-support.html: Added.
  • fast/images/resources/100x100-red-psd-renamed.png: Added.
  • fast/images/resources/100x100-red-tga-renamed.png: Added.
  • fast/images/resources/100x100-red.psd: Added.
  • fast/images/resources/100x100-red.tga: Added.
2:46 PM Changeset in webkit [215766] by commit-queue@webkit.org
  • 6 edits in trunk/Source

[Win] Use Clang's has_declspec_attribute for export macros
https://bugs.webkit.org/show_bug.cgi?id=171240

Patch by Don Olmstead <don.olmstead@am.sony.com> on 2017-04-25
Reviewed by Alex Christensen.

Source/JavaScriptCore:

  • runtime/JSExportMacros.h:

Source/WTF:

  • wtf/Compiler.h:
  • wtf/ExportMacros.h:
  • wtf/Platform.h:
2:45 PM Changeset in webkit [215765] by timothy_horton@apple.com
  • 2 edits in trunk/LayoutTests

Deduplicate some lines in the toplevel TestExpectations

Remove a duplicate line and consolidate another.

2:41 PM Changeset in webkit [215764] by Chris Dumez
  • 1 edit
    2 adds in trunk/LayoutTests

Element.dataset.name incorrectly returns undefined
https://bugs.webkit.org/show_bug.cgi?id=161454
<rdar://problem/31818563>

Reviewed by Mark Lam.

Add layout test for JS caching bug on DOMStringMap that was fixed as part
of a large named property getter refactoring in r210667.

  • fast/dom/dataset-caching-bug-expected.txt: Added.
  • fast/dom/dataset-caching-bug.html: Added.
2:36 PM Changeset in webkit [215763] by timothy_horton@apple.com
  • 2 edits in trunk/Tools

Try to fix the WKTR build after r215758

  • Scripts/build-webkittestrunner:
2:23 PM Changeset in webkit [215762] by keith_miller@apple.com
  • 2 edits in trunk/Source/WTF

Our signal handler shouldn't print when sigaction succeeds
https://bugs.webkit.org/show_bug.cgi?id=171286

Reviewed by Michael Saboff.

It turns out !result is not the same as !!result.

  • wtf/threads/Signals.cpp:

(WTF::jscSignalHandler):

2:21 PM Changeset in webkit [215761] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed. Attempt armv7k build fix after r215720

I think we're just missing an include for the definition of ExecState::r().

  • runtime/JSFixedArray.cpp:
2:21 PM Changeset in webkit [215760] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

CoreAudioCaptureSource::suspend is asserting too often
https://bugs.webkit.org/show_bug.cgi?id=171285

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

No change of behavior.

  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioCaptureSource::suspend): Moving the assertion to where it might be useful.

2:15 PM Changeset in webkit [215759] by dbates@webkit.org
  • 4 edits in trunk/Source/WebCore

Use an OptionSet for compositing reasons bitmask
https://bugs.webkit.org/show_bug.cgi?id=171153

Reviewed by Simon Fraser.

We should make use of OptionSet to represent the bitmask of the reasons a layer
was composited instead of using an integer and bitwise operations.

  • inspector/InspectorLayerTreeAgent.cpp:

(WebCore::InspectorLayerTreeAgent::reasonsForCompositingLayer):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::reasonsForCompositing):
(WebCore::RenderLayerCompositor::logReasonsForCompositing): Also fix code style issues;
an else-if statement should be written as an if-statement when the prior if-statement
concludes with a return statement.

  • rendering/RenderLayerCompositor.h:
2:14 PM Changeset in webkit [215758] by dbates@webkit.org
  • 34 edits
    12 deletes in trunk/Tools

Remove more EFL code
https://bugs.webkit.org/show_bug.cgi?id=171288

Rubber-stamped by Simon Fraser.

The EFL port is no longer in the WebKit OpenSource Project repository. Remove more code
that was part of the EFL port.

  • CMakeLists.txt:
  • DumpRenderTree/AccessibilityController.h:
  • DumpRenderTree/AccessibilityUIElement.cpp:

(AccessibilityUIElement::getJSClass):

  • DumpRenderTree/AccessibilityUIElement.h:
  • DumpRenderTree/DumpRenderTree.h:
  • DumpRenderTree/cairo/PixelDumpSupportCairo.h:
  • ImageDiff/efl/ImageDiff.cpp: Removed.
  • MiniBrowser/efl/CMakeLists.txt: Removed.
  • MiniBrowser/efl/main.c: Removed.
  • Scripts/build-dumprendertree:
  • Scripts/build-jsc:
  • Scripts/build-webkit:
  • Scripts/build-webkittestrunner:
  • Scripts/run-minibrowser:
  • Scripts/update-webkit-libs-jhbuild:
  • Scripts/update-webkitefl-libs: Removed.
  • Scripts/webkitdirs.pm:

(argumentsForConfiguration):
(extractNonMacOSHostConfiguration):
(executableProductDir):
(builtDylibPathForName):
(determinePortName):
(launcherPath):
(launcherName):
(getJhbuildPath):
(wrapperPrefixIfNeeded):
(generateBuildSystemFromCMakeProject):
(buildCMakeProjectOrExit):
(isEfl): Deleted.

  • Scripts/webkitperl/FeatureList.pm:
  • Scripts/webkitperl/webkitdirs_unittest/extractNonMacOSHostConfiguration.pl:
  • Scripts/webkitpy/common/config/ports.py:

(DeprecatedPort.port):
(GtkWK2Port.run_webkit_tests_command):
(EflWK2Port): Deleted.
(EflWK2Port.build_webkit_command): Deleted.

  • Scripts/webkitpy/port/builders.py:
  • Scripts/webkitpy/port/efl.py: Removed.
  • Scripts/webkitpy/port/efl_unittest.py: Removed.
  • Scripts/webkitpy/port/factory.py:

(platform_options):
(PortFactory):

  • Scripts/webkitpy/style/checkers/test_expectations_unittest.py:

(TestExpectationsTestCase.test_determine_port_from_expectations_path):

  • Scripts/webkitpy/tool/commands/rebaseline_unittest.py:

(TestRebaselineTest.test_baseline_directory):
(TestRebaselineExpectations.test_rebaseline_expectations):

  • TestWebKitAPI/PlatformEfl.cmake: Removed.
  • TestWebKitAPI/PlatformWebView.h:
  • TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks.cpp: Removed.
  • TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks_Bundle.cpp: Removed.
  • TestWebKitAPI/Tests/WebKit2/efl/WKViewScrollTo.cpp: Removed.
  • TestWebKitAPI/Tests/WebKit2/efl/scrollTo.html: Removed.
  • TestWebKitAPI/efl/InjectedBundleController.cpp: Removed.
  • TestWebKitAPI/efl/PlatformUtilities.cpp: Removed.
  • TestWebKitAPI/efl/PlatformWebView.cpp: Removed.
  • TestWebKitAPI/efl/main.cpp: Removed.
  • WebKitTestRunner/EventSenderProxy.h:
  • WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
  • WebKitTestRunner/InjectedBundle/AccessibilityController.h:
  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/EventSendingController.cpp:

(WTR::EventSendingController::contextClick):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:

(WTR::AccessibilityNotificationHandler::setNotificationFunctionCallback):
(WTR::AccessibilityNotificationHandler::removeAccessibilityNotificationHandler):

  • WebKitTestRunner/InjectedBundle/efl/ActivateFontsEfl.cpp: Removed.
  • WebKitTestRunner/InjectedBundle/efl/FontManagement.cpp: Removed.
  • WebKitTestRunner/InjectedBundle/efl/FontManagement.h: Removed.
  • WebKitTestRunner/InjectedBundle/efl/InjectedBundleEfl.cpp: Removed.
  • WebKitTestRunner/InjectedBundle/efl/TestRunnerEfl.cpp: Removed.
  • WebKitTestRunner/PlatformEfl.cmake: Removed.
  • WebKitTestRunner/PlatformWebView.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetStateToConsistentValues):

  • WebKitTestRunner/efl/EventSenderProxyEfl.cpp: Removed.
  • WebKitTestRunner/efl/PlatformWebViewEfl.cpp: Removed.
  • WebKitTestRunner/efl/TestControllerEfl.cpp: Removed.
  • WebKitTestRunner/efl/main.cpp: Removed.
  • efl/install-dependencies: Removed.
  • efl/jhbuild-optional.modules: Removed.
  • efl/jhbuild.modules: Removed.
  • efl/jhbuildrc: Removed.
  • efl/patches/evas-fix-build-with-giflib5.patch: Removed.
  • efl/patches/fontconfig-C-11-requires-a-space-between-literal-and-identifier.patch: Removed.
  • efl/patches/gst-libav.patch: Removed.
  • efl/patches/gst-plugins-base-rtp-rtcpbuffer-fix-typo-in-enum.patch: Removed.
  • efl/patches/gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch: Removed.
  • efl/patches/gst-plugins-good-use-the-tfdt-decode-time.patch: Removed.
  • efl/patches/openwebrtc-gst-plugins-clang-warning-fix.patch: Removed.
  • gtk/manifest.txt.in:
2:12 PM Changeset in webkit [215757] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Open the new bug page in the new tab
https://bugs.webkit.org/show_bug.cgi?id=171253

Reviewed by Joseph Pecoraro.

  • UserInterface/Debug/UncaughtExceptionReporter.js:

(createErrorSheet):

1:58 PM Changeset in webkit [215756] by mmaxfield@apple.com
  • 5 edits
    2 adds in trunk

Supplementary Multilingual Plane Complex Scripts Rendered Incorrectly
https://bugs.webkit.org/show_bug.cgi?id=171272
<rdar://problem/30966764>

Reviewed by Zalan Bujtas.

Source/WebCore:

These scripts need to take the complex text codepath.

Test: fast/text/kaithi.html

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::characterRangeCodePath):

LayoutTests:

  • fast/text/kaithi-expected.html: Added.
  • fast/text/kaithi.html: Added.
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
1:38 PM Changeset in webkit [215755] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: "Space" localized string is not loaded in combined and minified builds
https://bugs.webkit.org/show_bug.cgi?id=171283
<rdar://problem/30871371>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-04-25
Reviewed by Brian Burg.

In combined and minified builds, the document.write() to load the
localized strings script doesn't happen before the KeyboardShortcut
global code in Main.js evaluates, so there is no UIString because
window.localizedStrings hasn't populated yet. Since this is the only
instance, populate the display UIString lazily and provide warnings
in minified builds if this happens.

  • UserInterface/Base/LoadLocalizedStrings.js:

(WebInspector.UIString):
Provide a warning if a UIString was attempted before the strings have loaded.

  • UserInterface/Base/Main.js:

(WebInspector.loaded):
For this rare instance, populate the display name of the string when we are
sure strings have loaded.

  • UserInterface/Models/KeyboardShortcut.js:

Revert the UIString here, but note that it will be populated later.

  • UserInterface/Models/Resource.js:

(WebInspector.Resource.prototype.setCachedResponseBodySize):

  • UserInterface/Views/DOMTreeElement.js:

(WebInspector.DOMTreeElement.prototype._statusImageContextmenu):
Address console.asserts not ending in semicolon warnings produced during
optimized builds. Without semicolons they are not stripped.

1:33 PM Changeset in webkit [215754] by clopez@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK] Revert r215745 (especulative build fix) after r215752.
https://bugs.webkit.org/show_bug.cgi?id=170842

Unreviewed.

  • platform/graphics/harfbuzz/HarfBuzzShaper.cpp:

(WebCore::normalizeCharacters):

1:26 PM Changeset in webkit [215753] by dbates@webkit.org
  • 35 edits
    1 copy
    1 add in trunk

[Cocoa][Win] Enable of X-Content-Type-Options: nosniff header
https://bugs.webkit.org/show_bug.cgi?id=136452
<rdar://problem/23412620>

Reviewed by Brent Fulgham.

.:

Enable X-Content-Type-Options: nosniff on Mac, iOS and Windows platforms.

  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/OptionsWin.cmake:

LayoutTests/imported/w3c:

Update expected results now we support X-Content-Type-Options: nosniff.

  • web-platform-tests/fetch/nosniff/parsing-nosniff-expected.txt:
  • web-platform-tests/fetch/nosniff/script-expected.txt:
  • web-platform-tests/fetch/nosniff/stylesheet-expected.txt:

Source/JavaScriptCore:

Enable X-Content-Type-Options: nosniff on Mac, iOS and Windows platforms.

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Enable support for X-Content-Type-Options: nosniff on Mac, iOS and Windows.

Additionally, honor X-Content-Type-Options: nosniff header for stylesheets as per
<https://fetch.spec.whatwg.org/#should-response-to-request-be-blocked-due-to-nosniff%3F> (30 March 2017).

Test: http/tests/security/contentTypeOptions/nosniff-dynamic-script-blocked.html

  • Configurations/FeatureDefines.xcconfig:
  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::parseAuthorStyleSheet): Log an error if the stylesheet
has the nosniff header and does not have a valid MIME type. Also update code for
renaming of MIMETypeCheck to MIMETypeCheckHint.
(WebCore::StyleSheetContents::notifyLoadedSheet): If the stylesheet is blocked by
nosniff then consider it analogous to a load error so that we dispatch a DOM error
event at the <style>/<link> element.

  • dom/LoadableClassicScript.cpp:

(WebCore::LoadableClassicScript::notifyFinished): Modified the wording of the error
message when a script is disallowed by nosniff so as to more closely match the
wording used when a stylesheet is disallowed by nonsniff.

  • loader/cache/CachedCSSStyleSheet.cpp:

(WebCore::CachedCSSStyleSheet::sheetText): Update for renaming of MIMETypeCheck
to MIMETypeCheckHint.
(WebCore::CachedCSSStyleSheet::responseMIMEType): Added.
(WebCore::CachedCSSStyleSheet::mimeTypeAllowedByNosniff): Added.
(WebCore::CachedCSSStyleSheet::canUseSheet): Modified to check if the X-Content-Type-Options: nosniff
header is in the HTTP response for the stylesheet. If it is then we can only use the stylesheet
if its content-type is "text/css". Otherwise, apply the existing criterion for determining whether
to to use the stylesheet.

  • loader/cache/CachedCSSStyleSheet.h: Rename MIMETypeCheck to MIMETypeCheckHint to better

describe its purpose as a hint as to whether to enforce MIME type checking for the stylesheet.
Processing of the HTTP header X-Content-Type-Options takes precedence over this hint.

  • loader/cache/CachedScript.h: Make mimeType() private.

Source/WebCore/PAL:

Enable X-Content-Type-Options: nosniff on Mac, iOS and Windows platforms.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

Enable X-Content-Type-Options: nosniff on Mac, iOS and Windows platforms.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

Enable X-Content-Type-Options: nosniff on Mac, iOS and Windows platforms.

  • Configurations/FeatureDefines.xcconfig:

Tools:

Enable X-Content-Type-Options: nosniff on Mac, iOS and Windows platforms.

  • Scripts/webkitperl/FeatureList.pm: Also do not enable nosniff on EFL

as the EFL port is no longer in the WebKit OpenSource repository.

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

Unskip nosniff tests on Mac, iOS and Windows and update expected results now that
we support X-Content-Type-Options: nosniff.

Merge Blink test from <https://src.chromium.org/viewvc/blink?revision=168570&view=revision>.

  • TestExpectations: Unskip all nosniff tests except imported/w3c/web-platform-tests/fetch/nosniff/importscripts.html.

We need to fix <https://bugs.webkit.org/show_bug.cgi?id=171248> before we can unskip it.
When running the nosniff Web Platform Tests (WPT) dump console messages to standard error
to avoid a difference of console message ordering due to the non-determinism of the WPT
tests from affecting the matching of the expected result.

  • http/tests/security/contentTypeOptions/nosniff-dynamic-script-blocked-expected.txt: Added.
  • http/tests/security/contentTypeOptions/nosniff-dynamic-script-blocked.html: Copied from LayoutTests/http/tests/security/contentTypeOptions/nosniff-script-blocked.html.
  • http/tests/security/contentTypeOptions/nosniff-script-blocked-expected.txt: Update expected result.
  • http/tests/security/contentTypeOptions/nosniff-script-blocked.html: Substitute the not executable

MIME type "text/xx-javascript" for "text/x-javascript" as the latter is an acceptable MIME type for
JavaScript scripts as per the Fetch standard, <https://html.spec.whatwg.org/multipage/scripting.html#javascript-mime-type> (30 March 2017).

  • http/tests/security/contentTypeOptions/nosniff-script-without-content-type-blocked-expected.txt: Update

expected result.

  • platform/gtk/TestExpectations: Skip the nosniff tests as GTK does not enable ENABLE(NOSNIFF).
  • platform/ios/TestExpectations: Unskip nosniff tests.
  • platform/mac/TestExpectations: Ditto.
  • platform/win/TestExpectations: Ditto.
  • platform/wk2/TestExpectations: Ditto.
1:22 PM Changeset in webkit [215752] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[GTK] Build fix after r215737
https://bugs.webkit.org/show_bug.cgi?id=170842

Unreviewed.

No new tests because there is no behavior change.

  • platform/graphics/FontCascade.h:

(WebCore::FontCascade::treatAsZeroWidthSpace):
(WebCore::FontCascade::treatAsZeroWidthSpaceInComplexScript):

12:37 PM Changeset in webkit [215751] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Remove an unnecessary -respondsToSelector: check after r215724

Rubber-stamped by Tim Horton.

Addresses review feedback from <https://bugs.webkit.org/show_bug.cgi?id=171156>. -[NSURL _title]
will always for builds that need to access it.

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::readURL):

12:20 PM Changeset in webkit [215750] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

REGRESSION (r215469): [ios-simulator-wk2] LayoutTest compositing/animation/animation-backing.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=171060
<rdar://problem/31771174>

Reviewed by Simon Fraser.

Accelerated transform animations move underlying layers without invalidating GraphicsLayers.
To update tile coverage we need to commit such subtrees even if there are not other changes.

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::GraphicsLayerCA):
(WebCore::GraphicsLayerCA::needsCommit):

Commit subtrees with accelerated transform animations.
Factor into a function.

(WebCore::GraphicsLayerCA::recursiveCommitChanges):

Track if descendants had any accelerated transform animations after commit.

  • platform/graphics/ca/GraphicsLayerCA.h:

(WebCore::GraphicsLayerCA::hasDescendantsWithRunningTransformAnimations):
(WebCore::GraphicsLayerCA::setHasDescendantsWithRunningTransformAnimations):

12:15 PM Changeset in webkit [215749] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: TypeError:​ sourceCodeLocation.populateLiveDisplayLocationTooltip is not a function
https://bugs.webkit.org/show_bug.cgi?id=171259

Patch by Fujii Hironori <Fujii Hironori> on 2017-04-25
Reviewed by Joseph Pecoraro.

The first argument of WebInspector.createSourceCodeLocationLink
should be SourceCodeLocation type.

  • UserInterface/Views/TimelineDataGridNode.js:

(WebInspector.TimelineDataGridNode.prototype.createCellContent):
Pass 'callFrame.sourceCodeLocation' instead of 'value' to the
first argument.

12:04 PM Changeset in webkit [215748] by mark.lam@apple.com
  • 6 edits
    1 add in trunk

Local CSE wrongly CSEs array accesses with different result types.
https://bugs.webkit.org/show_bug.cgi?id=170990
<rdar://problem/31705945>

Reviewed by Saam Barati.

JSTests:

  • stress/regress-170990.js: Added.

Source/JavaScriptCore:

The fix is to use different LocationKind enums for the different type of array
result types. This makes the HeapLocation values different based on the result
types, and allows CSE to discern between them.

  • dfg/DFGCSEPhase.cpp:
  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGHeapLocation.cpp:

(WTF::printInternal):

  • dfg/DFGHeapLocation.h:

(JSC::DFG::indexedPropertyLocForResultType):

11:42 AM Changeset in webkit [215747] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Make DFG SpeculatedType dumps easier to read.
https://bugs.webkit.org/show_bug.cgi?id=171280

Reviewed by Saam Barati.

Adding a pretty printer to insert |s between each type string and changing the
dumped strings to match the SpeculatedType names case-wise.

  • bytecode/SpeculatedType.cpp:

(JSC::PrettyPrinter::PrettyPrinter):
(JSC::PrettyPrinter::print):
(JSC::dumpSpeculation):

  • bytecode/SpeculatedType.h:
11:22 AM Changeset in webkit [215746] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[MediaStream macOS] Unable to apply frameRate constraint
https://bugs.webkit.org/show_bug.cgi?id=171279

Reviewed by Youenn Fablet.

No new tests, this doesn't affect the mock capture devices.

  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::supportsSizeAndFrameRate): Cast frame rate
ranges to int before comparing.

11:21 AM Changeset in webkit [215745] by clopez@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK] Build fix after r215737
https://bugs.webkit.org/show_bug.cgi?id=170842

Unreviewed.

  • platform/graphics/harfbuzz/HarfBuzzShaper.cpp:

(WebCore::normalizeCharacters):

10:44 AM Changeset in webkit [215744] by zandobersek@gmail.com
  • 2 edits in trunk/Tools

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.

10:36 AM Changeset in webkit [215743] by jfbastien@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

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

10:14 AM Changeset in webkit [215742] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.2.5

Tag Safari-603.2.5.

10:05 AM Changeset in webkit [215741] by wilander@apple.com
  • 19 edits in trunk/Source

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:
10:01 AM Changeset in webkit [215740] by zandobersek@gmail.com
  • 1 edit
    1 add in trunk/Tools

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.

9:45 AM Changeset in webkit [215739] by zandobersek@gmail.com
  • 2 edits in trunk/Tools

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

9:36 AM Changeset in webkit [215738] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

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:
9:35 AM Changeset in webkit [215737] by mmaxfield@apple.com
  • 6 edits
    1 add in trunk

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:
9:29 AM Changeset in webkit [215736] by Chris Dumez
  • 11 edits
    3 adds in trunk

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:

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:

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.

9:10 AM Changeset in webkit [215735] by clopez@igalia.com
  • 2 edits in trunk/Tools

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

9:03 AM Changeset in webkit [215734] by Ryan Haddad
  • 1 edit
    3 adds in trunk/LayoutTests

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.
8:36 AM Changeset in webkit [215733] by Yusuke Suzuki
  • 2 edits in trunk/JSTests

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

8:24 AM Changeset in webkit [215732] by Carlos Garcia Campos
  • 6 edits
    2 adds in trunk/Source

[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.
7:15 AM Changeset in webkit [215731] by zandobersek@gmail.com
  • 2 edits in trunk/Source/JavaScriptCore

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

7:14 AM Changeset in webkit [215730] by Antti Koivisto
  • 8 edits in trunk

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.

5:35 AM Changeset in webkit [215729] by magomez@igalia.com
  • 9 edits in trunk/Source/WebCore

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:
5:16 AM Changeset in webkit [215728] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Build fix

Unreviewed.

No new tests because there is no behavior change.

  • crypto/mac/SerializedCryptoKeyWrapMac.mm:

(WebCore::wrapSerializedCryptoKey):
(WebCore::unwrapSerializedCryptoKey):

3:48 AM Changeset in webkit [215727] by clopez@igalia.com
  • 5 edits
    1 delete in trunk/Tools

[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

1:46 AM Changeset in webkit [215726] by fred.wang@free.fr
  • 5 edits
    123 adds in trunk/LayoutTests

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.
12:41 AM Changeset in webkit [215725] by commit-queue@webkit.org
  • 1 edit
    1 add in trunk/Source/WebCore/platform/gtk/po

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

12:00 AM Changeset in webkit [215724] by Wenson Hsieh
  • 24 edits in trunk

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

Apr 24, 2017:

11:52 PM Changeset in webkit [215723] by commit-queue@webkit.org
  • 14 edits in trunk

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

10:19 PM Changeset in webkit [215722] by commit-queue@webkit.org
  • 90 edits in trunk/Source

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

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:

Remove test expectations.

10:09 PM Changeset in webkit [215720] by Yusuke Suzuki
  • 10 edits
    3 adds in trunk

[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:
9:58 PM Changeset in webkit [215719] by Manuel Rego Casasnovas
  • 4 edits in trunk

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

8:48 PM Changeset in webkit [215718] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

[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.
8:23 PM Changeset in webkit [215717] by Yusuke Suzuki
  • 2 edits in trunk/Source/WTF

Unreviewed, fix Windows build after r215715
https://bugs.webkit.org/show_bug.cgi?id=171199

  • wtf/StackTrace.h:
8:21 PM Changeset in webkit [215716] by jcraig@apple.com
  • 1 edit
    3 adds in trunk/Websites/webkit.org

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.
7:53 PM Changeset in webkit [215715] by Yusuke Suzuki
  • 12 edits
    1 copy
    2 moves in trunk/Source

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

7:35 PM Changeset in webkit [215714] by Wenson Hsieh
  • 21 edits
    1 delete in trunk

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.

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

7:15 PM Changeset in webkit [215713] by Yusuke Suzuki
  • 6 edits in trunk/Source/WTF

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

7:10 PM Changeset in webkit [215712] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

[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.
6:44 PM Changeset in webkit [215711] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

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

6:23 PM Changeset in webkit [215710] by commit-queue@webkit.org
  • 28 edits
    1 add in trunk/Source/WebCore

[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.
5:43 PM Changeset in webkit [215709] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix.

  • crypto/mac/CryptoAlgorithmAES_GCMMac.cpp:

(WebCore::encryptAES_GCM):
(WebCore::decyptAES_GCM):

5:30 PM Changeset in webkit [215708] by clopez@igalia.com
  • 2 edits in trunk/Tools

SyntaxError fix after r215702.
https://bugs.webkit.org/show_bug.cgi?id=168944

Unreviewed "build" fix.

  • BuildSlaveSupport/built-product-archive:

(archiveBuiltProduct):

5:18 PM Changeset in webkit [215707] by beidson@apple.com
  • 8 edits in trunk/Source/WebKit2

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

5:14 PM Changeset in webkit [215706] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk/Source/WebCore

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.
5:05 PM Changeset in webkit [215705] by n_wang@apple.com
  • 3 edits
    2 adds in trunk

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.
5:04 PM Changeset in webkit [215704] by sbarati@apple.com
  • 5 edits
    4 adds in trunk/PerformanceTests

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.
5:02 PM Changeset in webkit [215703] by commit-queue@webkit.org
  • 9 edits
    2 adds in trunk

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.
4:44 PM Changeset in webkit [215702] by Jonathan Bedard
  • 2 edits in trunk/Tools

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.

4:43 PM Changeset in webkit [215701] by Chris Dumez
  • 296 edits in trunk

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:

Latest spec:

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:
3:46 PM Changeset in webkit [215700] by Chris Dumez
  • 7 edits
    2 adds in trunk

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.
3:43 PM Changeset in webkit [215699] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

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

3:02 PM Changeset in webkit [215698] by Joseph Pecoraro
  • 5 edits in trunk/Source/JavaScriptCore

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.

2:43 PM Changeset in webkit [215697] by keith_miller@apple.com
  • 2 edits in trunk/Tools

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

2:33 PM Changeset in webkit [215696] by aestes@apple.com
  • 3 edits in trunk/Source/WebCore

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

2:17 PM Changeset in webkit [215695] by sbarati@apple.com
  • 4 edits in trunk/LayoutTests

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

2:11 PM Changeset in webkit [215694] by sbarati@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

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:
1:58 PM Changeset in webkit [215693] by aestes@apple.com
  • 2 edits in trunk/Source/WebKit2

Try to fix the 32-bit macOS build.

  • UIProcess/Cocoa/WebViewImpl.mm:
1:48 PM Changeset in webkit [215692] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

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:
1:46 PM Changeset in webkit [215691] by aestes@apple.com
  • 4 edits in trunk/Source

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

12:48 PM Changeset in webkit [215690] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

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

12:25 PM Changeset in webkit [215689] by commit-queue@webkit.org
  • 10 edits in trunk

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

11:08 AM Changeset in webkit [215688] by commit-queue@webkit.org
  • 6 edits in trunk

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 <Joseph Pecoraro> 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:
10:59 AM Changeset in webkit [215687] by commit-queue@webkit.org
  • 6 edits in trunk

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

10:31 AM Changeset in webkit [215686] by achristensen@apple.com
  • 58 edits in trunk

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

10:26 AM Changeset in webkit [215685] by mitz@apple.com
  • 16 edits in trunk/Source

[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:
10:21 AM Changeset in webkit [215684] by zandobersek@gmail.com
  • 2 edits in trunk

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.

9:17 AM Changeset in webkit [215683] by Carlos Garcia Campos
  • 27 edits
    11 adds
    2 deletes in trunk

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

9:06 AM Changeset in webkit [215682] by commit-queue@webkit.org
  • 19 edits
    1 add in trunk

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

Patch by Joseph Pecoraro <Joseph Pecoraro> 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?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.

6:15 AM Changeset in webkit [215681] by zandobersek@gmail.com
  • 2 edits in trunk

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

Apr 23, 2017:

10:51 PM Changeset in webkit [215680] by commit-queue@webkit.org
  • 19 edits
    1 delete in trunk

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

2:19 PM Changeset in webkit [215679] by commit-queue@webkit.org
  • 4 edits in trunk

test262: test262/test/built-ins/Number/prototype/toPrecision/nan.js
https://bugs.webkit.org/show_bug.cgi?id=171197

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

1:47 PM Changeset in webkit [215678] by mitz@apple.com
  • 2 edits in trunk/Source/WebKit2

[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.
1:32 PM Changeset in webkit [215677] by commit-queue@webkit.org
  • 4 edits in trunk/Source

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

12:53 PM Changeset in webkit [215676] by ap@apple.com
  • 2 edits in trunk/Source/WebKit2

Build fix after r215657.

  • UIProcess/Cocoa/WebViewImpl.mm:
12:52 PM Changeset in webkit [215675] by commit-queue@webkit.org
  • 2 edits
    3 adds in trunk/Tools

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.
10:23 AM Changeset in webkit [215674] by commit-queue@webkit.org
  • 19 edits
    1 add in trunk

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

Patch by Joseph Pecoraro <Joseph Pecoraro> 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?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.

8:37 AM Changeset in webkit [215673] by commit-queue@webkit.org
  • 7 edits in trunk

test262: test262/test/built-ins/Number/parseFloat.js
https://bugs.webkit.org/show_bug.cgi?id=171193

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

4:27 AM Changeset in webkit [215672] by aestes@apple.com
  • 22 edits
    1 add in trunk/Source

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

2:12 AM Changeset in webkit [215671] by Yusuke Suzuki
  • 5 edits in trunk/Source/JavaScriptCore

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

Apr 22, 2017:

11:27 PM Changeset in webkit [215670] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

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

8:52 PM Changeset in webkit [215669] by Wenson Hsieh
  • 8 edits in trunk

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

11:46 AM Changeset in webkit [215668] by eric.carlson@apple.com
  • 3 edits in trunk/Source

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

11:08 AM Changeset in webkit [215667] by Yusuke Suzuki
  • 3 edits in trunk/Source/WTF

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

7:34 AM Changeset in webkit [215666] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

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

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

7:07 AM Changeset in webkit [215665] by Yusuke Suzuki
  • 3 edits in trunk/Source/WTF

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:
12:52 AM Changeset in webkit [215664] by jfbastien@apple.com
  • 7 edits in trunk

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.

Apr 21, 2017:

11:18 PM Changeset in webkit [215663] by Wenson Hsieh
  • 20 edits in trunk

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

9:31 PM Changeset in webkit [215662] by jfbastien@apple.com
  • 2 edits in trunk/JSTests

Noisy OOM

7:23 PM Changeset in webkit [215661] by Michael Catanzaro
  • 51 edits in trunk

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

7:01 PM Changeset in webkit [215660] by Alan Bujtas
  • 5 edits
    4 adds in trunk

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.
6:00 PM Changeset in webkit [215659] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

[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:
5:55 PM Changeset in webkit [215658] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

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.

5:53 PM Changeset in webkit [215657] by aestes@apple.com
  • 4 edits in trunk/Source

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

5:51 PM Changeset in webkit [215656] by aestes@apple.com
  • 3 edits in trunk/Source/WebCore

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

5:14 PM Changeset in webkit [215655] by jer.noble@apple.com
  • 7 edits in trunk/Source/WebCore

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:
5:06 PM Changeset in webkit [215654] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

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

5:03 PM Changeset in webkit [215653] by Wenson Hsieh
  • 18 edits
    1 delete in trunk

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

4:58 PM Changeset in webkit [215652] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk

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:
3:55 PM Changeset in webkit [215651] by Ryan Haddad
  • 3 edits in trunk/Tools

Temporarily disable two flaky API tests.

Unreviewed test gardening.

  • TestWebKitAPI/Tests/WebKit2Cocoa/BundleRangeHandle.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/DataDetection.mm:

(TEST):

3:55 PM Changeset in webkit [215650] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

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:
3:45 PM Changeset in webkit [215649] by mrajca@apple.com
  • 5 edits in trunk/Source/WebCore

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

3:23 PM Changeset in webkit [215648] by Chris Dumez
  • 24 edits
    2 adds in trunk

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.
3:17 PM Changeset in webkit [215647] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[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

3:13 PM Changeset in webkit [215646] by weinig@apple.com
  • 11 edits
    2 adds in trunk/Source

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.

3:01 PM Changeset in webkit [215645] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed fix after r215624; null-deref crash.

Make sure to call reset() inside each constructor.

  • platform/audio/WebAudioBufferList.cpp:

(WebCore::WebAudioBufferList::WebAudioBufferList):

2:45 PM Changeset in webkit [215644] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

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

2:43 PM Changeset in webkit [215643] by dbates@webkit.org
  • 2 edits in trunk/LayoutTests

[iOS] Skip http/tests/security/contentSecurityPolicy/{audio, video}-redirect-allowed2.html
<rdar://problem/31690952>

Rubber-stamped by Jer Noble.

We can enable these tests again once we fix <rdar://problem/25780035>.

  • platform/ios/TestExpectations:
2:42 PM Changeset in webkit [215642] by mark.lam@apple.com
  • 10 edits
    4 adds in trunk/Source/JavaScriptCore

Refactor MASM probe to allow printing of custom types.
https://bugs.webkit.org/show_bug.cgi?id=171101

Reviewed by JF Bastien.

For example, this allows us to add MASM printing of CodeBlock* and Air::Args.

In general, MASM print can be used like dataLog, except that it generates JITted
code for doing the dataLogging later when the JITted code runs. MASM print can
print any value type that a specialized Printer template or a setPrinter()
function implemented for that type.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/MacroAssembler.h:
  • assembler/MacroAssemblerPrinter.cpp:

(JSC::Printer::printAllRegisters):
(JSC::Printer::printPCRegister):
(JSC::Printer::printRegisterID):
(JSC::Printer::printFPRegisterID):
(JSC::Printer::printAddress):
(JSC::Printer::printMemory):
(JSC::Printer::printCallback):
(JSC::printIndent): Deleted.
(JSC::printCPU): Deleted.
(JSC::printCPURegisters): Deleted.
(JSC::printPC): Deleted.
(JSC::printRegister): Deleted.
(JSC::printMemory): Deleted.
(JSC::MacroAssemblerPrinter::printCallback): Deleted.

  • assembler/MacroAssemblerPrinter.h:

(JSC::AllRegisters::AllRegisters):
(JSC::Printer::Printer<AllRegisters>::Printer):
(JSC::Printer::Printer<PCRegister>::Printer):
(JSC::Printer::Printer<MacroAssembler::RegisterID>::Printer):
(JSC::Printer::Printer<MacroAssembler::FPRegisterID>::Printer):
(JSC::Printer::Printer<MacroAssembler::Address>::Printer):
(JSC::Printer::Printer<Memory>::Printer):
(JSC::Printer::Printer<MemWord<IntType>>::Printer):
(JSC::MacroAssembler::print):
(JSC::MacroAssemblerPrinter::print): Deleted.
(JSC::MacroAssemblerPrinter::PrintArg::PrintArg): Deleted.
(JSC::MacroAssemblerPrinter::appendPrintArg): Deleted.

  • Refactored to move the underlying PrintRecord (and associated data structures) out to Printer.cpp/h.
  • MacroAssemblerPrinter.cpp/h now only add custom Printers for MASM types like RegisterID and Memory. It also defines the implementation of MacroAssembler::print().

As before, JIT code that wishes to use MacroAssembler::print() needs to
#include "MacroAssemblerPrinter.h".

  • Also added the ability to specify an optional indentation (in number of chars) when MASM printing AllRegisters. This is useful because AllRegisters prints a block of data unlike other printers which print inline.
  • assembler/Printer.cpp: Added.

(JSC::Printer::printConstCharString):
(JSC::Printer::printIntptr):
(JSC::Printer::printUintptr):
(JSC::Printer::printPointer):
(JSC::Printer::setPrinter):

  • assembler/Printer.h: Added.

(JSC::Printer::Context::Context):
(JSC::Printer::PrintRecord::PrintRecord):
(JSC::Printer::appendPrinter):
(JSC::Printer::makePrintRecordList):
(JSC::Printer::Printer<RawPointer>::Printer):
(JSC::Printer::setPrinter):
(JSC::Printer::Printer::Printer):

  • Data structures for creating a list of PrintRecords. Classes which wish to add custom support for MASM printing can #include "Printer.h" and implement either:
    1. a specialized Printer template, or
    2. a setPrinter() function.

See Printer<Reg> and Printer<B3::Air::Tmp> in AirPrintSpecial.h for examples of
(1). See CodeBlock's setPrinter() for an example of (2).

  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::print):

  • b3/air/AirPrintSpecial.cpp: Added.

(JSC::B3::Air::PrintSpecial::PrintSpecial):
(JSC::B3::Air::PrintSpecial::~PrintSpecial):
(JSC::B3::Air::PrintSpecial::forEachArg):
(JSC::B3::Air::PrintSpecial::isValid):
(JSC::B3::Air::PrintSpecial::admitsStack):
(JSC::B3::Air::PrintSpecial::reportUsedRegisters):
(JSC::B3::Air::PrintSpecial::generate):
(JSC::B3::Air::PrintSpecial::extraEarlyClobberedRegs):
(JSC::B3::Air::PrintSpecial::extraClobberedRegs):
(JSC::B3::Air::PrintSpecial::dumpImpl):
(JSC::B3::Air::PrintSpecial::deepDumpImpl):
(JSC::Printer::printAirArg):

  • b3/air/AirPrintSpecial.h: Added.

(JSC::Printer::appendAirArg):
(JSC::Printer::appendAirArgs):
(JSC::Printer::Printer<B3::Air::Tmp>::Printer):
(JSC::Printer::Printer<Reg>::Printer):

  • Add the print() operation for use in LowerToAir. print() will emit a PrintSpecial that will ultimately emit a MASM print to print what we want.
  • LowerToAir's print() adds the ability to print Air::Args.
  • Unlike in the baseline JIT and the DFG, LowerToAir's print() can perturb the usage of registers. This is because PrintSpecial is a patch point, and it prevents certain optimizations. If not used carefully, an attempt to print() an Arg by taking a Tmp, can force the B3 Value into a Tmp earlier than it would otherwise do so. So, use LowerToAir's print() with care.
  • bytecode/CodeBlock.cpp:

(JSC::setPrinter):

  • Now we can MASM print CodeBlock*.

(WTF::printInternal):

  • Now we can dataLog CodeBlock* (including null CodeBlock pointers).
  • bytecode/CodeBlock.h:
  • runtime/VM.cpp:

(JSC::VM::throwException):

  • Use the new ability to dataLog CodeBlock*. No need to do an explicit null check before printing anymore.
2:41 PM Changeset in webkit [215641] by Alan Bujtas
  • 1 edit
    1 add in trunk/PerformanceTests

Simple line layout: Add performance test to measure mid-word line breaking with long text.
https://bugs.webkit.org/show_bug.cgi?id=171136

Reviewed by Ryosuke Niwa.

  • Layout/simple-line-layout-word-break-long-text.html: Added.
2:31 PM Changeset in webkit [215640] by rniwa@webkit.org
  • 6 edits in trunk/Websites/perf.webkit.org

Rename commit_set_relationships to commit_set_items
https://bugs.webkit.org/show_bug.cgi?id=171143

Reviewed by Joseph Pecoraro.

Renamed commit_set_relationships to commit_set_items. Also added commitset_patch_file in the preparation to add
the support for applying patches in custom test groups. To migrate an existing database, run:

`sql
BEGIN;
ALTER TABLE commit_set_relationships RENAME TO commit_set_items;
ALTER TABLE commit_set_items ADD COLUMN commitset_patch_file integer REFERENCES uploaded_files;
ALTER TABLE commit_set_items ADD CONSTRAINT commitset_with_patch_must_have_commit

CHECK (commitset_patch_file IS NULL OR commitset_commit IS NOT NULL);

END;
`

  • init-database.sql:
  • public/include/build-requests-fetcher.php:
  • public/privileged-api/create-test-group.php:
  • server-tests/resources/mock-data.js:

(MockData.addMockData):
(MockData.addMockTestGroupWithGitWebKit):

  • tools/js/database.js:
2:28 PM Changeset in webkit [215639] by andersca@apple.com
  • 6 edits in trunk/Source

Stop using deprecated APIs, part 5
https://bugs.webkit.org/show_bug.cgi?id=171134
rdar://problem/31589635

Reviewed by Tim Horton.

Source/WebCore:

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::convertAndValidate):
Stop using the toPaymentAuthorizationStatus. Convert the passed in status results to the remaining
PaymentAuthorizationStatus values, and add errors if needed.

(WebCore::toPaymentAuthorizationStatus):
This function is no longer used.

  • Modules/applepay/PaymentAuthorizationStatus.h:

Remove deprecated status values. We can achieve the same results with errors now.

  • Modules/applepay/PaymentRequest.cpp:

(WebCore::isFinalStateResult):
Remove deprecated status values.

  • Modules/applepay/PaymentRequest.h:

Remove deprecated status values.

Source/WebKit2:

  • UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::toPKPaymentAuthorizationStatus):
Remove this and add a new version that doesn't use any deprecated values.

(WebKit::toPKPaymentAuthorizationStatus):
New function that takes a WebCore::PaymentAuthorizationResult and converts it to a status, for older OSes.

(WebKit::WebPaymentCoordinatorProxy::platformCompletePaymentSession):
Use the new toPKPaymentAuthorizationStatus versions.

(WebKit::WebPaymentCoordinatorProxy::platformCompleteShippingContactSelection):
Ditto.

(WebKit::status): Deleted.

2:28 PM Changeset in webkit [215638] by keith_miller@apple.com
  • 15 edits
    6 adds in trunk

Unreviewed, rolling out r215634.

underlying build issues should have been fixed

Reverted changeset:

"Unreviewed, rolling out r215620 and r215623."
https://bugs.webkit.org/show_bug.cgi?id=171139
http://trac.webkit.org/changeset/215634

2:14 PM Changeset in webkit [215637] by keith_miller@apple.com
  • 9 edits in trunk/Source

Source/JavaScriptCore:
Unreviewed, rolling out r215620 and r215623.
https://bugs.webkit.org/show_bug.cgi?id=171139

broke arm64 build (Requested by keith_miller on #webkit).

Reverted changesets:

"Add signaling API"
https://bugs.webkit.org/show_bug.cgi?id=170976
http://trac.webkit.org/changeset/215620

"Unreviewed, fix Cloop build."
http://trac.webkit.org/changeset/215623

Patch by Commit Queue <commit-queue@webkit.org> on 2017-04-21

Source/WTF:
Remove LL/SC from Atomics
https://bugs.webkit.org/show_bug.cgi?id=171141

Reviewed by Saam Barati.

Adding load link and store conditionally was not an actual progression
and the existing code is causing problems for users of Atomics. So let's
get rid of it.

  • wtf/Atomics.h:

(WTF::hasFence):
(WTF::Atomic::exchange):
(WTF::Atomic::transaction):
(WTF::Atomic::transactionRelaxed):
(WTF::Atomic::prepare): Deleted.
(WTF::Atomic::attempt): Deleted.

  • wtf/Bitmap.h:

(WTF::WordType>::concurrentTestAndSet):
(WTF::WordType>::concurrentTestAndClear):

  • wtf/LockAlgorithm.h:

(WTF::LockAlgorithm::lockFast):
(WTF::LockAlgorithm::unlockFast):

2:08 PM Changeset in webkit [215636] by rniwa@webkit.org
  • 11 edits
    1 add in trunk/Websites/perf.webkit.org

Add the support for creating a custom test group in the analysis task page

Make it possible to create more custom test groups in the analysis task page
https://bugs.webkit.org/show_bug.cgi?id=171138

Rubber-stamped by Chris Dumez.

Extracted CustomConfigurationTestGroupForm out of CreateAnalysisTaskPage and added it to AnalysisTaskPage inside
AnalysisTaskConfiguratorPane. This allows configuration of a new test group within a custom analysis task.

  • public/privileged-api/create-test-group.php:

(main): Fixed the bug that the triggerable wasn't resolved when creating a test group in a custom analysis task.

  • public/v3/components/custom-analysis-task-configurator.js:

(CustomAnalysisTaskConfigurator.prototype.selectTests): Added. Used by CustomConfigurationTestGroupForm's
setConfigurations.
(CustomAnalysisTaskConfigurator.prototype.selectPlatform): Ditto.
(CustomAnalysisTaskConfigurator.prototype.setCommitSets): Ditto.
(CustomAnalysisTaskConfigurator.prototype._setUploadedFilesIfEmpty): Added.
(CustomAnalysisTaskConfigurator.prototype._revisionMapFromCommitSet): Added.
(CustomAnalysisTaskConfigurator.prototype.render): Update the currently selected platforms and tests now that
they can be set externally via selectTests and selectPlatform.
(CustomAnalysisTaskConfigurator.prototype._renderTriggerableTests): Return the result of _renderRadioButtonList
so that the caller can update the currently selected tests without having to reconstruct the list.
(CustomAnalysisTaskConfigurator.prototype._renderTriggerablePlatforms): Ditto.
(CustomAnalysisTaskConfigurator.prototype._renderRadioButtonList): Renamed from _buildCheckboxList. Now returns
a function which updates the currently selected items. We still pretend that multiple items can be selected to
make it future-proof.

  • public/v3/components/custom-configuration-test-group-form.js: Added.

(CustomConfigurationTestGroupForm): Added. Inherits from TestGroupForm. Extracted from CreateAnalysisTaskPage.
(CustomConfigurationTestGroupForm.prototype.setHasTask): Added.
(CustomConfigurationTestGroupForm.prototype.hasCommitSets): Added.
(CustomConfigurationTestGroupForm.prototype.setConfigurations): Added. Used by AnalysisTaskConfiguratorPane to
set the default configuration to what the latest test group used.
(CustomConfigurationTestGroupForm.prototype.startTesting): Added. Dispatches "startTesting" action with
platform, test, taskName in addition to what CustomizedTestGroupForm emits.
(CustomConfigurationTestGroupForm.prototype.didConstructShadowTree): Added.
(CustomConfigurationTestGroupForm.prototype.render): Added.
(CustomConfigurationTestGroupForm.prototype._updateTestGroupName): Added.
(CustomConfigurationTestGroupForm.cssTemplate): Added.
(CustomConfigurationTestGroupForm.htmlTemplate): Added.

  • public/v3/components/test-group-form.js:

(TestGroupForm.cssTemplate): Make the form display: block.

  • public/v3/index.html:
  • public/v3/models/test-group.js:

(TestGroup.prototype.test): Added.
(TestGroup.prototype.platform): Added.
(TestGroup.createWithCustomConfiguration): Added. Creates a custom test group with an existing analysis task.

  • public/v3/models/uploaded-file.js:

(UploadedFile): Fixed a bug that _deletedAt was set to a Date object even when object.deletedAt is null.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskConfiguratorPane): Added.
(AnalysisTaskConfiguratorPane.prototype.didConstructShadowTree): Added. Dispatch createCustomTestGroup action
in turn when receiving startTesting from CustomConfigurationTestGroupForm.
(AnalysisTaskConfiguratorPane.prototype.setTestGroups): Added.
(AnalysisTaskConfiguratorPane.prototype.render): Added.
(AnalysisTaskConfiguratorPane.htmlTemplate): Added. We override this instead of formContent to display the
"Start" button at the end instead of at the beginnning.
(AnalysisTaskConfiguratorPane.cssTemplate): Added.
(AnalysisTaskPage.prototype.didConstructShadowTree): Listen to createCustomTestGroup.
(AnalysisTaskPage.prototype.render): Hide AnalysisTaskConfiguratorPane when the analysis task is not custom.
(AnalysisTaskPage.prototype._showTestGroup): Let AnalysisTaskConfiguratorPane know of the current test group
so that it can update the default configuration if the user hasn't modified yet.
(AnalysisTaskPage.prototype._createCustomTestGroup): Added.

  • public/v3/pages/create-analysis-task-page.js:

(CreateAnalysisTaskPage.prototype.didConstructShadowTree):
(CreateAnalysisTaskPage.prototype._createAnalysisTaskWithGroup):
(CreateAnalysisTaskPage.prototype.render):
(CreateAnalysisTaskPage.prototype._renderMessage):
(CreateAnalysisTaskPage.htmlTemplate):
(CreateAnalysisTaskPage.cssTemplate):

  • server-tests/privileged-api-create-test-group-tests.js: Added a test case for creating a custom test group for

an existing analysis task.

  • server-tests/resources/mock-data.js:

(MockData.otherPlatformId): Added.
(MockData.addMockData): Added a test configuration for otherPlatformId.

1:56 PM Changeset in webkit [215635] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Bubbles on dashboard doesn't turn red for test262 failures
https://bugs.webkit.org/show_bug.cgi?id=171129

Reviewed by Alexey Proskuryakov.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js: Added test262-test.
1:31 PM Changeset in webkit [215634] by commit-queue@webkit.org
  • 15 edits
    6 deletes in trunk

Unreviewed, rolling out r215620 and r215623.
https://bugs.webkit.org/show_bug.cgi?id=171139

broke arm64 build (Requested by keith_miller on #webkit).

Reverted changesets:

"Add signaling API"
https://bugs.webkit.org/show_bug.cgi?id=170976
http://trac.webkit.org/changeset/215620

"Unreviewed, fix Cloop build."
http://trac.webkit.org/changeset/215623

1:20 PM Changeset in webkit [215633] by rniwa@webkit.org
  • 15 edits
    3 adds
    1 delete in trunk/Websites/perf.webkit.org

Make it possible to view results for sub tests and metrics in A/B testing
https://bugs.webkit.org/show_bug.cgi?id=170975

Reviewed by Chris Dumez.

Replaced TestGroupResultsTable, which was a single table that presented the test results with a set of revisions
each build request used, with TestGroupResultsViewer and TestGroupRevisionTable. TestGroupResultsViewer provides
an UI to look the results of sub-tests and sub-metrics and TestGroupRevisionTable provides an UI to display
the set of revisions each build request used. TestGroupRevisionTable can also show the list of custom roots now
that we've added UI to schedule an analysis task with a custom test group.

This patch extends BarGraphGroup to show multiple bars per SingleBarGraph using a canvas with bars indicating
their mean and confidence interval.

  • browser-tests/index.html:

(ChartTest.importChartScripts): Include lazily-evaluated-function.js now that Test model object uses
LazilyEvaluatedFunction.

  • public/v3/components/analysis-results-viewer.js:

(AnalysisResultsViewer.TestGroupStackingBlock.prototype._valuesForCommitSet):
(AnalysisResultsViewer.TestGroupStackingBlock.prototype._computeTestGroupStatus):

  • public/v3/components/bar-graph-group.js:

(BarGraphGroup): No longer takes formatter. Added _computeRangeLazily and _showLabels as instance variables.
(BarGraphGroup.prototype.addBar): Now takes a list of values, their labels, mean, confidence interval, and
the colors of bar graphs shown for each value and the mean indicator.
(BarGraphGroup.prototype.showLabels): Added.
(BarGraphGroup.prototype.setShowLabels): Added.
(BarGraphGroup.prototype.range): Added.
(BarGraphGroup.prototype._computeRange): Renamed from updateGroupRendering. Now returns the range instead off
setting it to each bar, and each SingleBarGraph's render function uses the value via BarGraphGroup's range.
(BarGraph): Renamed from SingleBarGraph. Added various arguments introduced in addBar, and now stores various
lazily evaluated functions used for rendering.
(BarGraph.prototype.render): Rewritten to use canvas to draw bar graphs and show a label when group's
showLabels() returns true.
(BarGraph.prototype._resizeCanvas): Added.
(BarGraph.prototype._renderCanvas): Added.
(BarGraph.prototype._renderLabels): Added. We align the top of each label to the middle of each bar and shift it
back up by half the height of the label (0.4rem) using margin-top in css.
(BarGraph.htmlTemplate): Uses a canvas now.
(BarGraph.cssTemplate):

  • public/v3/components/results-table.js:

(ResultsTable.prototype.renderTable): Updated per code changes to BarGraphGroup.
(ResultsTableRow.prototype.resultContent): Ditto.

  • public/v3/components/test-group-results-table.js: Removed.
  • public/v3/components/test-group-results-viewer.js: Added.

(TestGroupResultsViewer): Added. Shows a list of test results with bar graphs with mean and confidence interval
indicators. The results of sub tests and metrics can be expanded via "(Breakdown)" link shown below each test.
(TestGroupResultsViewer.prototype.setTestGroup): Added.
(TestGroupResultsViewer.prototype.setAnalysisResults): Added.
(TestGroupResultsViewer.prototype.render): Added.
(TestGroupResultsViewer.prototype._renderResultsTable): Compute the depth of the test tree we show, and construct
the header rows. Each sub test is "indented" by a new column.
(TestGroupResultsViewer.prototype._buildRowForTest): Added. Build rows for metrics of the given test. Expand the
list of its child tests if it's in expandedTests. Otherwise add a link to "Breakdown" if it has any child tests.
(TestGroupResultsViewer.prototype._buildRowForMetric): Added. Builds rows of table cells to show the results for
the given metric for each configuration.
(TestGroupResultsViewer.prototype._buildRowForMetric.createConfigurationRow): Added. A helper to build cells for
a given configuration represented by a requested commit set.
(TestGroupResultsViewer.prototype._buildValueMap): Added. Creates a mappting between a requested commit set, and
the list of values, mean, etc... associated with the results for the commit set.
(TestGroupResultsViewer.prototype._buildEmptyCells): Added. A helper to create empty cells to indent sub tests.
(TestGroupResultsViewer.prototype._expandCurrentMetrics): Added. Highlights the current metrics and renders the
label for each bar in the results.
(TestGroupResultsViewer.htmlTemplate): Added.
(TestGroupResultsViewer.cssTemplate): Added.

  • public/v3/components/test-group-revision-table.js: Added.

(TestGroupRevisionTable): Added. Renders the list of revisions requested for each test configuration as well as
ones used in actual testing, and additional repositories being reported (e.g. repositories for helper scripts).
(TestGroupRevisionTable.prototype.setTestGroup): Added.
(TestGroupRevisionTable.prototype.setAnalysisResults): Added.
(TestGroupRevisionTable.prototype.render): Added.
(TestGroupRevisionTable.prototype._renderTable): Added. The basic algorithm here is to first create a row entry
object for each build request, merge cells that use the same revision of the same repository, and then render
the entire table.
(TestGroupRevisionTable.prototype._buildCommitCell): Added.
(TestGroupRevisionTable.prototype._buildCustomRootsCell): Added.
(TestGroupRevisionTable.prototype._mergeCellsWithSameCommitsAcrossRows): Added. Compute rowspan for each cell
by traversing the rows that use the same revision per repository, and store it in rowCountByRepository while
adding the repository to each succeeding row's repositoriesToSkip.
(TestGroupRevisionTable.htmlTemplate): Added.
(TestGroupRevisionTable.cssTemplate): Added.

  • public/v3/index.html:
  • public/v3/models/analysis-results.js:

(AnalysisResults): Added _metricIds and _lazilyComputedHighestTests as instance variables.
(AnalysisResults.prototype.findResult): Renamed from find.
(AnalysisResults.prototype.highestTests): Added.
(AnalysisResults.prototype._computeHighestTests): Added. Finds the root tests for this analysis result.
(AnalysisResults.prototype.add): Update _metricIds.
(AnalysisResults.prototype.commitSetForRequest): Added. Returns the reported commit set for the build request.
This commit set contains the set of revisions reported to /api/report by A/B testers.
(AnalysisResultsView.prototype.resultForRequest): Renamed from resultForBuildId.

  • public/v3/models/metric.js:

(Metric.prototype.relativeName): Added. Computes the relative name given the test/metric path. This function is
used to determine the label for each test/metric in TestGroupResultsViewer.
(Metric.prototype.aggregatorLabel): Extracted from label.
(Metric.prototype.label):
(Metric.makeFormatter): Added the default value of false to alwaysShowSign.

  • public/v3/models/test-group.js:

(TestGroup.prototype.compareTestResults): Now takes a metric instead of retrieving it from the analysis task
since a custom analysis task may not have a metric associated with it.

  • public/v3/models/test.js:

(Test): Added _computePathLazily as an instance variable.
(Test.prototype.path): Lazily computes the path now that this function can be called on the same test for many
times in TestGroupResultsViewer while computing relative names of tests and metrics.
(Test.prototype._computePath): Extracted path.
(Test.prototype.fullName): Modernized the code.
(Test.prototype.relativeName): Added.

  • public/v3/models/uploaded-file.js:

(UploadedFile):
(UploadedFile.prototype.deletedAt): Added.
(UploadedFile.prototype.label): Added.
(UploadedFile.prototype.url): Added.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskTestGroupPane.prototype.setTestGroups):
(AnalysisTaskTestGroupPane.prototype.setAnalysisResults): Replaced setAnalysisResultsView. Now takes an
analysisResults instead of its view.
(AnalysisTaskTestGroupPane.prototype.render): No longer enqueues the results table and the retry form to render
since the results table no longer exists, and the retry form re-renders itself as needed.
(AnalysisTaskTestGroupPane.htmlTemplate): Now uses test-group-results-viewer and test-group-revision-table
instead of test-group-results-table, which has been removed.
(AnalysisTaskTestGroupPane.cssTemplate):
(AnalysisTaskPage.prototype._assignTestResultsIfPossible):

  • public/v3/pages/create-analysis-task-page.js:

(CreateAnalysisTaskPage.prototype._createAnalysisTaskWithGroup): Removed superflous console.log's.

  • tools/js/v3-models.js: Import LazilyEvaluatedFunction now that it's used in the Test model.
  • unit-tests/test-model-tests.js: Added.
1:07 PM Changeset in webkit [215632] by Brent Fulgham
  • 3 edits
    2 adds in trunk

Validate vImage arguments
https://bugs.webkit.org/show_bug.cgi?id=171109
Source/WebCore:

rdar://problem/30236606

Patch by Per Arne Vollan <pvollan@apple.com> on 2017-04-21
Reviewed by Brent Fulgham.

When writing data to a canvas context, clip the source rectangle to the data rectangle
to make sure we will not attempt to read data outside of the buffer.

Test: fast/canvas/canvas-crash.html

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::putImageData):

LayoutTests:

Patch by Per Arne Vollan <pvollan@apple.com> on 2017-04-21
Reviewed by Brent Fulgham.

  • fast/canvas/canvas-crash-expected.txt: Added.
  • fast/canvas/canvas-crash.html: Added.
1:06 PM Changeset in webkit [215631] by webkit@devinrousso.com
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Add titles to Network grid items for easier reading when text overflows
https://bugs.webkit.org/show_bug.cgi?id=170792

Reviewed by Brian Burg.

  • UserInterface/Views/NetworkGridContentView.js:

(WebInspector.NetworkGridContentView):

  • UserInterface/Views/ResourceTimelineDataGridNode.js:

(WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
(WebInspector.ResourceTimelineDataGridNode.prototype._cachedCellContent):
Do not add a title if the text is an em-dash, as that title will not convey any information.

1:05 PM Changeset in webkit [215630] by commit-queue@webkit.org
  • 34 edits in trunk/Source/WebInspectorUI

Web Inspector: Don't show the Search tab if it's open and matches the representedObject
https://bugs.webkit.org/show_bug.cgi?id=168709

Patch by Devin Rousso <Devin Rousso> on 2017-04-21
Reviewed by Brian Burg.

  • UserInterface/Base/Main.js:

(WebInspector.handlePossibleLinkClick):
(WebInspector.openURL):
(WebInspector.showSourceCode):
(WebInspector.showOriginalUnformattedSourceCodeLocation):
(WebInspector.showOriginalOrFormattedSourceCodeLocation):
(WebInspector.showOriginalOrFormattedSourceCodeTextRange):
(WebInspector._frameWasAdded):
(WebInspector.createSourceCodeLocationLink):
(WebInspector.linkifyLocation):
(WebInspector.linkifyElement):
Add options parameter to provide greater customization. Also fix some style issues.

  • UserInterface/Views/NetworkGridContentView.js:

(WebInspector.NetworkGridContentView.prototype.hasRepresentedObject): Deleted.

  • UserInterface/Views/NetworkSidebarPanel.js:

(WebInspector.NetworkSidebarPanel.prototype.hasRepresentedObject): Deleted.

  • UserInterface/Views/NetworkTabContentView.js:

(WebInspector.NetworkTabContentView.prototype.canShowRepresentedObject):

  • UserInterface/Views/SearchTabContentView.js:

(WebInspector.SearchTabContentView.prototype.canShowRepresentedObject):
Ensure that the Search tab can only display resources that it has entries for in its view.
Also rework the way in which this is determined.

  • UserInterface/Controllers/BreakpointPopoverController.js:

(WebInspector.BreakpointPopoverController.prototype.appendContextMenuItems):

  • UserInterface/Protocol/InspectorFrontendAPI.js:

(InspectorFrontendAPI.showMainResourceForFrame):

  • UserInterface/Views/CSSStyleDeclarationSection.js:

(WebInspector.CSSStyleDeclarationSection.prototype.refresh):

  • UserInterface/Views/CSSStyleDeclarationTextEditor.js:

(WebInspector.CSSStyleDeclarationTextEditor.tokenTrackingControllerHighlightedRangeWasClicked.showRangeInSourceCode):
(WebInspector.CSSStyleDeclarationTextEditor.tokenTrackingControllerHighlightedRangeWasClicked):

  • UserInterface/Views/ComputedStyleDetailsPanel.js:

(WebInspector.ComputedStyleDetailsPanel.prototype.cssStyleDeclarationTextEditorShowProperty):

  • UserInterface/Views/ConsoleMessageView.js:

(WebInspector.ConsoleMessageView.prototype._linkifyLocation):

  • UserInterface/Views/DOMDetailsSidebarPanel.js:

(WebInspector.DOMDetailsSidebarPanel.prototype._mouseWasClicked):

  • UserInterface/Views/DOMTreeContentView.js:

(WebInspector.DOMTreeContentView.prototype._mouseWasClicked.followLink):

  • UserInterface/Views/DOMTreeElement.js:

(WebInspector.DOMTreeElement.prototype._showCustomElementDefinition):

  • UserInterface/Views/DebuggerDashboardView.js:

(WebInspector.DebuggerDashboardView.prototype._rebuildLocation):

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WebInspector.DebuggerSidebarPanel.prototype._treeSelectionDidChange):
(WebInspector.DebuggerSidebarPanel.prototype._updatePauseReasonGotoArrow):

  • UserInterface/Views/ErrorObjectView.js:

(WebInspector.ErrorObjectView.makeSourceLinkWithPrefix):

  • UserInterface/Views/EventListenerSectionGroup.js:

(WebInspector.EventListenerSectionGroup.prototype._functionTextOrLink):

  • UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:

(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._populatePreview):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.appendPathRow):

  • UserInterface/Views/ObjectTreeBaseTreeElement.js:

(WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
(WebInspector.ObjectTreeBaseTreeElement):

  • UserInterface/Views/ProbeSetDetailsSection.js:

(WebInspector.ProbeSetDetailsSection.prototype._updateLinkElement):

  • UserInterface/Views/ProfileDataGridNode.js:

(WebInspector.ProfileDataGridNode.prototype._displayContent):

  • UserInterface/Views/ResourceDetailsSidebarPanel.js:

(WebInspector.ResourceDetailsSidebarPanel.prototype._refreshRelatedResourcesSection):
(WebInspector.ResourceDetailsSidebarPanel.prototype._goToRequestDataClicked):

  • UserInterface/Views/ResourceSidebarPanel.js:

(WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):

  • UserInterface/Views/ResourceTimelineDataGridNode.js:

(WebInspector.ResourceTimelineDataGridNode.prototype._dataGridNodeGoToArrowClicked):

  • UserInterface/Views/RulesStyleDetailsPanel.js:

(WebInspector.RulesStyleDetailsPanel.prototype.refresh.insertMediaOrInheritanceLabel):

  • UserInterface/Views/SearchSidebarPanel.js:

(WebInspector.SearchSidebarPanel.prototype._treeElementDoubleClick):

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor.prototype.tokenTrackingControllerHighlightedRangeWasClicked):

  • UserInterface/Views/SourceCodeTimelineTimelineDataGridNode.js:

(WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype._createNameCellContent):

  • UserInterface/Views/TimelineDataGrid.js:

(WebInspector.TimelineDataGrid.prototype._popoverCallStackTreeSelectionDidChange):

  • UserInterface/Views/TimelineDataGridNode.js:

(WebInspector.TimelineDataGridNode.prototype.createCellContent):

  • UserInterface/Views/VisualStyleSelectorTreeItem.js:

(WebInspector.VisualStyleSelectorTreeItem.prototype.populateContextMenu):
Ensure that the Search tab is never shown from links generated by these functions.
Also do the same for the Network tab in some cases.

  • UserInterface/Views/NetworkTimelineView.js:

(WebInspector.NetworkTimelineView.prototype.canShowContentViewForTreeElement): Deleted.
(WebInspector.NetworkTimelineView.prototype.showContentViewForTreeElement): Deleted.
Drive-by cleanup: remove dead code.

1:02 PM Changeset in webkit [215629] by ddkilzer@apple.com
  • 4 edits in trunk/Source

Switch from -std=gnu++11 to -std=gnu++14 for consistency in DerivedSources.make
<https://webkit.org/b/171122>

Reviewed by Brent Fulgham.

  • DerivedSources.make: Switch to -std=gnu++14 for preprocessing

headers to check for build settings.

1:01 PM Changeset in webkit [215628] by jer.noble@apple.com
  • 6 edits in trunk/Source/WebKit2

[WK2][MediaCapture] Pass muted and enabled state across process boundary when capturing in UIProcess
https://bugs.webkit.org/show_bug.cgi?id=170846

Reviewed by Jon Lee.

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::setMuted):
(WebKit::UserMediaCaptureManagerProxy::setEnabled):

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::Source::setMuted):
(WebKit::UserMediaCaptureManager::Source::setEnabled):
(WebKit::UserMediaCaptureManager::setMuted):
(WebKit::UserMediaCaptureManager::setEnabled):

  • WebProcess/cocoa/UserMediaCaptureManager.h:
1:01 PM Changeset in webkit [215627] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebKit2

[WK2][MediaCapture] Remove now-unused WKWebViewConfiguration property for shouldCaptureAudioInUIProcess
https://bugs.webkit.org/show_bug.cgi?id=170847

Reviewed by Jon Lee.

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _shouldCaptureAudioInUIProcess]): Deleted.
(-[WKWebViewConfiguration _setShouldCaptureAudioInUIProcess:]): Deleted.

12:59 PM Changeset in webkit [215626] by jer.noble@apple.com
  • 5 edits in trunk/Source/WebCore

[MediaCapture][iOS] AVAudioSession must be active and the correct category before IO AudioUnits start producing data.
https://bugs.webkit.org/show_bug.cgi?id=171095

Reviewed by Youenn Fablet.

If an input audio unit is asked to start before the AVAudioSession is in a recording category and active,
CoreAudio will return an error stating that no input device is available.

The PlatformMediaSessionManager will automatically set the category of and activate the AVAudioSession when one
of its associated MediaStreams has a capturing RealtimeMediaSource and is currently producing data. To solve
the chicken-or-egg problem of activating the AVAudioSession before the source produces data, move the state bit
of "producing data" directly into MediaStreams, and notify the PlatformMediaSessionManager that capturing is
occurring after flipping that bit, but before asking the constituent tracks to begin producing data.

In places (i.e. UserMediaRequest) where we previously told a stream's tracks to begin producing data, instead
allow the stream to handle that by telling it to produce data directly.

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::startProducingData):
(WebCore::MediaStream::stopProducingData):
(WebCore::MediaStream::mediaState):
(WebCore::MediaStream::mediaType):
(WebCore::MediaStream::characteristics):
(WebCore::MediaStream::canProduceAudio):

  • Modules/mediastream/MediaStream.h:
  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::allow):

  • platform/mediastream/mac/CoreAudioCaptureSource.h:
12:56 PM Changeset in webkit [215625] by jer.noble@apple.com
  • 5 edits in trunk/Source/WebCore

Add a method to retrieve the current I/O buffer size from AudioSession
https://bugs.webkit.org/show_bug.cgi?id=171126

Reviewed by Eric Carlson.

There is an existing method to get and set the preferred I/O buffer size; add a matching method to return
the acutal I/O buffer size.

  • platform/audio/AudioSession.cpp:

(WebCore::AudioSession::bufferSize):

  • platform/audio/AudioSession.h:
  • platform/audio/ios/AudioSessionIOS.mm:

(WebCore::AudioSession::bufferSize):

  • platform/audio/mac/AudioSessionMac.cpp:

(WebCore::AudioSession::bufferSize):

12:22 PM Changeset in webkit [215624] by jer.noble@apple.com
  • 5 edits in trunk/Source/WebCore

Make AudioSampleBufferList::reset() less expensive.
https://bugs.webkit.org/show_bug.cgi?id=171124

Reviewed by Eric Carlson.

Previously, AudioSampleBufferList would reallocate its constituent WebAudioBufferList every time reset() was
called. Instead, add a reset() method to WebAudioBufferList which re-initializes its AudioBufferList (which is a
simple memcpy of a 24-byte struct), reusing the existing memory buffers.

While making these changes, we'll also take the opportunity to clean up the AudioSampleBufferList class by
making some of its members into UniqueRefs instead of unique_ptrs, thus removing the possibility of null-
dereferences.

  • platform/audio/WebAudioBufferList.cpp:

(WebCore::WebAudioBufferList::WebAudioBufferList):
(WebCore::WebAudioBufferList::reset):

  • platform/audio/WebAudioBufferList.h:
  • platform/audio/mac/AudioSampleBufferList.cpp:

(WebCore::AudioSampleBufferList::AudioSampleBufferList):
(WebCore::AudioSampleBufferList::applyGain):
(WebCore::AudioSampleBufferList::mixFrom):
(WebCore::AudioSampleBufferList::reset):
(WebCore::AudioSampleBufferList::zero):
(WebCore::AudioSampleBufferList::~AudioSampleBufferList): Deleted.

  • platform/audio/mac/AudioSampleBufferList.h:

(WebCore::AudioSampleBufferList::bufferList):

12:04 PM Changeset in webkit [215623] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix Cloop build.

  • jit/ExecutableAllocator.h:

(JSC::isJITPC):

11:50 AM Changeset in webkit [215622] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark webrtc/datachannel/bufferedAmountLowThreshold.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=170701

Unreviewed test gardening.

11:40 AM Changeset in webkit [215621] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Stop using deprecated APIs, part 4
https://bugs.webkit.org/show_bug.cgi?id=171125
rdar://problem/31589635

Reviewed by Tim Horton.

It doesn't really matter what we pass to these completion functions, since the sheet has already been dismissed at this point
so just remove the status parameter.

  • UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectPaymentMethod:handler:]):
(-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingMethod:handler:]):
(-[WKPaymentAuthorizationViewControllerDelegate paymentAuthorizationViewController:didSelectShippingContact:handler:]):

11:35 AM Changeset in webkit [215620] by keith_miller@apple.com
  • 15 edits
    6 adds in trunk

Add signaling API
https://bugs.webkit.org/show_bug.cgi?id=170976

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Update various uses of sigaction to use the new signaling API.
Also switch VMTraps to use the thread message system instead of
rolling it's own.

  • jit/ExecutableAllocator.h:

(JSC::isJITPC):

  • runtime/VMTraps.cpp:

(JSC::installSignalHandler):
(JSC::VMTraps::VMTraps):
(JSC::VMTraps::SignalSender::send):
(JSC::handleSigusr1): Deleted.
(JSC::handleSigtrap): Deleted.
(JSC::installSignalHandlers): Deleted.

  • runtime/VMTraps.h:
  • tools/SigillCrashAnalyzer.cpp:

(JSC::installCrashHandler):
(JSC::handleCrash): Deleted.

  • wasm/WasmFaultSignalHandler.cpp:

(JSC::Wasm::trapHandler):
(JSC::Wasm::enableFastMemory):

Source/WTF:

This patch adds a bunch of new functionality to WTF. First, it add
a new data structure of a lockless bag. The LocklessBag class can
be used as either a multi-writer multi-reader lockless bag or a
multi-writer single consumer lockless bag.

Next, this patch adds an abstraction around sigaction in WTF.
Basically, you can add a handler, which can be an arbitrary
lambda. Although it should still be safe for the signal you are
handling. the signal handler manager will then do all the
appropriate handling of chaining:

In the SIGUSR case we always forward the signal to any other
non-default handler installed before us. We need to do this,
otherwise, since it's not possible to tell if a SIGUSR was
intended exlusively for our handlers. Signal handlers don't record
how many times they were sent only that there is at least one
unhandled signal.

In the faulting cases we require that every handle be able to
recognise a fault they installed, vs crashes. If none of our
handlers claim to have handled the fault we will forward the
fault. If a handler was installed before the first fault handler
we simply call that handler and rely on them to take the
appropriate action. If no handler was installed before our first
handler we restore the default handler and allow the fault to
happen again.

Finally, this patch adds a signal based messaging system. This
system allows the user to run an arbitrary lambda from the SIGUSR2
signal handler of any target WTF::Thread. This is already in use
for the VMTraps API which allows us to kill rogue VMs by sending
the VM's running WTF::Thread a SIGUSR and requesting it jetison
all optimized code and throw an uncatchable exception from all
function entries/loop backedges. In the future, we will also use
this API for Wasm to reset the instruction caches in currently
executing Wasm threads.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/Atomics.h:

(WTF::Atomic::Atomic):

  • wtf/LocklessBag.h: Added.

(WTF::LocklessBag::LocklessBag):
(WTF::LocklessBag::add):
(WTF::LocklessBag::iterate):
(WTF::LocklessBag::consumeAll):

  • wtf/ThreadMessage.cpp: Added.

(WTF::ThreadMessageData::ThreadMessageData):
(WTF::initializeThreadMessages):
(WTF::sendMessageScoped):

  • wtf/ThreadMessage.h: Added.

(WTF::sendMessage):

  • wtf/Threading.cpp:

(WTF::initializeThreading):

  • wtf/Threading.h:

(WTF::Thread::threadMessages):

  • wtf/ThreadingPthreads.cpp:

(WTF::Thread::currentMayBeNull):
(WTF::Thread::current):
(WTF::Thread::signal):

  • wtf/threads/Signals.cpp: Added.

(WTF::jscSignalHandler):
(WTF::installSignalHandler):

  • wtf/threads/Signals.h: Added.

(WTF::toSystemSignal):
(WTF::fromSystemSignal):

Tools:

Add tests for ThreadMessages.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/ThreadMessages.cpp: Added.

(runThreadMessageTest):
(TEST):

11:32 AM Changeset in webkit [215619] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebKit2

-[WKUIDelegatePrivate _webView:requestUserMediaAuthorizationForMicrophone:camera:url:mainFrameURL:decisionHandler:]
decision handler should only have one parameter.
https://bugs.webkit.org/show_bug.cgi?id=171081

Patch by Andrew Gold <agold@apple.com> on 2017-04-21
Reviewed by Tim Horton.

Because user media authorization is all or nothing, we should not have separate booleans
to indicate authorization. Additionally, rather than passing two separate booleans to the
UIDelegate, we now pass an NS_OPTIONS parameter.

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/API/Cocoa/WKWebViewPrivate.h: Added _WKCaptureDevice NS_OPTIONS.
  • UIProcess/Cocoa/UIDelegate.mm:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate): Uses new WKUIDelegatePrivate method.
(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): Ditto.

11:28 AM Changeset in webkit [215618] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

X86-64 Assembler doesn't handle xchg with byte register src
https://bugs.webkit.org/show_bug.cgi?id=171118

Reviewed by Saam Barati.

  • assembler/X86Assembler.h:

(JSC::X86Assembler::xchgb_rm): Use oneByteOp8() since these are 8 bit opcodes.

11:09 AM Changeset in webkit [215617] by jer.noble@apple.com
  • 4 edits in trunk/Source/WebCore

Fix some spurious ASSERTs when working with capturing media elements
https://bugs.webkit.org/show_bug.cgi?id=171096

Reviewed by Youenn Fablet.

Two related ASSERTS:

1) When we added a new PlatformMediaSession MediaType (MediaStreamCapturingAudio), we did not update all the
places that validated the enum. This would lead to spurious ASSERTs when an element capturing audio would
fail various checks to enusre it's type's validity.

2) Audio elements will ASSERT when they change page visibility, as they do not have a renderer which implements
visibleInViewportStateChanged(). So opt out of visibility-state checking for non-video media elements.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::wantsToObserveViewportVisibilityForAutoplay):

  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::resetRestrictions):
(WebCore::PlatformMediaSessionManager::addRestriction):
(WebCore::PlatformMediaSessionManager::removeRestriction):
(WebCore::PlatformMediaSessionManager::restrictions):

  • platform/audio/PlatformMediaSessionManager.h:
10:58 AM Changeset in webkit [215616] by commit-queue@webkit.org
  • 11 edits
    1 add in trunk

[INTL] Implement Intl.DateTimeFormat.prototype.formatToParts
https://bugs.webkit.org/show_bug.cgi?id=169458

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

Source/JavaScriptCore:

Use udat_formatForFields to iterate through the parts of a formatted date string.
Make formatToParts and related functions dependent on ICU version >= 55.

  • icu/unicode/udat.h: Update to 55.1.
  • icu/unicode/ufieldpositer.h: Added from 55.1.
  • icu/unicode/uvernum.h: Update to 55.1
  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::partTypeString): Convert UDateFormatField to string.
(JSC::IntlDateTimeFormat::formatToParts): Return parts of formatted date string.

  • runtime/IntlDateTimeFormat.h:
  • runtime/IntlDateTimeFormatPrototype.cpp:

(JSC::IntlDateTimeFormatPrototypeFuncFormatToParts): Add prototype function formatToParts.

LayoutTests:

Add tests for formatToParts

  • js/intl-datetimeformat-expected.txt:
  • js/script-tests/intl-datetimeformat.js:
10:26 AM Changeset in webkit [215615] by Conrad Shultz
  • 2 edits in trunk/Tools

commit-log-editor should respect the git editor if one is set
https://bugs.webkit.org/show_bug.cgi?id=171085
<rdar://problem/31745506>

Reviewed by Daniel Bates.

  • Scripts/commit-log-editor:

If Git is available, consider GIT_LOG_EDITOR and any global Git editor preference when
deciding which editor to present. We examine the global editor preference since that may be
set automatically by installers or third-party tools.

10:26 AM Changeset in webkit [215614] by Konstantin Tokarev
  • 6 edits in trunk

[cmake] WTF target should not have wtf and subdirectries in public interface
https://bugs.webkit.org/show_bug.cgi?id=171115

Reviewed by Michael Catanzaro.

In r209665 WEBCORE_FRAMEWORK macro started to export INCLUDE_DIRECTORIES of
targets as their public interface, so that linked targets can use them
implicitly without copying directory lists around. This matches existing
practice for all targets except WTF, headers from which are always included
with full path starting from "<wtf/...".

Since r209665 it became possible to include headers from wtf or its
subdirectories in CMake builds without using "<wtf/..." path. It should
not be allowed.

.:

  • Source/cmake/WebKitMacros.cmake: Support xxx_PRIVATE_HEADERS

CMake variables.

Source/WebCore:

  • platform/graphics/texmap/coordinated/TiledBackingStore.cpp: Fix

incorrect include of WTF header.

Source/WTF:

  • wtf/CMakeLists.txt: WTF/wtf and its sudirectories should not be in

public include paths of WTF target.

9:58 AM Changeset in webkit [215613] by yoon@igalia.com
  • 6 edits in trunk/Source/WebCore

Do not paint the border of the box if the dirty region does not intersect with border area
https://bugs.webkit.org/show_bug.cgi?id=170988

Reviewed by Simon Fraser.

No new tests, since there is no change in behavior.

  • platform/graphics/GeometryUtilities.cpp:

(WebCore::ellipseContainsPoint):
Checks if a point is within an ellipse.

  • platform/graphics/GeometryUtilities.h:

Replace header-guards with #pragma once.

  • platform/graphics/RoundedRect.cpp:

(WebCore::RoundedRect::contains):
Implemented to know the dirty rectangle intersects with rounded rectangle or not.

  • platform/graphics/RoundedRect.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintBorder):
When typing in decorated text box, the dirty rect generated only for the
inside of the text box, not for the decorations. So we can avoid the
calculations to draw borders if the inner border totally covers the
target surface. It will optimize the rendering process since we don't
have to render border decorations whenever we type somethings in side of
the text input element.

9:40 AM Changeset in webkit [215612] by andersca@apple.com
  • 2 edits in trunk/Source/WebCore

Remove another use of toPaymentAuthorizationStatus
https://bugs.webkit.org/show_bug.cgi?id=171114

Reviewed by Dan Bernstein.

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::ApplePaySession::completeShippingContactSelection):

8:13 AM Changeset in webkit [215611] by Konstantin Tokarev
  • 2 edits in trunk/Source/WebKit2

Unreviewed, added missing file to PlatformMac.cmake

  • PlatformMac.cmake:
8:00 AM Changeset in webkit [215610] by Konstantin Tokarev
  • 2 edits in trunk/Source/WebKit2

Unreviewed follow-up for r215609

  • UIProcess/API/Cocoa/WKWebView.mm: Move internal header include too.
7:44 AM Changeset in webkit [215609] by Konstantin Tokarev
  • 2 edits in trunk/Source/WebKit2

Include iOS-specific headers inside preprocessor guard
https://bugs.webkit.org/show_bug.cgi?id=171104

Reviewed by Michael Catanzaro.

This patch should fix Mac cmake build.

  • UIProcess/API/Cocoa/WKWebView.mm:
7:21 AM Changeset in webkit [215608] by achristensen@apple.com
  • 51 edits in trunk

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

Reviewed by Andreas Kling.

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

12:34 AM Changeset in webkit [215607] by timothy_horton@apple.com
  • 14 edits
    12 adds in trunk

Expose obscured insets to web content (as "safe area insets")
https://bugs.webkit.org/show_bug.cgi?id=171013
<rdar://problem/31564652>

Reviewed by Wenson Hsieh and Dave Hyatt.

Tests: fast/css/variables/constants/invalid-constant-name-fallback.html

fast/css/variables/constants/ios/safe-area-inset-set.html
fast/css/variables/constants/safe-area-inset-cannot-override.html
fast/css/variables/constants/safe-area-inset-zero.html

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSValueKeywords.in:
  • css/CSSVariableData.cpp:

(WebCore::CSSVariableData::checkVariablesForCyclesWithRange):
(WebCore::CSSVariableData::resolveTokenRange):

  • css/parser/CSSVariableParser.cpp:

(WebCore::isValidConstantName):
(WebCore::classifyBlock):
(WebCore::isValidConstantReference):
Add a constant() function, which takes both custom properties and
arbitrary idents which are looked up in ConstantPropertyMap, allowing
fallback from the arbitrary, UA-defined idents to custom properties.

  • dom/ConstantPropertyMap.cpp: Added.

(WebCore::ConstantPropertyMap::ConstantPropertyMap):
(WebCore::ConstantPropertyMap::values):
(WebCore::ConstantPropertyMap::nameForProperty):
(WebCore::ConstantPropertyMap::setValueForProperty):
(WebCore::ConstantPropertyMap::buildValues):
(WebCore::variableDataForSafeAreaInset):
(WebCore::ConstantPropertyMap::didChangeObscuredInsets):

  • dom/ConstantPropertyMap.h: Added.

Keep a mapping of UA-defined "constants", which can be looked up
from CSS via the aforementioned function. For now, this mapping
includes only safe-area-inset-{top, right, bottom, left}, which
expose the obscured insets (now that they can be painted into via
the viewport parameter clip-to-safe-area-inset=no).

  • dom/Document.cpp:

(WebCore::Document::Document):
(WebCore::Document::didChangeObscuredInsets):

  • dom/Document.h:

(WebCore::Document::constantProperties):

  • page/Page.cpp:

(WebCore::Page::setObscuredInsets):

  • page/Page.h:

(WebCore::Page::setObscuredInsets): Deleted.
Make setObscuredInsets and related storage not iOS-specific, though
nothing from the other platforms yet calls this code.

  • style/StyleResolveForDocument.cpp:

(WebCore::Style::resolveForDocument):
Grab the constant properties from ConstantPropertyMap and plop them into
the CustomPropertyValueMap. Constant properties aren't allowed to start
with --, and variable properties must, so there is no opportunity here
for exposing things to var() (or allowing custom properties to override
UA-defined constant properties).

  • TestExpectations:
  • fast/css/variables/constants/invalid-constant-name-fallback-expected.html: Added.
  • fast/css/variables/constants/invalid-constant-name-fallback.html: Added.
  • fast/css/variables/constants/ios/safe-area-inset-set-expected.html: Added.
  • fast/css/variables/constants/ios/safe-area-inset-set.html: Added.
  • fast/css/variables/constants/safe-area-inset-cannot-override-expected.html: Added.
  • fast/css/variables/constants/safe-area-inset-cannot-override.html: Added.
  • fast/css/variables/constants/safe-area-inset-zero-expected.html: Added.
  • fast/css/variables/constants/safe-area-inset-zero.html: Added.
  • platform/ios-wk2/TestExpectations:
Note: See TracTimeline for information about the timeline view.