Timeline



Jun 18, 2017:

11:37 PM Changeset in webkit [218478] by Carlos Garcia Campos
  • 4 edits in trunk

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.17.4 release.

.:

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

Source/WebKit2:

  • gtk/NEWS: Add release notes for 2.17.4.
10:40 PM Changeset in webkit [218477] by bshafiei@apple.com
  • 8 edits in branches/safari-603-branch/Source/WebCore

Roll out r210226 via r217676. rdar://problem/32842498

10:39 PM Changeset in webkit [218476] by bshafiei@apple.com
  • 7 edits in branches/safari-603-branch

Roll out r211501 via r217677. rdar://problem/32842498

10:36 PM Changeset in webkit [218475] by bshafiei@apple.com
  • 39 edits
    1 delete in branches/safari-603-branch

Roll out r212173 via r217678. rdar://problem/32842498

10:32 PM Changeset in webkit [218474] by bshafiei@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebCore

Roll out r212174 via r217679. rdar://problem/32842498

10:26 PM Changeset in webkit [218473] by bshafiei@apple.com
  • 6 edits
    8 deletes in branches/safari-603-branch/LayoutTests

Roll out r216126 via r217788. rdar://problem/32842615

10:22 PM Changeset in webkit [218472] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

REGRESSION(r218253): Infinite animated gifs no longer loop
https://bugs.webkit.org/show_bug.cgi?id=173464

Reviewed by Carlos Alberto Lopez Perez.

After the first loop iteration we keep rendering the same frame all the time, so it looks like if the animation
stopped. This is because in r218253 we changed to use SharedBuffer instead of a Vector in ImageBackingStore, but
we are not correctly copying the data in the copy constructor. We are using SharedBuffer::copy() that doesn't
actually copy the data of the segments.

  • platform/graphics/ImageBackingStore.h:

(WebCore::ImageBackingStore::ImageBackingStore): Copy the data of the other SharedBuffer.

10:12 PM Changeset in webkit [218471] by Carlos Garcia Campos
  • 9 edits in trunk/Source/WebCore

[GStreamer] MainThreadNotifier ASSERTION FAILED: m_boundThread == currentThread() in _WebKitWebSrcPrivate::~_WebKitWebSrcPrivate
https://bugs.webkit.org/show_bug.cgi?id=152043

Reviewed by Xabier Rodriguez-Calvar.

Stop using a WeakPtr in MainThreadNotifier, because it's not thread safe, which causes a crash in debug builds when
the notifier is destroyed in a different thread. Make MainThreadNotifier thread safe refcounted instead, and add
an invalidate() method to mark it as invalid.

  • platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp:

(WebCore::InbandTextTrackPrivateGStreamer::handleSample):
(WebCore::InbandTextTrackPrivateGStreamer::streamChanged):

  • platform/graphics/gstreamer/MainThreadNotifier.h:

(WebCore::MainThreadNotifier::MainThreadNotifier): Deleted.
(WebCore::MainThreadNotifier::notify): Deleted.
(WebCore::MainThreadNotifier::cancelPendingNotifications): Deleted.
(WebCore::MainThreadNotifier::addPendingNotification): Deleted.
(WebCore::MainThreadNotifier::removePendingNotification): Deleted.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::videoChangedCallback):
(WebCore::MediaPlayerPrivateGStreamer::videoSinkCapsChangedCallback):
(WebCore::MediaPlayerPrivateGStreamer::audioChangedCallback):
(WebCore::MediaPlayerPrivateGStreamer::textChangedCallback):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::volumeChangedCallback):
(WebCore::MediaPlayerPrivateGStreamerBase::muteChangedCallback):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:

(WebCore::TrackPrivateBaseGStreamer::TrackPrivateBaseGStreamer):
(WebCore::TrackPrivateBaseGStreamer::~TrackPrivateBaseGStreamer):
(WebCore::TrackPrivateBaseGStreamer::disconnect):
(WebCore::TrackPrivateBaseGStreamer::activeChangedCallback):
(WebCore::TrackPrivateBaseGStreamer::tagsChanged):

  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h:
  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webkit_web_src_init):
(webKitWebSrcDispose):
(webKitWebSrcStop):
(webKitWebSrcStart):
(webKitWebSrcNeedData):
(webKitWebSrcEnoughData):
(webKitWebSrcSeek):

9:53 PM Changeset in webkit [218470] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Drop redundant IPC in WebPage::tryClose()
https://bugs.webkit.org/show_bug.cgi?id=173533

Reviewed by Sam Weinig.

Drop redundant IPC to stop the responsiveness timer in WebPage::tryClose(). The
destructor for the SendStopResponsivenessTimer already takes care of sending the
IPC.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::tryClose):

9:19 PM Changeset in webkit [218469] by bshafiei@apple.com
  • 5 edits in branches/safari-603-branch/Source

Versioning.

9:00 PM Changeset in webkit [218468] by rniwa@webkit.org
  • 3 edits
    2 adds in trunk

Meter element doesn't respect the writing direction
https://bugs.webkit.org/show_bug.cgi?id=173507

Reviewed by Sam Weinig.

Source/WebCore:

The bug was caused by NSLevelIndicatorCell no longer using the value of baseWritingDirection
to determine the direction of rendering in macOS Sierra and later. It instead relies on
the value of userInterfaceLayoutDirection.

Fixed the bug by setting both values. Once we dropped the support for macOS El Capitan
and earlier, we can remove the code to set baseWritingDirection.

Test: fast/dom/HTMLMeterElement/meter-rtl.html

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::levelIndicatorFor):

LayoutTests:

A regression ref test since existing tests were pixel tests and did not catch this regression.
Note that black border was added to workaround the anti-aliasing differences in macOS High Sierra.

  • fast/dom/HTMLMeterElement/meter-rtl-expected.html: Added.
  • fast/dom/HTMLMeterElement/meter-rtl.html: Added.
8:12 PM Changeset in webkit [218467] by Dewei Zhu
  • 2 edits in trunk/Source/WebCore

Remove 'EditCommand::isEditCommandComposition'.
https://bugs.webkit.org/show_bug.cgi?id=173525

Reviewed by Wenson Hsieh.

Should remove 'isEditCommandComposition' from 'EditCommand' for:

  1. 'EditCommandComposition' is no longer a subclass of EditCommand.
  2. 'isEditCommandComposition' is not used at all.
  • editing/EditCommand.h:

(WebCore::EditCommand::isCompositeEditCommand):
(WebCore::EditCommand::isEditCommandComposition): Deleted.

6:59 PM Changeset in webkit [218466] by Chris Dumez
  • 3 edits in trunk/Source/WebKit2

Drop unused UserMediaPermissionRequestManager::cancelPendingRequests()
https://bugs.webkit.org/show_bug.cgi?id=173529
<rdar://problem/32836986>

Reviewed by Sam Weinig.

Drop UserMediaPermissionRequestManager::cancelPendingRequests() as it is unused
and its implementation is wrong (modifies the hash maps it is iterating on).

  • WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:

(WebKit::UserMediaPermissionRequestManager::cancelPendingRequests): Deleted.

  • WebProcess/MediaStream/UserMediaPermissionRequestManager.h:
1:25 PM Changeset in webkit [218465] by Chris Dumez
  • 7 edits
    4 adds in trunk

Crash when re-entering MediaDevicesEnumerationRequest::cancel()
https://bugs.webkit.org/show_bug.cgi?id=173522
<rdar://problem/31185739>

Reviewed by Darin Adler.

Source/WebCore:

When a MediaDevicesRequest is started, it creates a MediaDevicesEnumerationRequest
object and passes a completion handler to that MediaDevicesEnumerationRequest
object. The completion handler holds a reference to the MediaDevicesRequest object
so that its stays alive until the MediaDevicesEnumerationRequest either completes
or is canceled. MediaDevicesRequest also holds a reference to the
MediaDevicesEnumerationRequest object via its m_enumerationRequest data member.

When the document is destroyed, both MediaDevicesRequest::contextDestroyed() and
MediaDevicesEnumerationRequest::contextDestroyed() gets called and the other is not
pre-determined. If MediaDevicesEnumerationRequest::contextDestroyed() gets called
first then it calls MediaDevicesEnumerationRequest::cancel(). Calling cancel() ends
up destroying the completion handler. Destroying the completion handler ends up
dereferencing and destroying the MediaDevicesRequest object. The MediaDevicesRequest
destructor would call MediaDevicesEnumerationRequest::cancel() again, causing us to
re-enter it and assign nullptr to the completion callback again. Re-entering
std::function's operator=(nullptr_t) is not safe because of the way it is implemented
as we end up trying to destroy the lambda twice and crashing. Using a WTF::Function
instead fixes this particular issue because re-entering WTF::Function's operator=(nullptr_t)
is safe.

However, this fix is not sufficient. Calling the MediaDevicesRequest destructor also
dereferencing and destroys the MediaDevicesEnumerationRequest object. As a result,
when MediaDevicesEnumerationRequest::contextDestroyed() returns from its call to cancel
|this| is already dead when we call ContextDestructionObserver::contextDestroyed().
To address this issue, we now protect |this| in MediaDevicesEnumerationRequest::contextDestroyed().

Test: fast/mediastream/destroy-document-while-enumerating-devices.html

  • Modules/mediastream/MediaDevicesEnumerationRequest.cpp:

(WebCore::MediaDevicesEnumerationRequest::contextDestroyed):
Protect |this| as the call to cancel() may destroy |this| before calling
ContextDestructionObserver::contextDestroyed() otherwise.

  • Modules/mediastream/MediaDevicesEnumerationRequest.h:

Use WTF::Function instead of std::function for the completion handler as
it is safer (in terms of re-entrency) and avoids unnecessary copying.

  • Modules/mediastream/MediaDevicesRequest.cpp:

(WebCore::MediaDevicesRequest::~MediaDevicesRequest):
Stop calling MediaDevicesEnumerationRequest::cancel(). When the destructor
is called, the MediaDevicesEnumerationRequest has either completed or been
canceled so there is no need to cancel again. I added an assertion to
make sure it is the case. This avoids re-entering
MediaDevicesEnumerationRequest::cancel() is some cases, which was risky.

(WebCore::MediaDevicesRequest::start):
Add comment for clarity and capture a Ref<> instead of a RefPtr<> now that
we can since we use WTF::Function.

Tools:

Add API test for re-entering Function's assignment operators.

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

(TestWebKitAPI::TestObject::TestObject):
(TestWebKitAPI::TestObject::~TestObject):
(TestWebKitAPI::TestObject::operator()):
(TestWebKitAPI::TEST):

LayoutTests:

Add layout test coverage. This test would flakily crash before the fix because it
relies on the order in which contextDestroyed() is called for MediaDevicesRequest
and MediaDevicesEnumerationRequest.

  • fast/mediastream/destroy-document-while-enumerating-devices-expected.txt: Added.
  • fast/mediastream/destroy-document-while-enumerating-devices.html: Added.
  • fast/mediastream/resources/enumerate-devices-frame.html: Added.
12:49 PM Changeset in webkit [218464] by Chris Dumez
  • 19 edits in trunk/Source

Use WTF::Function instead of std::function in WTF/
https://bugs.webkit.org/show_bug.cgi?id=173519

Reviewed by Sam Weinig.

Source/WebCore:

Replace a few uses of std::function with WTF::Function in WebCore/
as well. It was either this or including <functional> and I decided
it made more sense to port the code.

  • platform/graphics/FontSelectionAlgorithm.h:

(WebCore::FontSelectionAlgorithm::iterateActiveCapabilitiesWithReturn):

  • platform/mediastream/MediaConstraints.cpp:

(WebCore::StringConstraint::find):
(WebCore::MediaTrackConstraintSetMap::forEach):
(WebCore::MediaTrackConstraintSetMap::filter):
(WebCore::MediaConstraints::isConstraintSet):

  • platform/mediastream/MediaConstraints.h:

(WebCore::NumericConstraint::find):

  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::applyConstraint):

Source/WTF:

Use WTF::Function instead of std::function in WTF/ to avoid
copying.

  • wtf/Brigand.h:
  • wtf/Condition.h:
  • wtf/Expected.h:
  • wtf/FunctionDispatcher.h:
  • wtf/MainThread.h:
  • wtf/MemoryPressureHandler.h:

(WTF::MemoryPressureHandler::setMemoryKillCallback):
(WTF::MemoryPressureHandler::setMemoryPressureStatusChangedCallback):
(WTF::MemoryPressureHandler::setDidExceedInactiveLimitWhileActiveCallback):

  • wtf/Optional.h:
  • wtf/ParkingLot.h:
  • wtf/RefCounter.h:

(WTF::RefCounter<T>::RefCounter):

  • wtf/WorkQueue.h:
  • wtf/linux/MemoryPressureHandlerLinux.cpp:

(WTF::MemoryPressureHandler::EventFDPoller::EventFDPoller):

  • wtf/text/WTFString.cpp:

(WTF::String::split):

  • wtf/text/WTFString.h:
8:55 AM Changeset in webkit [218463] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

[MSE] Seeking or entering fullscreen can cause extreme CPU usage
https://bugs.webkit.org/show_bug.cgi?id=173505

Reviewed by Tim Horton.

When support for painting MSE to WebGL was added in r217185, the implementation of
SourceBufferPrivateAVFObjC::isReadyForMoreSamples() was modified to support asking
the decompression session if it was ready. That change, however, caused an extreme
performance regression in the normal playback path, where WebKit will effectively
append samples endlessly to the AVSampleBufferDisplayLayer, which admirably enqueued
each of them for decoding. Eventually, the cost of iterating over the CMBufferQueue
overwhelmed the cost of decoding, and caused the extreme lag seen when seeking.

Make sure to property query the AVSampleBufferDisplayLayer for isReadyForMoreMediaData
before enqueuing.

A previous version of this patch exposed some errors which caused failing tests:

In sourceBufferPrivateDidReceiveSample(), we were using local versions of
presentationTimestamp and decodeTimestamp as keys to the decodeQueue; those local versions
were floating point values (because MediaTime + float = float), but the sample itself uses
non-floating point MediaTimes. This causes samples to be left in the queue when they should
be removed.

In didBecomeReadyForMoreSamples(), we were getting spurious assertions when a
AVSampleBufferDisplayLayer or a AVSampleBufferAudioRenderer would fire a callback from
-requestMediaDataWhenReadyOnQueue:usingBlock: even after it had been told to
-stopRequestingMediaData. Apparently it's expected behavior and so an ASSERT_NOT_REACHED is
inappropriate here.

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::isReadyForMoreSamples):
(WebCore::SourceBufferPrivateAVFObjC::didBecomeReadyForMoreSamples):

Jun 17, 2017:

8:57 PM Changeset in webkit [218462] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Addressing post-review comment after r218456.
https://bugs.webkit.org/show_bug.cgi?id=173509

Reviewed by Darin Adler.

  • dom/Document.cpp:

(WebCore::Document::destroyRenderTree):

6:36 PM Changeset in webkit [218461] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

DOMQuad::getBounds() should return a Ref<>
https://bugs.webkit.org/show_bug.cgi?id=173517

Reviewed by Simon Fraser.

DOMQuad::getBounds() should return a Ref<> as it cannot return
null.

  • dom/DOMQuad.cpp:

(WebCore::DOMQuad::getBounds):

  • dom/DOMQuad.h:
5:10 PM Changeset in webkit [218460] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Unreviewed, follow-up build fix after r218457.

  • UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):

4:55 PM Changeset in webkit [218459] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Unreviewed, follow-up build fix after r218457.

  • UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):

3:34 PM Changeset in webkit [218458] by Simon Fraser
  • 12 edits
    6 adds in trunk

Implement DOMQuad
https://bugs.webkit.org/show_bug.cgi?id=163534

Reviewed by Sam Weinig.
LayoutTests/imported/w3c:

Implement DOMQuad per https://drafts.fxtf.org/geometry/#DOMQuad.

  • web-platform-tests/css/geometry-1/DOMQuad-001-expected.txt: Tests against an older version

of the spec, so some failures.

  • web-platform-tests/css/geometry-1/DOMQuad-002-expected.txt: All tests pass other than a NaN

propagation issue which needs spec clarification.

  • web-platform-tests/css/geometry-1/structured-serialization-expected.txt:

Source/WebCore:

Implement DOMQuad per https://drafts.fxtf.org/geometry/#DOMQuad, other than serialization
which requires some bindings changes.

web-platform-tests/css/geometry-1/DOMRect-001.html tests against an older version of the spec,
so has some failures. DOMQuad-002.html passes, other than a NaN propagation issue that requires
spec clarification.

  • CMakeLists.txt:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMQuadCustom.cpp: Added.

(WebCore::JSDOMQuad::getBounds):

  • bindings/scripts/CodeGenerator.pm:

(IsSerializableDOMType):
(IsSerializableAttribute):

  • dom/DOMPoint.h:
  • dom/DOMQuad.cpp: Added.

(WebCore::DOMQuad::DOMQuad):
(WebCore::DOMQuad::getBounds):

  • dom/DOMQuad.h: Added.

(WebCore::DOMQuad::create):
(WebCore::DOMQuad::fromRect):
(WebCore::DOMQuad::fromQuad):
(WebCore::DOMQuad::p1):
(WebCore::DOMQuad::p2):
(WebCore::DOMQuad::p3):
(WebCore::DOMQuad::p4):

  • dom/DOMQuad.idl: Added.
  • dom/DOMQuadInit.h: Added.
  • dom/DOMQuadInit.idl: Added.

LayoutTests:

Implement DOMQuad per https://drafts.fxtf.org/geometry/#DOMQuad.

  • js/dom/global-constructors-attributes-dedicated-worker-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
1:55 PM Changeset in webkit [218457] by Chris Dumez
  • 103 edits in trunk/Source

Use WTF::Function instead of std::function in WebKit2/
https://bugs.webkit.org/show_bug.cgi?id=173504

Reviewed by Darin Adler.

Use WTF::Function instead of std::function in WebKit2/ to avoid
unnecessary copying.

Source/WebCore:

  • Modules/applepay/PaymentCoordinator.cpp:

(WebCore::PaymentCoordinator::canMakePaymentsWithActiveCard):
(WebCore::PaymentCoordinator::openPaymentSetup):

  • Modules/applepay/PaymentCoordinator.h:
  • Modules/applepay/PaymentCoordinatorClient.h:
  • loader/EmptyClients.cpp:
  • loader/NetscapePlugInStreamLoader.cpp:

(WebCore::NetscapePlugInStreamLoader::willSendRequest):

  • loader/NetscapePlugInStreamLoader.h:
  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::willSendRequest):

  • loader/ResourceLoader.h:

Source/WebKit/mac:

  • Plugins/Hosted/HostedNetscapePluginStream.h:
  • Plugins/Hosted/HostedNetscapePluginStream.mm:

(WebKit::HostedNetscapePluginStream::willSendRequest):

  • Plugins/WebNetscapePluginStream.h:
  • Plugins/WebNetscapePluginStream.mm:

(WebNetscapePluginStream::willSendRequest):

  • WebCoreSupport/WebPaymentCoordinatorClient.h:
  • WebCoreSupport/WebPaymentCoordinatorClient.mm:

(WebPaymentCoordinatorClient::canMakePaymentsWithActiveCard):
(WebPaymentCoordinatorClient::openPaymentSetup):

Source/WebKit/win:

  • Plugins/PluginStream.cpp:

(WebCore::PluginStream::willSendRequest):

  • Plugins/PluginStream.h:

Source/WebKit2:

  • DatabaseProcess/DatabaseProcess.cpp:

(WebKit::DatabaseProcess::getSandboxExtensionsForBlobFiles):

  • DatabaseProcess/DatabaseProcess.h:
  • NetworkProcess/cache/NetworkCacheData.h:
  • NetworkProcess/cache/NetworkCacheFileSystem.h:
  • Platform/IPC/Connection.cpp:

(IPC::Connection::installIncomingSyncMessageCallback):

  • Platform/IPC/Connection.h:
  • Platform/IPC/glib/GSocketMonitor.h:
  • Platform/Logging.h:
  • Shared/API/APIObject.h:
  • Shared/AsyncRequest.cpp:

(WebKit::AsyncRequest::AsyncRequest):
(WebKit::AsyncRequest::setAbortHandler):

  • Shared/AsyncRequest.h:
  • Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:

(WebKit::CompositingRunLoop::CompositingRunLoop):

  • Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h:
  • Shared/WebContextMenuItemData.h:
  • UIProcess/API/APIDownloadClient.h:

(API::DownloadClient::willSendRequest):

  • UIProcess/API/APIIconLoadingClient.h:

(API::IconLoadingClient::getLoadDecisionForIcon):

  • UIProcess/API/APIUIClient.h:

(API::UIClient::createNewPageAsync):

  • UIProcess/API/C/WKPage.cpp:

(toGenericCallbackFunction):

  • UIProcess/API/Cocoa/WKWebView.mm:
  • UIProcess/API/mac/WKView.mm:

(-[WKView maybeInstallIconLoadingClient]):

  • UIProcess/AcceleratedDrawingAreaProxy.cpp:

(WebKit::AcceleratedDrawingAreaProxy::dispatchAfterEnsuringDrawing):

  • UIProcess/AcceleratedDrawingAreaProxy.h:
  • UIProcess/ApplePay/WebPaymentCoordinatorProxy.h:
  • UIProcess/ApplePay/cocoa/WebPaymentCoordinatorProxyCocoa.mm:

(WebKit::WebPaymentCoordinatorProxy::platformCanMakePaymentsWithActiveCard):
(WebKit::WebPaymentCoordinatorProxy::platformOpenPaymentSetup):

  • UIProcess/ApplePay/ios/WebPaymentCoordinatorProxyIOS.mm:

(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):

  • UIProcess/ApplePay/mac/WebPaymentCoordinatorProxyMac.mm:

(WebKit::WebPaymentCoordinatorProxy::platformShowPaymentUI):

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::performKeyboardInteractions):

  • UIProcess/Cocoa/IconLoadingDelegate.h:
  • UIProcess/Cocoa/IconLoadingDelegate.mm:

(WebKit::IconLoadingDelegate::IconLoadingClient::getLoadDecisionForIcon):

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::tryAppLink):

  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::UIClient::createNewPageCommon):
(WebKit::UIDelegate::UIClient::createNewPageAsync):

  • UIProcess/Cocoa/ViewGestureController.cpp:

(WebKit::ViewGestureController::SnapshotRemovalTracker::start):

  • UIProcess/Cocoa/ViewGestureController.h:
  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::prepareForMoveToWindow):

  • UIProcess/Databases/DatabaseProcessProxy.cpp:

(WebKit::DatabaseProcessProxy::fetchWebsiteData):
(WebKit::DatabaseProcessProxy::deleteWebsiteData):
(WebKit::DatabaseProcessProxy::deleteWebsiteDataForOrigins):

  • UIProcess/Databases/DatabaseProcessProxy.h:
  • UIProcess/DrawingAreaProxy.h:

(WebKit::DrawingAreaProxy::dispatchAfterEnsuringDrawing):

  • UIProcess/DrawingAreaProxyImpl.cpp:

(WebKit::DrawingAreaProxyImpl::DrawingMonitor::start):
(WebKit::DrawingAreaProxyImpl::dispatchAfterEnsuringDrawing):

  • UIProcess/DrawingAreaProxyImpl.h:
  • UIProcess/GenericCallback.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::fetchWebsiteData):
(WebKit::NetworkProcessProxy::deleteWebsiteData):
(WebKit::NetworkProcessProxy::deleteWebsiteDataForOrigins):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/PageClient.h:
  • UIProcess/Plugins/PlugInAutoStartProvider.cpp:

(WebKit::PlugInAutoStartProvider::setAutoStartOriginsTableWithItemsPassingTest):

  • UIProcess/Plugins/PlugInAutoStartProvider.h:
  • UIProcess/Plugins/PluginProcessManager.cpp:

(WebKit::PluginProcessManager::fetchWebsiteData):
(WebKit::PluginProcessManager::deleteWebsiteData):
(WebKit::PluginProcessManager::deleteWebsiteDataForHostNames):

  • UIProcess/Plugins/PluginProcessManager.h:
  • UIProcess/Plugins/PluginProcessProxy.cpp:

(WebKit::PluginProcessProxy::fetchWebsiteData):
(WebKit::PluginProcessProxy::deleteWebsiteData):
(WebKit::PluginProcessProxy::deleteWebsiteDataForHostNames):

  • UIProcess/Plugins/PluginProcessProxy.h:
  • UIProcess/ProcessAssertion.h:
  • UIProcess/WebBackForwardList.cpp:

(WebKit::WebBackForwardList::backForwardListState):

  • UIProcess/WebBackForwardList.h:
  • UIProcess/WebCookieManagerProxy.cpp:

(WebKit::WebCookieManagerProxy::setCookieObserverCallback):
(WebKit::WebCookieManagerProxy::cookiesDidChange):

  • UIProcess/WebCookieManagerProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setInitialFocus):
(WebKit::WebPageProxy::validateCommand):
(WebKit::WebPageProxy::sessionState):
(WebKit::WebPageProxy::runJavaScriptInMainFrame):
(WebKit::WebPageProxy::getRenderTreeExternalRepresentation):
(WebKit::WebPageProxy::getSourceForFrame):
(WebKit::WebPageProxy::getContentsAsString):
(WebKit::WebPageProxy::getBytecodeProfile):
(WebKit::WebPageProxy::getSamplingProfilerOutput):
(WebKit::WebPageProxy::isWebProcessResponsive):
(WebKit::WebPageProxy::getSelectionOrContentsAsString):
(WebKit::WebPageProxy::createNewPage):
(WebKit::WebPageProxy::getMarkedRangeAsync):
(WebKit::WebPageProxy::getSelectedRangeAsync):
(WebKit::WebPageProxy::characterIndexForPointAsync):
(WebKit::WebPageProxy::firstRectForCharacterRangeAsync):
(WebKit::WebPageProxy::takeSnapshot):
(WebKit::WebPageProxy::installActivityStateChangeCompletionHandler):
(WebKit::WebPageProxy::callAfterNextPresentationUpdate):
(WebKit::WebPageProxy::getLoadDecisionForIcon):

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

(WebKit::WebProcessProxy::isResponsive):

  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • UIProcess/gtk/AcceleratedBackingStoreX11.cpp:

(WebKit::XDamageNotifier::add):

  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::requestPasswordForQuickLookDocument):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::selectWithGesture):
(WebKit::WebPageProxy::updateSelectionWithTouches):
(WebKit::WebPageProxy::requestAutocorrectionData):
(WebKit::WebPageProxy::applyAutocorrection):
(WebKit::WebPageProxy::executeEditCommand):
(WebKit::WebPageProxy::selectTextWithGranularityAtPoint):
(WebKit::WebPageProxy::selectPositionAtBoundaryWithDirection):
(WebKit::WebPageProxy::moveSelectionAtBoundaryWithDirection):
(WebKit::WebPageProxy::selectPositionAtPoint):
(WebKit::WebPageProxy::beginSelectionInDirection):
(WebKit::WebPageProxy::updateSelectionWithExtentPoint):
(WebKit::WebPageProxy::updateSelectionWithExtentPointAndBoundary):
(WebKit::WebPageProxy::requestDictationContext):
(WebKit::WebPageProxy::requestAutocorrectionContext):
(WebKit::WebPageProxy::getSelectionContext):
(WebKit::WebPageProxy::selectWithTwoTouches):
(WebKit::WebPageProxy::requestRectsForGranularityWithSelectionOffset):
(WebKit::WebPageProxy::requestRectsAtSelectionOffsetWithText):
(WebKit::WebPageProxy::moveSelectionByOffset):
(WebKit::WebPageProxy::focusNextAssistedNode):
(WebKit::WebPageProxy::didRequestPasswordForQuickLookDocumentInMainFrame):

  • UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:
  • UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:

(WebKit::RemoteLayerTreeDrawingAreaProxy::dispatchAfterEnsuringDrawing):

  • UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:
  • UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:

(WebKit::TiledCoreAnimationDrawingAreaProxy::dispatchAfterEnsuringDrawing):

  • UIProcess/mac/WKTextFinderClient.mm:
  • UIProcess/mac/WebContextMenuProxyMac.mm:

(-[WKSelectionHandlerWrapper initWithSelectionHandler:]):

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::attributedSubstringForCharacterRangeAsync):
(WebKit::WebPageProxy::fontAtSelection):

  • WebProcess/ApplePay/WebPaymentCoordinator.cpp:

(WebKit::WebPaymentCoordinator::canMakePaymentsWithActiveCard):
(WebKit::WebPaymentCoordinator::openPaymentSetup):

  • WebProcess/ApplePay/WebPaymentCoordinator.h:
  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::Stream::willSendRequest):

  • WebProcess/WebPage/DrawingArea.cpp:

(WebKit::DrawingArea::dispatchAfterEnsuringUpdatedScrollPosition):

  • WebProcess/WebPage/DrawingArea.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::markLayersVolatile):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::markLayersVolatile):

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::dispatchAfterEnsuringUpdatedScrollPosition):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::markAllLayersVolatile):

  • WebProcess/WebProcess.h:
1:37 PM Changeset in webkit [218456] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Demote the "we have navigated away" check to an assertion.
https://bugs.webkit.org/show_bug.cgi?id=173509

Reviewed by Simon Fraser.

Now that the expected behavior is that the render tree can't get to the page cache, it's ok to assert.
TODO: We should also have view() check removed at some point.

  • dom/Document.cpp:

(WebCore::Document::destroyRenderTree):

1:03 PM Changeset in webkit [218455] by achristensen@apple.com
  • 8 edits in trunk/Source

Fix CMake build

Source/WebCore:

  • PlatformMac.cmake:
  • bindings/js/ScriptGlobalObject.cpp:

Source/WebKit2:

  • CMakeLists.txt:
  • NetworkProcess/capture/NetworkCaptureEvent.cpp:
  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
12:50 PM Changeset in webkit [218454] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

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

Caused imported/w3c/web-platform-tests/media-
source/mediasource* tests to fail (Requested by smfr on
#webkit).

Reverted changeset:

"[MSE] Seeking or entering fullscreen can cause extreme CPU
usage"
https://bugs.webkit.org/show_bug.cgi?id=173505
http://trac.webkit.org/changeset/218438

8:49 AM Changeset in webkit [218453] by mitz@apple.com
  • 2 edits in trunk/Source/WebKit2

Tried to fix non-iOS builds.

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
7:13 AM Changeset in webkit [218452] by keith_miller@apple.com
  • 4 edits in trunk

ArrayBuffer constructor needs to create subclass structures before its buffer
https://bugs.webkit.org/show_bug.cgi?id=173510

Reviewed by Yusuke Suzuki.

JSTests:

  • test262.yaml:

Source/JavaScriptCore:

  • runtime/JSArrayBufferConstructor.cpp:

(JSC::constructArrayBuffer):

6:02 AM Changeset in webkit [218451] by Antti Koivisto
  • 5 edits
    2 adds in trunk

Crash due to infinite recursion via FrameSelection::updateAppearanceAfterLayout
https://bugs.webkit.org/show_bug.cgi?id=173468

Reviewed by Ryosuke Niwa.

Source/WebCore:

Test: editing/selection/updateAppearanceAfterLayout-recursion.html

Calling FrameSelection::updateAppearanceAfterLayout() from Document::resolveStyle is unsafe
because it may cause another call to resolveStyle. We have some cases where the style
is still unclean when updateAppearanceAfterLayout() is called. This can lead to infinite
recursion.

The test case is not the common stack seen in CrashTracer (couldn't quit replicate it) but
the updateAppearanceAfterLayout/resolveStyle recursion is the same.

  • dom/Document.cpp:

(WebCore::Document::resolveStyle):

Normally selection appearance update is done in post-layout but not all style resolutions schedule a layout.
Invoke it asynchronously in that case instead of the previous synchronous call.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::FrameSelection):
(WebCore::FrameSelection::updateAppearanceAfterLayout):
(WebCore::FrameSelection::scheduleAppearanceUpdateAfterStyleChange):
(WebCore::FrameSelection::appearanceUpdateTimerFired):
(WebCore::FrameSelection::updateAppearanceAfterLayoutOrStyleChange):

  • editing/FrameSelection.h:

LayoutTests:

  • editing/selection/updateAppearanceAfterLayout-recursion-expected.txt: Added.
  • editing/selection/updateAppearanceAfterLayout-recursion.html: Added.
5:31 AM Changeset in webkit [218450] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

[Win] Update expectations for layout tests.
https://bugs.webkit.org/show_bug.cgi?id=172437

Unreviewed test gardening, update test expectations for failing tests.

  • platform/win/TestExpectations:
3:52 AM Changeset in webkit [218449] by keith_miller@apple.com
  • 11 edits in trunk

ArrayPrototype methods should use JSValue::toLength for non-Arrays.
https://bugs.webkit.org/show_bug.cgi?id=173506

JSTests:

Reviewed by Ryosuke Niwa.

Re-baseline tests.

  • ChakraCore/test/Function/apply3.baseline-jsc:
  • test262.yaml:

Source/JavaScriptCore:

Reviewed by Ryosuke Niwa.

This patch changes the result of unshift if old length +
unshift.arguments.length > (2 53) - 1 to be a type error. Also,
the getLength function, which was always incorrect to use, has
been removed. Additionally, some cases where we were using a
constant for (2
53) - 1 have been replaced with
maxSafeInteger()

  • interpreter/Interpreter.cpp:

(JSC::sizeOfVarargs):

  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoFuncToLocaleString):
(JSC::arrayProtoFuncPop):
(JSC::arrayProtoFuncPush):
(JSC::arrayProtoFuncReverse):
(JSC::arrayProtoFuncShift):
(JSC::arrayProtoFuncSlice):
(JSC::arrayProtoFuncSplice):
(JSC::arrayProtoFuncUnShift):
(JSC::arrayProtoFuncIndexOf):
(JSC::arrayProtoFuncLastIndexOf):

  • runtime/JSArrayInlines.h:

(JSC::getLength): Deleted.

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::toLength):

  • runtime/NumberConstructor.cpp:

(JSC::numberConstructorFuncIsSafeInteger):

LayoutTests:

Unreviewed test gardening.

12:54 AM Changeset in webkit [218448] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening. Remove duplicate entries for tests.

  • platform/win/TestExpectations:
12:47 AM Changeset in webkit [218447] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix Mac CMake build.

  • PlatformMac.cmake:
12:21 AM Changeset in webkit [218446] by rniwa@webkit.org
  • 44 edits
    2 adds in trunk

REGRESSION(r209495): materiauxlaverdure.com fails to load
https://bugs.webkit.org/show_bug.cgi?id=173301
<rdar://problem/32624850>

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

Rebaselined the tests that are now passing.

  • web-platform-tests/cssom/CSSNamespaceRule-expected.txt:
  • web-platform-tests/cssom/serialize-values-expected.txt:

Source/WebCore:

The bug was caused by WebKit wrapping CSS string values with single quotation marks instead of
double quotation marks as spec'ed in https://drafts.csswg.org/cssom/#serialize-a-string and
implemented in Firefox and Chrome.

The website eval's the computed value of the content CSS property with the value '{name: "flat"}'
after stripping single quotation marks from both ends. Prior to r209495, WebKit serialized this CSS value
in single quotations without escaping double quotations. After r209495, double quotations are escaped
with backslashes as '{name: \"flat\"}'. As a result, eval is invoked with {name: \"flat\"}
after stripping single quotations from both ends, which resulted in an exception.

Chrome and Firefox don't encounter this exception despite of the fact they escape double quotations
as well because serialize with double quotations as "{name: \"flat\"}". Because there is no code
to strip double quotations, eval is invoked with the same string, resulting in the entire value as
being parsed as string, instead of an object with a single key "name" with the value of "flat" as
was the case in WebKit prior to r209495. While this behavior was most certainly not the intent of
the website author, Chrome and Firefox don't encounter an exception and the website continues to work.

This patch aligns WebKit's behavior to that of the CSS OM specification, Firefox, and Chrome by
serializing CSS string values using double quotation marks instead of single quotation marks.

Note: inline change log comments are added below for every call site of serializeString for clarity.

Test: fast/css/getPropertyValue-serialization-with-double-quotes.html

  • css/CSSBasicShapes.cpp:

(WebCore::buildPathString): Use double quotation marks in path(~) of shapes.

  • css/CSSMarkup.cpp:

(WebCore::serializeString):
(WebCore::serializeURL): Use double quotation marks to serialize URLs.
(WebCore::serializeAsStringOrCustomIdent): Use double quotation marks to serialize strings. We still avoid
using wrapping the value with double quotations when the value can be an identifier. See r209495.
(WebCore::serializeFontFamily): Ditto for font-family names such as "San Francisco".

  • css/CSSMarkup.h:
  • css/CSSNamespaceRule.cpp:

(WebCore::CSSNamespaceRule::cssText): Use double quotation marks to serialize namespace URIs.

  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText): Use double quotation marks to serialize
the separators; e.g. counter(sectionNumber, ".") to produce "1.".

  • css/CSSSelector.cpp:

(WebCore::CSSSelector::selectorText): Use double quotation marks to serialize attribute values.

  • css/parser/CSSParserToken.cpp:

(WebCore::CSSParserToken::serialize): Use double quotation marks to serialize strings in @support.

  • editing/EditingStyle.cpp:

(WebCore::StyleChange::extractTextStyles): Updated to strip double quotation marks in font family names to
maintain the compatibility with old versions of Microsoft Outlook.

  • html/HTMLElement.cpp:

(WebCore::HTMLElement::mapLanguageAttributeToLocale): Use double quotations marks to serialize the value
of the lang content attribute. It doesn't matter which one is used here because it's only a temporary value
only fed into the CSS parser to set the equivalent CSS value from the content attribute.

LayoutTests:

Rebaselined the existing tests and added a new regression test for serializing CSS properties and values.

  • accessibility/mac/alt-for-css-content-expected.txt:
  • accessibility/mac/webkit-alt-for-css-content-expected.txt:
  • editing/pasteboard/cjk-line-height-expected.txt:
  • fast/css/alt-inherit-initial-expected.txt:
  • fast/css/alt-inherit-initial.html:
  • fast/css/content-language-comma-separated-list-expected.txt:
  • fast/css/content-language-empty-expected.txt:
  • fast/css/content-language-only-whitespace-expected.txt:
  • fast/css/content-language-with-whitespace-expected.txt:
  • fast/css/counters/counter-cssText-expected.txt:
  • fast/css/counters/counter-cssText.html:
  • fast/css/font-family-trailing-bracket-gunk-expected.txt:
  • fast/css/font-family-trailing-bracket-gunk.html:
  • fast/css/getComputedStyle/computed-style-font-family-expected.txt:
  • fast/css/getComputedStyle/computed-style-properties-expected.txt:
  • fast/css/getComputedStyle/computed-style-properties.html:
  • fast/css/getComputedStyle/font-family-fallback-reset-expected.txt:
  • fast/css/getComputedStyle/font-family-fallback-reset.html:
  • fast/css/lang-mapped-to-webkit-locale-expected.txt:
  • fast/css/lang-mapped-to-webkit-locale.xhtml:
  • fast/css/serialization-with-double-quotes-expected.txt: Added.
  • fast/css/serialization-with-double-quotes.html: Added.
  • fast/css/uri-token-parsing-expected.txt:
  • fast/css/uri-token-parsing.html:
  • fast/inspector-support/cssURLQuotes-expected.txt:
  • fast/inspector-support/style-expected.txt:
  • fast/text/font-stretch-parse-expected.txt:
  • fast/text/font-stretch-parse.html:
  • fast/text/font-style-parse-expected.txt:
  • fast/text/font-style-parse.html:
  • fast/text/font-weight-parse-expected.txt:
  • fast/text/font-weight-parse.html:
  • media/controls/track-menu.html:
  • platform/mac-elcapitan/fast/css/getComputedStyle/computed-style-font-family-expected.txt:
  • platform/mac-elcapitan/fast/text/font-stretch-parse-expected.txt:
  • platform/mac-elcapitan/fast/text/font-style-parse-expected.txt:
  • platform/mac-elcapitan/fast/text/font-weight-parse-expected.txt:
12:21 AM Changeset in webkit [218445] by Carlos Garcia Campos
  • 11 edits
    2 moves in trunk/Source/WebKit2

[GTK] Rename WebContextMenuItemGtk as WebContextMenuItemGlib
https://bugs.webkit.org/show_bug.cgi?id=173469

Reviewed by Michael Catanzaro.

Now that we switched to GAction this is actually a glib implementation, we keep the GtkAction support only for
backwards compatibility. We could rename the file and make the GtkAction action conditional to the GTK+ port.

  • PlatformGTK.cmake:
  • Shared/glib/WebContextMenuItemGlib.cpp: Renamed from Source/WebKit2/Shared/gtk/WebContextMenuItemGtk.cpp.

(WebKit::gtkStockIDFromContextMenuAction):
(WebKit::WebContextMenuItemGlib::WebContextMenuItemGlib):
(WebKit::WebContextMenuItemGlib::~WebContextMenuItemGlib):
(WebKit::WebContextMenuItemGlib::buildActionName):
(WebKit::WebContextMenuItemGlib::createActionIfNeeded):

  • Shared/glib/WebContextMenuItemGlib.h: Renamed from Source/WebKit2/Shared/gtk/WebContextMenuItemGtk.h.
  • UIProcess/API/gtk/WebKitContextMenu.cpp:

(webkitContextMenuPopulate):

  • UIProcess/API/gtk/WebKitContextMenuActions.cpp:

(webkitContextMenuActionGetForContextMenuItem):

  • UIProcess/API/gtk/WebKitContextMenuActionsPrivate.h:
  • UIProcess/API/gtk/WebKitContextMenuItem.cpp:

(webkitContextMenuItemCreate):
(webkitContextMenuItemToWebContextMenuItemGlib):
(webkit_context_menu_item_new):
(webkit_context_menu_item_new_from_gaction):
(webkit_context_menu_item_new_from_stock_action):
(webkit_context_menu_item_new_from_stock_action_with_label):
(webkit_context_menu_item_new_with_submenu):
(webkit_context_menu_item_new_separator):

  • UIProcess/API/gtk/WebKitContextMenuItemPrivate.h:
  • UIProcess/API/gtk/WebKitContextMenuPrivate.h:
  • UIProcess/API/gtk/WebKitWebView.cpp:

(webkitWebViewPopulateContextMenu):

  • UIProcess/gtk/WebContextMenuProxyGtk.cpp:

(WebKit::WebContextMenuProxyGtk::append):
(WebKit::WebContextMenuProxyGtk::buildMenu):
(WebKit::WebContextMenuProxyGtk::populate):

  • UIProcess/gtk/WebContextMenuProxyGtk.h:

Jun 16, 2017:

11:28 PM Changeset in webkit [218444] by mitz@apple.com
  • 28 edits in trunk

[Cocoa] Some declarations have missing or incorrect availability attributes
https://bugs.webkit.org/show_bug.cgi?id=173508

Reviewed by Tim Horton.

Source/WebKit2:

  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h: Removed a redundant attribute.

In all of the below files, added missing availability attributes for declarations that have
not appeared yet in any GM SDK, and fixed availability attributes for declarations that
have already appeared in the macOS 10.12.3 and iOS 10.3 SDKs.

  • UIProcess/API/Cocoa/WKBackForwardListItemPrivate.h:
  • UIProcess/API/Cocoa/WKHTTPCookieStore.h:
  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:
  • UIProcess/API/Cocoa/WKPreferences.h: Also fixed capitalization in a comment.
  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h: Also removed unnecessary conditionals.
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _draggableElementAtPosition:]): Prepended an underscore to this private method’s name.
(-[WKWebView _requestDraggableElementAtPosition:completionBlock:]): Ditto.

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/API/Cocoa/WKWebViewPrivate.h: Also updated for renames.
  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/API/Cocoa/_WKActivatedElementInfo.h:
  • UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
  • UIProcess/API/Cocoa/_WKDiagnosticLoggingDelegate.h:
  • UIProcess/API/Cocoa/_WKGeolocationCoreLocationProvider.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.h:
  • UIProcess/API/Cocoa/_WKUserContentExtensionStorePrivate.h:
  • UIProcess/API/Cocoa/_WKUserContentFilterPrivate.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.h:
  • UIProcess/_WKWebViewPrintFormatter.h:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInEditingDelegate.h:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.h:

Tools:

  • TestWebKitAPI/Tests/ios/PositionInformationTests.mm:

(TestWebKitAPI::TEST): Updated for renames.

11:07 PM Changeset in webkit [218443] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

[Win] Update expectations for layout tests.
https://bugs.webkit.org/show_bug.cgi?id=172437

Unreviewed test gardening, update test expectations for failing tests.

  • platform/win/TestExpectations:
10:47 PM Changeset in webkit [218442] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening. Update test expectations for failing tests.

  • platform/win/TestExpectations:
8:42 PM Changeset in webkit [218441] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebKit2

[WebRTC] CrashTracer: Regression : com.apple.WebKit.Networking at WebKit: WebKit::LibWebRTCSocketClient::sendTo
https://bugs.webkit.org/show_bug.cgi?id=173501

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

When a libwebrtc socket fails to be created in the network process,
the network process sends back a close message, but it keeps it in a map.
If the web process sends a message dedicated to this socket, we will try
processing it and calling the socket which is null, hence the cache.
This patch makes it so that if the socket is null, it is not added to the map.

  • NetworkProcess/webrtc/LibWebRTCSocketClient.cpp:

(WebKit::LibWebRTCSocketClient::LibWebRTCSocketClient):

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::NetworkRTCProvider::createSocket):
(WebKit::NetworkRTCProvider::createUDPSocket):
(WebKit::NetworkRTCProvider::createServerTCPSocket):
(WebKit::NetworkRTCProvider::createClientTCPSocket):

  • NetworkProcess/webrtc/NetworkRTCProvider.h:
7:58 PM Changeset in webkit [218440] by Matt Baker
  • 21 edits
    9 adds in trunk

Web Inspector: Instrument 2D/WebGL canvas contexts in the backend
https://bugs.webkit.org/show_bug.cgi?id=172623
<rdar://problem/32415986>

Reviewed by Devin Rousso and Joseph Pecoraro.

Source/JavaScriptCore:

This patch adds a basic Canvas protocol. It includes Canvas and related
types and events for monitoring the lifetime of canvases in the page.

  • CMakeLists.txt:
  • DerivedSources.make:
  • inspector/protocol/Canvas.json: Added.
  • inspector/scripts/codegen/generator.py:

(Generator.stylized_name_for_enum_value):
Add special handling for Canvas.ContextType protocol enumeration,
so that "canvas-2d" and "webgl" map to Canvas2D and WebGL.

Source/WebCore:

Test: inspector/canvas/create-canvas-contexts.html

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::getCSSCanvasElement):
Instrument creation of CSS canvases. This merely registers the canvas
element with InspectorCanvasAgent and stores the name (identifier passed
to getCSSCanvasContext) for later use. It isn't until the context is
actually created that the frontend receives a notification.

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::getContext2d):
(WebCore::HTMLCanvasElement::getContextWebGL):
Instrument creation of 2D and WebGL canvas contexts.

  • inspector/InspectorAllInOne.cpp:
  • inspector/InspectorCanvasAgent.cpp: Added.

New backend agent for canvas inspection. Canvas creation and destruction
are continuously monitored by the agent, regardless of the presence of
a frontend. This is necessary since there is no way to retrieve the
rendering contexts for with a given frame once they've been created.

(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::didCreateFrontendAndBackend):
(WebCore::InspectorCanvasAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorCanvasAgent::discardAgent):
Unregister canvas observers to prevent dangling agent pointer.
(WebCore::InspectorCanvasAgent::enable):
Dispatch events for existing canvases, now that the frontend exists.
(WebCore::InspectorCanvasAgent::disable):
(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::didCreateCSSCanvas):
Register the name/identifier associated with the CSS canvas, so that it
can be retrieved and associated with the rendering context later.

(WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext):
(WebCore::InspectorCanvasAgent::canvasDestroyed):
Removes the canvas from the agent, and queues it for notifying the
frontend during the next event loop.

(WebCore::InspectorCanvasAgent::canvasDestroyedTimerFired):
(WebCore::InspectorCanvasAgent::clearCanvasData):
(WebCore::InspectorCanvasAgent::getCanvasEntry):
(WebCore::InspectorCanvasAgent::buildObjectForCanvas):

  • inspector/InspectorCanvasAgent.h: Added.
  • inspector/InspectorController.cpp:

(WebCore::InspectorController::InspectorController):

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didCommitLoadImpl):
(WebCore::InspectorInstrumentation::didCreateCSSCanvasImpl):
(WebCore::InspectorInstrumentation::didCreateCanvasRenderingContextImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didCreateCSSCanvas):
(WebCore::InspectorInstrumentation::didCreateCanvasRenderingContext):
These instrumentation points should not fast return when no frontend
is attached.

  • inspector/InstrumentingAgents.cpp:

(WebCore::InstrumentingAgents::reset):

  • inspector/InstrumentingAgents.h:

(WebCore::InstrumentingAgents::inspectorCanvasAgent):
(WebCore::InstrumentingAgents::setInspectorCanvasAgent):
Plumbing for the new agent.

Source/WebInspectorUI:

  • UserInterface/Base/Main.js:

(WebInspector.loaded):

  • UserInterface/Controllers/CanvasManager.js: Added.

New frontend manager for the Canvas domain.
(WebInspector.CanvasManager):
(WebInspector.CanvasManager.prototype.get canvases):
(WebInspector.CanvasManager.prototype.canvasAdded):
(WebInspector.CanvasManager.prototype.canvasRemoved):
(WebInspector.CanvasManager.prototype._mainResourceDidChange):

  • UserInterface/Main.html:

New files.

  • UserInterface/Models/Canvas.js: Added.

(WebInspector.Canvas):
(WebInspector.Canvas.fromPayload):
(WebInspector.Canvas.displayNameForContextType):
Get displayable text "2D" or "WebGL" based on context type.
(WebInspector.Canvas.resetUniqueDisplayNameNumbers):
Called by CanvasManager when canvases are cleared.
(WebInspector.Canvas.prototype.get identifier):
(WebInspector.Canvas.prototype.get contextType):
(WebInspector.Canvas.prototype.get frame):
(WebInspector.Canvas.prototype.get cssCanvasName):
For CSS canvases, the identifier passed to getCSSCanvasContext.
(WebInspector.Canvas.prototype.get displayName):
Get displayable canvas name. The name depends on how the canvas was
created, and the information available:

  • getCSSCanvasContext: "CSS Canvas <identifier>"
  • getContext: "Canvas #<DOM id attribute value>"
  • Otherwise: "Canvas 1", "Canvas 2", ...

(WebInspector.Canvas.saveIdentityToCookie):

  • UserInterface/Protocol/CanvasObserver.js: Added.

(WebInspector.CanvasObserver.prototype.canvasAdded):
(WebInspector.CanvasObserver.prototype.canvasRemoved):
(WebInspector.CanvasObserver):

  • UserInterface/Test.html:
  • UserInterface/Test/Test.js:

(WebInspector.loaded):

LayoutTests:

Test that CanvasAgent dispatches events for canvas lifecycle events.

  • inspector/canvas/create-canvas-contexts-expected.txt: Added.
  • inspector/canvas/create-canvas-contexts.html: Added.
7:39 PM Changeset in webkit [218439] by commit-queue@webkit.org
  • 7 edits in trunk/Source

Add a WebKit2 setting to control whether media documents should automatically enter fullscreen
https://bugs.webkit.org/show_bug.cgi?id=173503

Patch by Antoine Quint <Antoine Quint> on 2017-06-16
Reviewed by Tim Horton.

Source/WebCore:

New WebCore setting to specify whether a media document should automatically enter fullscreen.

  • page/Settings.in:

Source/WebKit2:

New WebKit2 setting to specify whether a media document should automatically enter fullscreen.

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

(-[WKPreferences _setMediaDocumentEntersFullscreenAutomatically:]):
(-[WKPreferences _mediaDocumentEntersFullscreenAutomatically]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

7:20 PM Changeset in webkit [218438] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[MSE] Seeking or entering fullscreen can cause extreme CPU usage
https://bugs.webkit.org/show_bug.cgi?id=173505

Reviewed by Tim Horton.

When support for painting MSE to WebGL was added in r217185, the implementation of
SourceBufferPrivateAVFObjC::isReadyForMoreSamples() was modified to support asking
the decompression session if it was ready. That change, however, caused an extreme
performance regression in the normal playback path, where WebKit will effectively
append samples endlessly to the AVSampleBufferDisplayLayer, which admirably enqueued
each of them for decoding. Eventually, the cost of iterating over the CMBufferQueue
overwhelmed the cost of decoding, and caused the extreme lag seen when seeking.

Make sure to property query the AVSampleBufferDisplayLayer for isReadyForMoreMediaData
before enqueuing.

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::isReadyForMoreSamples):

6:19 PM Changeset in webkit [218437] by weinig@apple.com
  • 38 edits
    4 deletes in trunk

[WebIDL] Remove custom bindings for HTMLDocument
https://bugs.webkit.org/show_bug.cgi?id=173444

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/html/dom/dynamic-markup-insertion/closing-the-input-stream/document.close-01-expected.txt:
  • web-platform-tests/html/dom/dynamic-markup-insertion/document-write/document.write-01-expected.txt:
  • web-platform-tests/html/dom/dynamic-markup-insertion/document-writeln/document.writeln-01-expected.txt:
  • web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/document.open-01-expected.txt:
  • web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/document.open-02-expected.txt:

Update now passing results.

Source/WebCore:

  • bindings/js/JSDOMBindingSecurity.cpp:

(WebCore::canAccessDocument):
(WebCore::BindingSecurity::shouldAllowAccessToFrame):
(WebCore::BindingSecurity::shouldAllowAccessToDOMWindow):

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::showModalDialog):
Pass ExecState by reference to window accessors.

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::incumbentDOMWindow):
(WebCore::activeDOMWindow):
(WebCore::firstDOMWindow):
(WebCore::callerDocument):

  • bindings/js/JSDOMWindowBase.h:

Pass ExecState by reference to window accessors and add callerDocument.

  • bindings/js/JSHTMLDocumentCustom.cpp:

(WebCore::JSHTMLDocument::getOwnPropertySlot): Deleted.
(WebCore::JSHTMLDocument::all): Deleted.
(WebCore::JSHTMLDocument::setAll): Deleted.
(WebCore::findCallingDocument): Deleted.
(WebCore::JSHTMLDocument::open): Deleted.
(WebCore::documentWrite): Deleted.
(WebCore::JSHTMLDocument::write): Deleted.
Remove custom bindings.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateCallWith):
Add support CallWith=CallerDocument

  • bindings/scripts/IDLAttributes.json:

Remove CallerWindow, which has not been supported for a while. CallerDocument, despite
having it's support removed in the past, was still listed, so keep it.

  • bindings/scripts/test/JS/JSTestObj.cpp:

Update test results.

  • dom/DOMImplementation.cpp:

(WebCore::DOMImplementation::createHTMLDocument):
Update for new signature of Document.write().

  • dom/Document.h:
  • dom/Document.idl:
  • dom/Document.cpp:

(WebCore::Document::open):
Add DOMWindow returning overload that calls through to the DOMWindow.
Add return value and currently not utilized parameters to the Document returning overload.
Update to return exceptions as specified.

(WebCore::Document::close):
Update to return exceptions as specified.

(WebCore::Document::write):
(WebCore::Document::writeln):
Update to take a Vector<String> argument and the caller Document first
as per convention and return exceptions as specified.

(WebCore::Document::bgColor):
(WebCore::Document::setBgColor):
(WebCore::Document::fgColor):
(WebCore::Document::setFgColor):
(WebCore::Document::alinkColor):
(WebCore::Document::setAlinkColor):
(WebCore::Document::linkColorForBindings):
(WebCore::Document::setLinkColorForBindings):
(WebCore::Document::vlinkColor):
(WebCore::Document::setVlinkColor):
(WebCore::Document::clear):
(WebCore::Document::captureEvents):
(WebCore::Document::releaseEvents):
Move from HTMLDocument.

  • html/HTMLDocument.cpp:

(WebCore::HTMLDocument::bgColor): Deleted.
(WebCore::HTMLDocument::setBgColor): Deleted.
(WebCore::HTMLDocument::fgColor): Deleted.
(WebCore::HTMLDocument::setFgColor): Deleted.
(WebCore::HTMLDocument::alinkColor): Deleted.
(WebCore::HTMLDocument::setAlinkColor): Deleted.
(WebCore::HTMLDocument::linkColor): Deleted.
(WebCore::HTMLDocument::setLinkColor): Deleted.
(WebCore::HTMLDocument::vlinkColor): Deleted.
(WebCore::HTMLDocument::setVlinkColor): Deleted.
(WebCore::HTMLDocument::clear): Deleted.
(WebCore::HTMLDocument::captureEvents): Deleted.
(WebCore::HTMLDocument::releaseEvents): Deleted.

  • html/HTMLDocument.h:
  • html/HTMLDocument.idl:

Moved operations and attributes to Document.

  • inspector/DOMPatchSupport.cpp:

(WebCore::DOMPatchSupport::patchDocument):
Update for new signature of Document.write().

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::postMessage):
(WebCore::DOMWindow::focus):

  • page/DOMWindow.h:

Use the term incumbentWindow, matching IDL, and so not to be confused
with the callerWindow, which is slightly different.

Source/WebKit/mac:

  • DOM/DOMHTMLDocument.mm:

(-[DOMHTMLDocument linkColor]):
(-[DOMHTMLDocument setLinkColor:]):
(-[DOMHTMLDocument write:]):
(-[DOMHTMLDocument writeln:]):
Update for new signature of write/writeln and rename of linkColor to linkColorForBindings.

Source/WebKit/win:

  • DOMHTMLClasses.cpp:

(DOMHTMLDocument::write):
(DOMHTMLDocument::writeln):
Update for new signature of write/writeln.

Source/WebKit2:

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDocument.cpp:

(webkit_dom_html_document_get_link_color):
(webkit_dom_html_document_set_link_color):
Update for rename of linkColor to linkColorForBindings.

LayoutTests:

  • dom/xhtml/level2/html/HTMLDocument17-expected.txt:
  • dom/xhtml/level2/html/HTMLDocument18-expected.txt:
  • dom/xhtml/level2/html/HTMLDocument19-expected.txt:
  • dom/xhtml/level2/html/HTMLDocument20-expected.txt:
  • dom/xhtml/level2/html/HTMLDocument21-expected.txt:

Update test results for correct exception being thrown.

  • fast/dom/frame-deleted-in-document-open-expected.txt: Removed.
  • fast/dom/frame-deleted-in-document-open.html: Removed.
  • http/tests/security/isolatedWorld/document-open-expected.txt: Removed.
  • http/tests/security/isolatedWorld/document-open.html: Removed.

Remove two tests that were testing the behavior of document.open using javascript
to call the window.open operation. This is not how it is specified and no
longer how it is implemented.

6:10 PM Changeset in webkit [218436] by achristensen@apple.com
  • 4 edits in trunk

Fix Mac CMake build.

.:

  • Source/cmake/WebKitFS.cmake:

Add new DerivedSources/WTF directory.

Source/WTF:

  • wtf/PlatformMac.cmake:

Generate MachExceptionsServer.h

5:55 PM Changeset in webkit [218435] by dbates@webkit.org
  • 4 edits in trunk/Source

Cleanup: WebContextMenuClient::searchWithGoogle() should parse URL using URL { URL { }, ... }
instead of URL { ParsedURLString, ... }
https://bugs.webkit.org/show_bug.cgi?id=173495
<rdar://problem/32827445>

Reviewed by Alex Christensen.

URL(ParsedURLString, ...) should only be used with a string that was the result of URL::string().
Otherwise, it will cause an assertion failure if the canonicalized URL differs from the string.
Although it is unlikely that the hardcoded string in WebContextMenuClient::searchWithGoogle()
would differ from the canonicalized URL it is best practice to use URL(URL(), ...) to
parse an arbitrary string that looks like a URL.

Also modernize the code using C++14 idioms.

Source/WebKit/win:

  • WebCoreSupport/WebContextMenuClient.cpp:

(WebContextMenuClient::searchWithGoogle):

Source/WebKit2:

  • WebProcess/WebCoreSupport/WebContextMenuClient.cpp:

(WebKit::WebContextMenuClient::searchWithGoogle):

5:50 PM Changeset in webkit [218434] by dbates@webkit.org
  • 5 edits in trunk/Source/WebCore

Remove header OptionSet.h from FrameLoaderTypes.h
https://bugs.webkit.org/show_bug.cgi?id=173489

Reviewed by Joseph Pecoraro.

Although the header FrameLoaderTypes.h defines exactly one enum class, ReloadOption, whose
enumerators conform the power of two prerequisite for parameterizing an OptionSet for it
FrameLoaderTypes.h does not actually make use of the functionality provided by header
OptionSet.h. And not all source files that include FrameLoaderTypes.h need to use an OptionSet.

  • loader/DocumentLoader.h: Include <wtf/OptionSet.h>.
  • loader/FrameLoader.h: Ditto.
  • loader/FrameLoaderTypes.h: Remove header <wtf/OptionSet.h>.
  • replay/UserInputBridge.h: Include <wtf/Forward.h>.
5:33 PM Changeset in webkit [218433] by Wenson Hsieh
  • 29 edits
    12 adds in trunk

[iOS DnD] Upstream iOS drag and drop implementation into OpenSource WebKit
https://bugs.webkit.org/show_bug.cgi?id=173366
<rdar://problem/32767014>

Reviewed by Tim Horton.

Source/JavaScriptCore:

Introduce ENABLE_DATA_INTERACTION and ENABLE_DRAG_SUPPORT to FeatureDefines.xcconfig.

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Moves all drag and drop logic previously hidden behind WebKitAdditions into the open source repository, along
with unit test pages in TestWebKitAPI. Also removes all #includes and #imports of dragging-related files in
WebKitAdditions from the open source repository.

This initial upstreaming phase is only concerned with moving code out of WebKitAdditions, and attempts to
preserve the code as-is, with the exception of trivial style changes so that the open source linter passes.
Future patches will remove the DATA_INTERACTION feature flag altogether and unobscure all variable and function
names referencing "data interaction".

No change in behavior from the internal build.

  • Configurations/FeatureDefines.xcconfig:
  • page/ios/EventHandlerIOS.mm:

(WebCore::EventHandler::createDraggingDataTransfer):
(WebCore::EventHandler::eventLoopHandleMouseDragged):
(WebCore::EventHandler::tryToBeginDataInteractionAtPoint):

  • platform/ios/DragImageIOS.mm:

(WebCore::dragImageSize):
(WebCore::scaleDragImage):
(WebCore::createDragImageFromImage):
(WebCore::deleteDragImage):
(WebCore::createDragImageForLink):
(WebCore::createDragImageIconForCachedImageFilename):
(WebCore::platformAdjustDragImageForDeviceScaleFactor):
(WebCore::createDragImageForSelection):
(WebCore::dissolveDragImageToFraction):

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::setDragImage):
(WebCore::Pasteboard::createForDragAndDrop):

  • platform/mac/DragDataMac.mm:

(WebCore::rtfPasteboardType):
(WebCore::rtfdPasteboardType):
(WebCore::stringPasteboardType):
(WebCore::urlPasteboardType):
(WebCore::htmlPasteboardType):
(WebCore::colorPasteboardType):
(WebCore::pdfPasteboardType):
(WebCore::tiffPasteboardType):
(WebCore::DragData::asFilenames):
(WebCore::DragData::containsURL):
(rtfPasteboardType): Deleted.
(rtfdPasteboardType): Deleted.
(stringPasteboardType): Deleted.
(urlPasteboardType): Deleted.
(htmlPasteboardType): Deleted.
(colorPasteboardType): Deleted.
(pdfPasteboardType): Deleted.
(tiffPasteboardType): Deleted.

Source/WebCore/PAL:

Introduce ENABLE_DATA_INTERACTION and ENABLE_DRAG_SUPPORT to FeatureDefines.xcconfig.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

Move pieces of iOS WebKit1 drag and drop implementation into OpenSource. No change in behavior.

  • Configurations/FeatureDefines.xcconfig:
  • WebCoreSupport/WebDragClient.mm:

(WebDragClient::useLegacyDragClient):
(WebDragClient::willPerformDragDestinationAction):
(WebDragClient::dragSourceActionMaskForPoint):
(WebDragClient::willPerformDragSourceAction):
(WebDragClient::startDrag):
(WebDragClient::beginDrag):
(WebDragClient::declareAndWriteDragImage):
(WebDragClient::declareAndWriteAttachment):
(WebDragClient::didConcludeEditDrag):

  • WebView/WebView.mm:

(-[WebView _setDataInteractionData:textIndicator:atClientPosition:anchorPoint:action:]):
(-[WebView _getDataInteractionData]):
(-[WebView dragDataForSession:client:global:operation:]):
(-[WebView _enteredDataInteraction:client:global:operation:]):
(-[WebView _updatedDataInteraction:client:global:operation:]):
(-[WebView _exitedDataInteraction:client:global:operation:]):
(-[WebView _performDataInteraction:client:global:operation:]):
(-[WebView _tryToPerformDataInteraction:client:global:operation:]):
(-[WebView _endedDataInteraction:global:]):
(-[WebView _didConcludeEditDataInteraction]):
(floatRectsForCGRectArray): Deleted.
(-[WebView _createImageWithPlatterForImage:boundingRect:contentScaleFactor:clippingRects:]): Deleted.

  • WebView/WebViewData.h:
  • WebView/WebViewData.mm:

(-[WebViewPrivate dealloc]):

  • WebView/WebViewPrivate.h:

Source/WebKit2:

Move pieces of iOS WebKit2 drag and drop implementation into OpenSource. No change in behavior.

  • Configurations/FeatureDefines.xcconfig:
  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::setDragImage):
(WebKit::WebPageProxy::setPromisedDataForImage):
(WebKit::WebPageProxy::setPromisedDataForAttachment):
(WebKit::WebPageProxy::setDragCaretRect):

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(longPressActionDelayAfterLift):
(-[WKContentView webViewUIDelegate]):
(-[WKContentView setupDataInteractionDelegates]):
(-[WKContentView teardownDataInteractionDelegates]):
(-[WKContentView _startDataInteractionWithImage:withIndicatorData:atClientPosition:anchorPoint:action:]):
(-[WKContentView _didHandleStartDataInteractionRequest:]):
(uiImageForImage):
(shouldUseTextIndicatorToCreatePreviewForDragAction):
(-[WKContentView dragPreviewForImage:frameInRootViewCoordinates:clippingRectsInFrameCoordinates:backgroundColor:]):
(-[WKContentView dragPreviewForCurrentDataInteractionState]):
(-[WKContentView performDeferredActionAtDragOrigin]):
(-[WKContentView cancelDeferredActionAtDragOrigin]):
(-[WKContentView computeClientAndGlobalPointsForDropSession:outClientPoint:outGlobalPoint:]):
(dropOperationForWebCoreDragOperation):
(-[WKContentView dragDataForDropSession:dragDestinationAction:]):
(-[WKContentView cleanUpDragSourceSessionState]):
(extractItemProvidersFromDragItems):
(extractItemProvidersFromDropSession):
(-[WKContentView _didConcludeEditDataInteraction:]):
(-[WKContentView _didPerformDataInteractionControllerOperation:]):
(-[WKContentView _transitionDragPreviewToImageIfNecessary:]):
(-[WKContentView _didChangeDataInteractionCaretRect:currentRect:]):
(-[WKContentView _dragDestinationActionForDropSession:]):
(positionInformationMayStartDataInteraction):
(-[WKContentView currentDragOrDropSession]):
(-[WKContentView _dragInteraction:prepareForSession:completion:]):
(-[WKContentView dragInteraction:itemsForBeginningSession:]):
(-[WKContentView _api_dragInteraction:previewForLiftingItem:session:]):
(-[WKContentView dragInteraction:sessionWillBegin:]):
(-[WKContentView _api_dragInteraction:session:didEndWithOperation:]):
(-[WKContentView dragInteraction:previewForCancellingItem:withDefault:]):
(-[WKContentView _api_dragInteraction:item:willAnimateCancelWithAnimator:]):
(-[WKContentView dropInteraction:canHandleSession:]):
(-[WKContentView _api_dropInteraction:sessionDidEnter:]):
(-[WKContentView _api_dropInteraction:sessionDidUpdate:]):
(-[WKContentView dropInteraction:sessionDidExit:]):
(-[WKContentView dropInteraction:performDrop:]):
(-[WKContentView dropInteraction:previewForDroppingItem:withDefault:]):
(-[WKContentView dropInteraction:sessionDidEnd:]):
(-[WKContentView _simulateDataInteractionEntered:]):
(-[WKContentView _simulateDataInteractionUpdated:]):
(-[WKContentView _simulateDataInteractionEnded:]):
(-[WKContentView _simulateDataInteractionPerformOperation:]):
(-[WKContentView _simulateDataInteractionSessionDidEnd:]):
(-[WKContentView _simulateWillBeginDataInteractionWithSession:]):
(-[WKContentView _simulatedItemsForSession:]):
(-[WKContentView _simulatePrepareForDataInteractionSession:completion:]):

  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:

(WebKit::convertCGImageToBitmap):
(WebKit::WebDragClient::startDrag):
(WebKit::WebDragClient::declareAndWriteDragImage):
(WebKit::WebDragClient::didConcludeEditDrag):
(WebKit::WebDragClient::declareAndWriteAttachment):

Source/WTF:

Define ENABLE_DRAG_SUPPORT as 1 by default and 0 for iOS, and define ENABLE_DATA_INTERACTION as 0 by default.
These are overridden to both be 1 for iOS 11+ in the FeatureDefines.xcconfig within each individual project.

  • wtf/Platform.h:

Tools:

Move test pages and pieces of DataInteractionSimulator hidden behind WebKitAdditions into TestWebKitAPI. No
change in behavior.

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/autofocus-contenteditable.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/background-image-link-and-input.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/contenteditable-and-textarea.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/div-and-large-image.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/file-uploading.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/image-and-contenteditable.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/image-and-textarea.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/link-and-input.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/link-and-target-div.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/prevent-operation.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/prevent-start.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/textarea-to-input.html: Added.
  • TestWebKitAPI/ios/DataInteractionSimulator.mm:

(-[MockDragDropSession initWithItems:location:window:]):
(-[MockDragDropSession allowsMoveOperation]):
(-[MockDragDropSession isRestrictedToDraggingApplication]):
(-[MockDragDropSession hasItemsConformingToTypeIdentifiers:]):
(-[MockDragDropSession canLoadObjectsOfClass:]):
(-[MockDragDropSession canLoadObjectsOfClasses:]):
(-[MockDragDropSession items]):
(-[MockDragDropSession setItems:]):
(-[MockDragDropSession locationInView:]):
(-[MockDataOperationSession initWithProviders:location:window:]):
(-[MockDataOperationSession session]):
(-[MockDataOperationSession isLocal]):
(-[MockDataOperationSession progress]):
(-[MockDataOperationSession setProgressIndicatorStyle:]):
(-[MockDataOperationSession progressIndicatorStyle]):
(-[MockDataOperationSession operationMask]):
(-[MockDataOperationSession localDragSession]):
(-[MockDataOperationSession hasItemsConformingToTypeIdentifier:]):
(-[MockDataOperationSession canCreateItemsOfClass:]):
(-[MockDataOperationSession loadObjectsOfClass:completion:]):
(-[MockDataInteractionSession initWithWindow:]):
(-[MockDataInteractionSession localOperationMask]):
(-[MockDataInteractionSession externalOperationMask]):
(-[MockDataInteractionSession session]):
(-[DataInteractionSimulator _advanceProgress]):

5:29 PM Changeset in webkit [218432] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

WebRTC sockets should be closed at destruction time if not closed explicitly
https://bugs.webkit.org/show_bug.cgi?id=173479

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

Source/WebKit2:

  • WebProcess/Network/webrtc/LibWebRTCSocket.cpp:

(WebKit::LibWebRTCSocket::~LibWebRTCSocket):
(WebKit::LibWebRTCSocket::Close):

LayoutTests:

  • webrtc/datachannel/multiple-connections-expected.txt: Added.
  • webrtc/datachannel/multiple-connections.html: Added.
5:27 PM Changeset in webkit [218431] by commit-queue@webkit.org
  • 7 edits
    2 adds in trunk

addTransceiver should trigger mid generation in the SDP
https://bugs.webkit.org/show_bug.cgi?id=173452

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

Source/WebCore:

Test: webrtc/video-addTransceiver.html

Adding support for recvonly SDP based on call to addTransceiver.
Using offer_to_receive options of libwebrtc for that purpose.

Making sure that addTransceiver and using a real track afterwards is working too.

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::enqueueReplaceTrackTask): notify the backend that a track is added in case the sender has no track.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::shouldOfferAllowToReceiveAudio): Detect whether some audio mid should be recvonly.
(WebCore::LibWebRTCMediaEndpoint::shouldOfferAllowToReceiveVideo): Detect whether some video mid should be recvonly.
(WebCore::LibWebRTCMediaEndpoint::doCreateOffer):

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:

LayoutTests:

  • webrtc/routines.js:

(createConnections):

  • webrtc/video-addTransceiver-expected.txt: Added.
  • webrtc/video-addTransceiver.html: Added.
5:20 PM Changeset in webkit [218430] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix Visual Studio 2017 64-bit build after r218258
https://bugs.webkit.org/show_bug.cgi?id=173308

  • PlatformWin.cmake:

We still need the enable_language(ASM_MASM) even if we explicitly call ml64 with VS2017.
Otherwise CMake complains about a missing variable CMAKE_ASM_MASM_COMPILE_OBJECT.

4:50 PM Changeset in webkit [218429] by Jonathan Bedard
  • 4 edits in trunk/LayoutTests

Clean-up lint-test-expectation errors

Unreviewed test gardening

  • platform/ios-wk1/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/win/TestExpectations:
4:49 PM Changeset in webkit [218428] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

WebCore::LibWebRTCMediaEndpoint::gatherStatsForLogging is crashing
https://bugs.webkit.org/show_bug.cgi?id=173493

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

Speculative preventive fix.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::gatherStatsForLogging):

4:43 PM Changeset in webkit [218427] by achristensen@apple.com
  • 4 edits in trunk

Show punycode to user if a URL has dotless i or j followed by diacritic dot
https://bugs.webkit.org/show_bug.cgi?id=173431

Reviewed by Darin Adler.

Source/WebCore:

Covered by new API tests.

  • platform/mac/WebCoreNSURLExtras.mm:

(WebCore::isLookalikeCharacter):
(WebCore::allCharactersInIDNScriptWhiteList):
(WebCore::createStringWithEscapedUnsafeCharacters):

Tools:

  • TestWebKitAPI/Tests/WebCore/cocoa/URLExtras.mm:

(TestWebKitAPI::TEST):

4:16 PM Changeset in webkit [218426] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

[iOS] Switching cameras in a WebRTC call makes black frames being sent
https://bugs.webkit.org/show_bug.cgi?id=173486

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

Source/WebCore:

Test: webrtc/video-replace-muted-track.html

  • platform/mediastream/mac/RealtimeOutgoingVideoSource.cpp:

(WebCore::RealtimeOutgoingVideoSource::updateBlackFramesSending):
Ensuring the timer is stopped if needed.
(WebCore::RealtimeOutgoingVideoSource::initializeFromSource):
Calling updateBlackFramesSending to stop sending frame if needed.

LayoutTests:

  • webrtc/video-replace-muted-track-expected.txt: Added.
  • webrtc/video-replace-muted-track.html: Added.
4:15 PM Changeset in webkit [218425] by Ryan Haddad
  • 1 edit
    1 delete in trunk/LayoutTests

Remove a test that was accidentally checked in with r218408.

Unreviewed test gardening.

  • webrtc/datachannel/test.html: Removed.
4:13 PM Changeset in webkit [218424] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked imported/w3c/web-platform-tests/IndexedDB/large-nested-cloning.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=173487

Unreviewed test gardening.

  • platform/mac/TestExpectations:
4:10 PM Changeset in webkit [218423] by commit-queue@webkit.org
  • 5 edits in trunk

Remove replaceTrack restriction about video resolution
https://bugs.webkit.org/show_bug.cgi?id=173490

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

Source/WebCore:

Covered by updated tests.

  • platform/mediastream/mac/RealtimeOutgoingVideoSource.cpp:

(WebCore::RealtimeOutgoingVideoSource::setSource):

LayoutTests:

  • webrtc/video-replace-track-expected.txt:
  • webrtc/video-replace-track.html:
3:56 PM Changeset in webkit [218422] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Handle timeout of prepareForPictureInPictureStopWithCompletionHandler.
https://bugs.webkit.org/show_bug.cgi?id=173462
rdar://problem/32128170

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-06-16
Reviewed by Jer Noble.

No new tests because no effect on the DOM.

If WebVideoFullscreenInterfaceAVKit::prepareForPictureInPictureStopWithCompletionHandler doesn't respond fast enough,
the caller will timeout and call will/didStopPictureInPicture.

This is getting fullscreen state confused.

This change keeps state consistent by handling will/didStopPictureInPicture possibly being called before
prepareForPictureInPictureStopWithCompletionHandler calls its callback.

  • platform/ios/WebVideoFullscreenInterfaceAVKit.h:
  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(WebVideoFullscreenInterfaceAVKit::willStopPictureInPicture):
(WebVideoFullscreenInterfaceAVKit::didStopPictureInPicture):
(WebVideoFullscreenInterfaceAVKit::prepareForPictureInPictureStopWithCompletionHandler):
(WebVideoFullscreenInterfaceAVKit::watchdogTimerFired):

3:46 PM Changeset in webkit [218421] by mmaxfield@apple.com
  • 6 edits
    1 copy in trunk/Source/WebCore

Make builds faster after r218371
https://bugs.webkit.org/show_bug.cgi?id=173453

Reviewed by Tim Horton.

Remove #includes from .h files.

No new tests because there is no behavior change.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj: Add new .cpp file, and sort the project file
  • platform/graphics/FontFamilySpecificationNull.cpp: Copied from Source/WebCore/platform/graphics/FontFamilySpecificationNull.h.

(WebCore::FontFamilySpecificationNull::fontRanges):

  • platform/graphics/FontFamilySpecificationNull.h:

(WebCore::FontFamilySpecificationNull::fontRanges): Deleted.

  • platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:

(WebCore::FontFamilySpecificationCoreText::FontFamilySpecificationCoreText):
(WebCore::FontFamilySpecificationCoreText::~FontFamilySpecificationCoreText):

  • platform/graphics/cocoa/FontFamilySpecificationCoreText.h:

(WebCore::FontFamilySpecificationCoreText::FontFamilySpecificationCoreText): Deleted.

3:35 PM Changeset in webkit [218420] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked multiple imported/w3c/web-platform-tests/IndexedDB as flaky.
https://bugs.webkit.org/show_bug.cgi?id=172834

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:32 PM Changeset in webkit [218419] by Chris Dumez
  • 12 edits
    1 add in trunk

[WK2] Add WKProcessPool SPI to efficiently reset all plugin load client policies
https://bugs.webkit.org/show_bug.cgi?id=173472
<rdar://problem/28858817>

Reviewed by Brady Eidson.

Source/WebCore:

Add PluginLoadClientPolicyMaximum value to PluginLoadClientPolicy enumeration
to facilitate input value validation on API side.

  • plugins/PluginData.h:

Source/WebKit2:

Add WKProcessPool SPI to efficiently reset all plugin load client policies:
[WKProcessPool _resetPluginLoadClientPolicies]. This new SPI clears all
existing policies and then sets all of them with new values, with a
minimal amount of IPC.

To achieve this, clients would previously have to call

  1. WKContextClearPluginClientPolicies() which would cause a broadcast IPC to every WebContent process.
  2. WKContextSetPluginLoadClientPolicy() repeatedly to add each policy one by one. Each call to WKContextSetPluginLoadClientPolicy() would cause a broadcast IPC to every WebContent process.

The new SPI does the same job with a single broadcast IPC to every WebContent
process.

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(isPluginLoadClientPolicyAcceptable):
(toPluginLoadClientPoliciesHashMap):
(policiesHashMapToDictionary):
(-[WKProcessPool _resetPluginLoadClientPolicies:]):
(-[WKProcessPool _pluginLoadClientPolicies]):

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::setPluginLoadClientPolicy):
(WebKit::WebProcessPool::resetPluginLoadClientPolicies):

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

(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::resetPluginLoadClientPolicies):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:

Tools:

Add API test coverage.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/PluginLoadClientPolicies.mm: Added.

(TEST):

3:28 PM Changeset in webkit [218418] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

[WK2][macOS] Expand sandbox to better support video playback on mac mini
https://bugs.webkit.org/show_bug.cgi?id=173492
<rdar://problem/32804073>

Reviewed by Alex Christensen.

Hardware differences in Mac Mini's require some different IOKit preferences to be accessible.

  • WebProcess/com.apple.WebProcess.sb.in:
2:59 PM Changeset in webkit [218417] by jer.noble@apple.com
  • 15 edits
    2 adds in trunk

[iOS] Do not pause playing video when application resigns active state.
https://bugs.webkit.org/show_bug.cgi?id=173474

Reviewed by Tim Horton.

Source/WebCore:

Test: media/video-inactive-playback.html

Separate out the concept of "inactive" playback from "process background" playback.
Move the implementation of applicationDidEnterBackground() from MediaSessionManagerIOS
into it's superclass, PlatformMediaSessionManager, and add a new set of restrictions
for "InactiveProcessPlaybackRestricted" and "SuspendedUnderLockPlaybackRestricted".
Leave the default restriction set for iOS as "BackgroundProcessPlaybackRestricted" and
"SuspendedUnderLockPlaybackRestricted", to preserve the existing behavior of suspending
playback when switching apps or when locking the device.

  • platform/audio/PlatformMediaSession.cpp:

(WebCore::interruptionName):

  • platform/audio/PlatformMediaSession.h:
  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::applicationWillBecomeInactive):
(WebCore::PlatformMediaSessionManager::applicationDidBecomeActive):
(WebCore::PlatformMediaSessionManager::applicationDidEnterBackground):
(WebCore::PlatformMediaSessionManager::applicationWillEnterForeground):
(WebCore::PlatformMediaSessionManager::applicationWillEnterBackground): Deleted.
(WebCore::PlatformMediaSessionManager::applicationDidEnterForeground): Deleted.

  • platform/audio/PlatformMediaSessionManager.h:
  • platform/audio/ios/MediaSessionManagerIOS.h:
  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::MediaSessionManageriOS::resetRestrictions):
(-[WebMediaSessionHelper applicationDidBecomeActive:]):
(-[WebMediaSessionHelper applicationWillResignActive:]):
(WebCore::MediaSessionManageriOS::applicationDidEnterBackground): Deleted.
(WebCore::MediaSessionManageriOS::applicationWillEnterForeground): Deleted.

  • testing/Internals.cpp:

(WebCore::Internals::applicationWillBecomeInactive):
(WebCore::Internals::applicationDidBecomeActive):
(WebCore::Internals::applicationWillEnterForeground):
(WebCore::Internals::applicationDidEnterBackground):
(WebCore::Internals::setMediaSessionRestrictions):
(WebCore::Internals::applicationDidEnterForeground): Deleted.
(WebCore::Internals::applicationWillEnterBackground): Deleted.

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • media/video-background-playback-expected.txt:
  • media/video-background-playback.html:
  • media/video-background-tab-playback-expected.txt:
  • media/video-background-tab-playback.html:
  • media/video-inactive-playback-expected.txt: Added.
  • media/video-inactive-playback.html: Added.
2:43 PM Changeset in webkit [218416] by achristensen@apple.com
  • 3 edits
    2 adds in trunk

REGRESSION (r213126): Sync XHR needs partition for cache and credentials
https://bugs.webkit.org/show_bug.cgi?id=173496
<rdar://problem/31943596>

Reviewed by Darin Adler.

Source/WebCore:

Test: http/tests/security/sync-xhr-partition.html

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::createRequest):

LayoutTests:

  • http/tests/security/sync-xhr-partition-expected.txt: Added.
  • http/tests/security/sync-xhr-partition.html: Added.
2:32 PM Changeset in webkit [218415] by Yusuke Suzuki
  • 3 edits
    2 adds in trunk

[JSC] Add fast path for Object.assign
https://bugs.webkit.org/show_bug.cgi?id=173416

Reviewed by Mark Lam.

JSTests:

  • stress/object-assign-changing-properties.js: Added.

(shouldBe):
(throw.new.Error.let.source.get x):
(throw.new.Error):
(shouldBe.let.source.get x):
(shouldBe.let.target.set x):
(shouldBe.let.target.get x):

  • stress/object-assign-proxy.js: Added.

(shouldBe):
(throw.new.Error.let.handler.get order):

Source/JavaScriptCore:

In Object.assign implementation, we need to ensure that given key is still enumerable own key.
This seems duplicate look up. And we want to avoid this. However, we still need to perform this
check in the face of Proxy. Proxy can observe that this check is done correctly.

In almost all the cases, the above check is duplicate to the subsequent Get? operation.
In this patch, we perform this check. But at that time, we investigate isTaintedByOpaqueObject().
If it is false, we can say that getOwnPropertySlot is pure. In that case, we can just retrieve the
value by calling slot.getValue().

This further improves performance of Object.assign.

baseline patched

object-assign.es6 363.6706+-6.4381 324.1769+-6.9624 definitely 1.1218x faster

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorAssign):

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

Intermittent crash running Internal/Tests/InternalJSTests/Regress/radar-24300617.js
https://bugs.webkit.org/show_bug.cgi?id=173488

Reviewed by Filip Pizlo.

ClonedArguments lazily sets its callee and interator properties and it used its own inline
code to initialize its butterfly. This means that these lazily set properties can have
bogus values in those slots. Instead, let's use the standard BUtterfly:tryCreate() method
to create the butterfly as it clears out of line properties.

  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::createEmpty):

2:08 PM Changeset in webkit [218413] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked imported/w3c/web-platform-tests/fetch/nosniff/importscripts.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=173432

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
2:02 PM Changeset in webkit [218412] by mark.lam@apple.com
  • 22 edits in trunk/Source/JavaScriptCore

Interpreter methods for mapping between Opcode and OpcodeID need not be instance methods.
https://bugs.webkit.org/show_bug.cgi?id=173491

Reviewed by Keith Miller.

The implementation are based on static data. There's no need to get the
interpreter instance. Hence, we can make these methods static and avoid doing
unnecessary work to compute the interpreter this pointer.

Also removed the unused isCallBytecode method.

  • bytecode/BytecodeBasicBlock.cpp:

(JSC::BytecodeBasicBlock::computeImpl):

  • bytecode/BytecodeDumper.cpp:

(JSC::BytecodeDumper<Block>::printGetByIdOp):
(JSC::BytecodeDumper<Block>::printGetByIdCacheStatus):
(JSC::BytecodeDumper<Block>::dumpBytecode):
(JSC::BytecodeDumper<Block>::dumpBlock):

  • bytecode/BytecodeLivenessAnalysis.cpp:

(JSC::BytecodeLivenessAnalysis::dumpResults):

  • bytecode/BytecodeLivenessAnalysisInlines.h:

(JSC::BytecodeLivenessPropagation<DerivedAnalysis>::stepOverInstruction):

  • bytecode/BytecodeRewriter.cpp:

(JSC::BytecodeRewriter::adjustJumpTargetsInFragment):

  • bytecode/CallLinkStatus.cpp:

(JSC::CallLinkStatus::computeFromLLInt):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::propagateTransitions):
(JSC::CodeBlock::finalizeLLIntInlineCaches):
(JSC::CodeBlock::hasOpDebugForLineAndColumn):
(JSC::CodeBlock::usesOpcode):
(JSC::CodeBlock::valueProfileForBytecodeOffset):
(JSC::CodeBlock::arithProfileForPC):
(JSC::CodeBlock::insertBasicBlockBoundariesForControlFlowProfiler):

  • bytecode/PreciseJumpTargets.cpp:

(JSC::getJumpTargetsForBytecodeOffset):
(JSC::computePreciseJumpTargetsInternal):
(JSC::findJumpTargetsForBytecodeOffset):

  • bytecode/PreciseJumpTargetsInlines.h:

(JSC::extractStoredJumpTargetsForBytecodeOffset):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::applyModification):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::getPredictionWithoutOSRExit):
(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::Interpreter):
(JSC::Interpreter::isOpcode):
(): Deleted.

  • interpreter/Interpreter.h:

(JSC::Interpreter::getOpcode): Deleted.
(JSC::Interpreter::getOpcodeID): Deleted.
(JSC::Interpreter::isCallBytecode): Deleted.

  • interpreter/InterpreterInlines.h:

(JSC::Interpreter::getOpcode):
(JSC::Interpreter::getOpcodeID):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emitNewFuncCommon):
(JSC::JIT::emitNewFuncExprCommon):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::privateCompilePutByVal):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emitSlow_op_put_by_val):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::llint_trace_operand):
(JSC::LLInt::llint_trace_value):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • profiler/ProfilerBytecodeSequence.cpp:

(JSC::Profiler::BytecodeSequence::BytecodeSequence):

1:48 PM Changeset in webkit [218411] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Unreviewed, rolling out r218402 and r218404.
https://bugs.webkit.org/show_bug.cgi?id=173494

Seems to have mysteriously broken the build in bizarre ways
(Requested by thorton on #webkit).

Reverted changesets:

"Include a few widespread WTF headers in WebCorePrefix.h"
https://bugs.webkit.org/show_bug.cgi?id=173481
http://trac.webkit.org/changeset/218402

"Fix the Windows build after r218402"
http://trac.webkit.org/changeset/218404

1:41 PM Changeset in webkit [218410] by Matt Lewis
  • 3 edits in trunk/LayoutTests

Adjusted test expectations for media/track/track-in-band-cues-added-once.html.
https://bugs.webkit.org/show_bug.cgi?id=142152

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
  • platform/mac/TestExpectations:
1:34 PM Changeset in webkit [218409] by beidson@apple.com
  • 4 edits in trunk

REGRESSION (r218015) IconLoaders for already-cached resources expect to be asynchronous, no longer are.
<rdar://problem/32817519> and https://bugs.webkit.org/show_bug.cgi?id=173478

Reviewed by Daniel Bates.

Source/WebCore:

Covered by API test.

Being synchronous is actually better as it's resolved another issue or two.
But only if we can actually deliver the data without crashing first.
So let's do that.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::didGetLoadDecisionForIcon): Put the IconLoader in the set of active icon loaders

before actually starting the icon loading.

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/IconLoadingDelegate.mm:
1:24 PM Changeset in webkit [218408] by commit-queue@webkit.org
  • 9 edits
    2 copies
    3 adds in trunk/LayoutTests

Make some WebRTC tests easier to debug when failing
https://bugs.webkit.org/show_bug.cgi?id=173480

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

  • webrtc/captureCanvas-webrtc-expected.txt:
  • webrtc/captureCanvas-webrtc.html: Splitting test in smaller tests.
  • webrtc/datachannel/basic-expected.txt:
  • webrtc/datachannel/basic-tcp-expected.txt: Added.
  • webrtc/datachannel/basic-tcp.html: Test from basic.html
  • webrtc/datachannel/basic.html: Moving TCP specifict test and other creation tests to their own files.
  • webrtc/datachannel/bufferedAmountLowThreshold.html: Removing console log message in case of unhandled promise.
  • webrtc/datachannel/creation-expected.txt:
  • webrtc/datachannel/creation.html: Test from basic.html
  • webrtc/datachannel/filter-ice-candidate-expected.txt:
  • webrtc/datachannel/filter-ice-candidate.html: Exchanging the tests.
  • webrtc/video-stats.html: Improving test that timestamp is milliseconds and not microseconds.
1:22 PM Changeset in webkit [218407] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Don't use WebCore Timer from code that runs in the UI process.
https://bugs.webkit.org/show_bug.cgi?id=173460
rdar://problem/32750731

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-06-16
Reviewed by Jer Noble.

If a WebCore Timer is fired from the WebKit2 UI process, it will
create a web thread, which can cause a crash in this instance.

It was also causing the timer to be called back on the wrong thread.

  • platform/ios/WebVideoFullscreenInterfaceAVKit.h:
  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(WebVideoFullscreenInterfaceAVKit::WebVideoFullscreenInterfaceAVKit):

1:09 PM Changeset in webkit [218406] by Chris Dumez
  • 2 edits in trunk/Tools

DRT fails to reset page visibility between tests
https://bugs.webkit.org/show_bug.cgi?id=173485

Reviewed by Alexey Proskuryakov.

DRT fails to reset page visibility between tests and relies on tests calling testRunner.resetPageVisibility().
Fix this to address flakiness.

I confirmed this by commenting out the call to testRunner.resetPageVisibility() in
fast/events/page-visibility-onvisibilitychange.html and running the test in a loop.
The test became flaky without the DRT change and was no longer flaky with the DRT
change.

WebKitTestRunner already does this.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebViewToConsistentStateBeforeTesting):

12:55 PM Changeset in webkit [218405] by Brent Fulgham
  • 3 edits in trunk/Source/WebKit2

[WK2][iOS][macOS] Extend the sandbox to allow reading of AVFoundation's VideoPerformanceHUD preference
https://bugs.webkit.org/show_bug.cgi?id=173476
<rdar://problem/31594568>

Reviewed by Alex Christensen.

Update the sandbox to permit WebContent process to read the AVFoundation preferences for the performance HUD.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
12:51 PM Changeset in webkit [218404] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Fix the Windows build after r218402

  • WebCorePrefix.h:

I typed #import instead of #include on auto-pilot, and ... it mostly worked!
Except Windows.

12:48 PM Changeset in webkit [218403] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Hide inline captions in fullscreen. Remove fullscreen captions when no longer needed.
https://bugs.webkit.org/show_bug.cgi?id=173482

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-06-16
Reviewed by Eric Carlson.

Hide the inline captions while they are presenting to fullscreen.
Remove the text track representation as soon as it is no longer needed.
This allows the text track to render properly when returning to inline.

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlTextTrackContainerElement::updateTextTrackRepresentation):

12:44 PM Changeset in webkit [218402] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Include a few widespread WTF headers in WebCorePrefix.h
https://bugs.webkit.org/show_bug.cgi?id=173481

Reviewed by Alex Christensen.

  • WebCorePrefix.h:

These are four of the headers that contribute the most pre-processed
source to the WebCore build. They (and their dependents) change infrequently
enough that a world rebuild of WebCore when they change seems like an
acceptable tradeoff for the ~9% reduction in WebCore build time that I
measure from this change.

12:20 PM Changeset in webkit [218401] by achristensen@apple.com
  • 2 edits in trunk/Tools

Implement basic authentication in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=173443

Reviewed by Tim Horton.

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController webView:didReceiveAuthenticationChallenge:completionHandler:]):

11:55 AM Changeset in webkit [218400] by commit-queue@webkit.org
  • 7 edits
    2 adds in trunk

REGRESSION: AirPlay placard is not shown when in fullscreen
https://bugs.webkit.org/show_bug.cgi?id=173447
<rdar://problem/32803773>

Patch by Antoine Quint <Antoine Quint> on 2017-06-16
Reviewed by Jon Lee.

Source/WebCore:

We only allowed a placard to be set on inline controls, but that was an oversight: placards
should be displayed in fullscreen as well. As such, we move the "placard" property up from
InlineMediaControls to MediaControls, and update the layout() logic in MacOSFullscreenMediaControls
to display a placard.

Test: media/modern-media-controls/placard-support/placard-support-airplay-fullscreen.html

  • Modules/modern-media-controls/controls/inline-media-controls.js:

(InlineMediaControls):
(InlineMediaControls.prototype.layout):
(InlineMediaControls.prototype.get placard): Deleted.
(InlineMediaControls.prototype.set placard): Deleted.

  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js:

(MacOSFullscreenMediaControls.prototype.layout):

  • Modules/modern-media-controls/controls/media-controls.js:

(MediaControls.prototype.get placard):
(MediaControls.prototype.set placard):
(MediaControls.prototype.placardPreventsControlsBarDisplay):
(MediaControls.prototype.layout):

  • Modules/modern-media-controls/media/placard-support.js:

(PlacardSupport.prototype._updatePlacard):
(PlacardSupport):

LayoutTests:

Add a new test to check that we display the AirPlay placard on macOS in fullscreen.

  • media/modern-media-controls/placard-support/placard-support-airplay-fullscreen-expected.txt: Added.
  • media/modern-media-controls/placard-support/placard-support-airplay-fullscreen.html: Added.
  • platform/ios-simulator/TestExpectations:
11:46 AM Changeset in webkit [218399] by jer.noble@apple.com
  • 14 edits
    2 adds in trunk

[WebRTC] Removing a MediaStreamTrack from a MediaStream reports no recording to WebKit clients
https://bugs.webkit.org/show_bug.cgi?id=173398
<rdar://problem/32592961>

Reviewed by Eric Carlson.

Source/WebCore:

API Test: Tests/WebKit2/MediaStreamTrackDetached.mm

Move the definition of a MediaStream as a MediaProducer from the stream itself to its constituent
MediaStreamTracks. This ensures that, even if a MediaStreamTrack is removed from its stream, the
document (and thus the clients) are notified that media capture is still occurring.

Though MediaStream is no longer a MediaProducer, it still uses the MediaProducer's state concept
to determine when to fire events. However it's mediaState() implementation will be moved into
MediaStreamTrack, and will instead simply bitwise-or together each of it's track's mediaState().

The MediaStream notifies the document that its state has changed asynchronously, so do the same
for MediaStreamTrack (which reduces the number of calls to the client when changes all occur
during a single run loop).

Because the MediaStreamTrackPrivate may be started externally (not by the MediaStreamTrack directly),
add a new client method that notifies observers when the track has been started, and the
MediaStreamTrack will use this notification to update the document with it's new mediaState().

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::MediaStream):
(WebCore::MediaStream::~MediaStream):
(WebCore::MediaStream::mediaState):
(WebCore::MediaStream::statusDidChange):
(WebCore::MediaStream::characteristicsChanged):
(WebCore::MediaStream::pageMutedStateDidChange): Deleted.

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

(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::~MediaStreamTrack):
(WebCore::MediaStreamTrack::pageMutedStateDidChange):
(WebCore::MediaStreamTrack::mediaState):
(WebCore::MediaStreamTrack::trackStarted):
(WebCore::MediaStreamTrack::configureTrackRendering):
(WebCore::MediaStreamTrack::stop):
(WebCore::MediaStreamTrack::document):

  • Modules/mediastream/MediaStreamTrack.h:

(WebCore::MediaStreamTrack::source):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/mediastream/MediaStreamPrivate.cpp:

(WebCore::MediaStreamPrivate::trackStarted):

  • platform/mediastream/MediaStreamPrivate.h:
  • platform/mediastream/MediaStreamTrackPrivate.cpp:

(WebCore::MediaStreamTrackPrivate::sourceStarted):

  • platform/mediastream/MediaStreamTrackPrivate.h:
  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::start):

  • platform/mediastream/RealtimeMediaSource.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/MediaStreamTrackDetached.mm: Added.

(-[MediaStreamTrackDetachedUIDelegate _webView:requestUserMediaAuthorizationForDevices:url:mainFrameURL:decisionHandler:]):
(-[MediaStreamTrackDetachedUIDelegate _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]):
(-[MediaStreamTrackDetachedUIDelegate _webView:mediaCaptureStateDidChange:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2/mediastreamtrack-detached.html: Added.
10:42 AM Changeset in webkit [218398] by commit-queue@webkit.org
  • 5 edits
    3 adds in trunk

Backdrop blur missing in media controls bar on Sierra
https://bugs.webkit.org/show_bug.cgi?id=173451

Patch by Antoine Quint <Antoine Quint> on 2017-06-16
Reviewed by Simon Fraser.

Source/WebCore:

On Sierra, we need to enforce a stacking context on controls bars to guarantee that
the backdrop filters on the BackgroundTint are applied correctly.

Test: media/modern-media-controls/controls-bar/controls-bar-stacking-context.html

  • Modules/modern-media-controls/controls/controls-bar.css:

(.controls-bar):

LayoutTests:

Add a new test that checks that a ControlsBar establishes a stacking context.

  • media/modern-media-controls/controls-bar/controls-bar-stacking-context-expected.txt: Added.
  • media/modern-media-controls/controls-bar/controls-bar-stacking-context.html: Added.
  • platform/ios-simulator/TestExpectations:
  • platform/mac/TestExpectations:
10:40 AM Changeset in webkit [218397] by Matt Lewis
  • 14 edits
    2 deletes in trunk

Unreviewed, rolling out r218375.

The API test MediaStreamTrackDetached is still timing out
after the patch

Reverted changeset:

"[WebRTC] Removing a MediaStreamTrack from a MediaStream
reports no recording to WebKit clients"
https://bugs.webkit.org/show_bug.cgi?id=173398
http://trac.webkit.org/changeset/218375

10:20 AM Changeset in webkit [218396] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

REGRESSION: Media control glyphs appear to invert colors when video is dragged
https://bugs.webkit.org/show_bug.cgi?id=173455
rdar://problem/32726887

Reviewed by Tim Horton.

Masks on composited layers were not correctly painted in drag images, because RenderLayer::paintLayerContents()
failed to pass the PaintBehaviorFlattenCompositingLayers flag down through the mask drawing code, causing
RenderBox::paintMaskImages() to fall into the composited mask code path.

Fix by making a local copy of PaintBehavior, and setting the PaintBehaviorFlattenCompositingLayers and PaintBehaviorSnapshotting
bits on it as appropriate, and passing it into paintMaskForFragments() and paintChildClippingMaskForFragments(). This is similar
to code above.

Can't test drag images.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::paintLayerContents):
(WebCore::RenderLayer::paintMaskForFragments):
(WebCore::RenderLayer::paintChildClippingMaskForFragments):

  • rendering/RenderLayer.h:
9:47 AM Changeset in webkit [218395] by Matt Lewis
  • 21 edits
    7 deletes in trunk

Unreviewed, rolling out r218376.

The patch cause multiple Layout Test Crashes.

Reverted changeset:

"Web Inspector: Instrument 2D/WebGL canvas contexts in the
backend"
https://bugs.webkit.org/show_bug.cgi?id=172623
http://trac.webkit.org/changeset/218376

9:34 AM Changeset in webkit [218394] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] Layout Test fast/events/tabindex-focus-blur-all.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=145171

Unreviewed gardening.

Recently, this test case results in flaky crash, no flaky timeout.

Patch by Fujii Hironori <Fujii Hironori> on 2017-06-16

  • platform/gtk/TestExpectations: Marked it Crash Pass.
9:12 AM Changeset in webkit [218393] by commit-queue@webkit.org
  • 14 edits in trunk/Source

Use the term icon instead of favicon
https://bugs.webkit.org/show_bug.cgi?id=173400

Patch by Daniel Bates <dabates@apple.com> on 2017-06-16
Reviewed by Alex Christensen.

Source/WebCore:

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::cachedResourceContent):
(WebCore::InspectorPageAgent::cachedResourceType):

  • loader/LinkLoader.cpp:

(WebCore::createLinkPreloadResourceClient):

  • loader/ResourceLoadInfo.cpp:

(WebCore::toResourceType):

  • loader/SubresourceLoader.cpp:

(WebCore::logResourceLoaded):

  • loader/cache/CachedRawResource.cpp:

(WebCore::CachedRawResource::CachedRawResource):

  • loader/cache/CachedRawResource.h:

(isType):

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::defaultPriorityForResourceType):

  • loader/cache/CachedResource.h:

(WebCore::CachedResource::isMainOrMediaOrIconOrRawResource):
(WebCore::CachedResource::ignoreForRequestCount):
(WebCore::CachedResource::isMainOrMediaOrFaviconOrRawResource): Deleted.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::createResource):
(WebCore::CachedResourceLoader::requestIcon):
(WebCore::contentTypeFromResourceType):
(WebCore::CachedResourceLoader::checkInsecureContent):
(WebCore::CachedResourceLoader::allowedByContentSecurityPolicy):
(WebCore::CachedResourceLoader::determineRevalidationPolicy):
(WebCore::CachedResourceLoader::requestFavicon): Deleted.

  • loader/cache/CachedResourceLoader.h:
  • loader/icon/IconLoader.cpp:

(WebCore::IconLoader::startLoading):

Source/WebKit2:

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::maximumBufferingTime):

9:08 AM Changeset in webkit [218392] by Konstantin Tokarev
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r166799): LogsPageMessagesToSystemConsoleEnabled corrupts non-ASCII characters
https://bugs.webkit.org/show_bug.cgi?id=173470

Reviewed by Joseph Pecoraro.

ConsoleClient::printConsoleMessageWithArguments() incorrectly uses
const char* overload of StringBuilder::append() that assummes Latin1
encoding, not UTF8.

  • runtime/ConsoleClient.cpp:

(JSC::ConsoleClient::printConsoleMessageWithArguments):

8:34 AM Changeset in webkit [218391] by Adrian Perez de Castro
  • 2 edits in trunk/LayoutTests

REGRESSION(r215188?): Test platform/gtk/fast/forms/menulist-typeahead-find.html is failing
https://bugs.webkit.org/show_bug.cgi?id=171492

Unreviewed gardening.

  • platform/gtk/TestExpectations: The fixes needed for the test to pass

have landed, so the test can be unskipped.

7:35 AM Changeset in webkit [218390] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

Updated Spanish translation for WebKitGTK+
https://bugs.webkit.org/show_bug.cgi?id=173465

Patch by Daniel Mustieles <daniel.mustieles@gmail.com> on 2017-06-16
Rubber-stamped by Michael Catanzaro.

  • es.po:
7:17 AM Changeset in webkit [218389] by Carlos Garcia Campos
  • 3 edits
    1 delete in trunk/Source/WebKit2

[GTK][WPE] Remove WKCookieManagerSoup
https://bugs.webkit.org/show_bug.cgi?id=173467

Reviewed by Michael Catanzaro.

It's unused.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • UIProcess/API/C/soup/WKCookieManagerSoup.cpp: Removed.
  • UIProcess/API/C/soup/WKCookieManagerSoup.h: Removed.
7:16 AM Changeset in webkit [218388] by pvollan@apple.com
  • 3 edits in trunk/Source/WebCore

WebKit does not honor closed caption stroke width.
https://bugs.webkit.org/show_bug.cgi?id=173402

Reviewed by Eric Carlson.

WebKit currently has an upper limit on the stroke width returned from MACaptionAppearanceCopyFontDescriptorWithStrokeForStyle.
Since only half the stroke is visible because the stroke is drawn before the fill, double the stroke width from
MediaAccessibility to get the correct visual stroke width. Also, the stroke width returned from this function should not be
interpreted as CSS points, but as CSS pixels.

  • html/shadow/MediaControlElements.cpp:

(WebCore::MediaControlTextTrackContainerElement::updateTextStrokeStyle):

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::CaptionUserPreferencesMediaAF::captionStrokeWidthForFont):

4:24 AM Changeset in webkit [218387] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] Layout Test fast/canvas/webgl/tex-image-and-sub-image-2d-with-video.html makes the subsequent test case flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=173459

Unreviewed gardening.

Patch by Fujii Hironori <Fujii Hironori> on 2017-06-16

  • platform/gtk/TestExpectations: Marked it Skip.
3:13 AM Changeset in webkit [218386] by Carlos Garcia Campos
  • 4 edits in trunk/Source/WebKit2

Unreviewed. Remove wrong headers check from some GTK+ API files.

Remove the WEBKIT_WEB_EXTENSION_H_INSIDE check since these are not actually shared.

  • UIProcess/API/gtk/WebKitEditorState.h:
  • UIProcess/API/gtk/WebKitOptionMenu.h:
  • UIProcess/API/gtk/WebKitPrintCustomWidget.h:
3:03 AM Changeset in webkit [218385] by Claudio Saavedra
  • 2 edits in trunk/LayoutTests

[WPE] fast/animation gardening

Unreviewed gardening.

fast/animation tests are flaky, report and mark.
fast/animation/height-auto-transition-computed-value.html is not really failing, unmark.
storage/domstorage/sessionstorage/set-item-synchronous-keydown.html
depends on event injection in WTR that is not implemented in WPE
yet, reported and marked as failing.

  • platform/wpe/TestExpectations:
12:36 AM Changeset in webkit [218384] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

[Win] WebKit renders scrollbar wrong at 125% scale.
https://bugs.webkit.org/show_bug.cgi?id=173363

Reviewed by Darin Adler.

Scrollbars are drawn with the GDI function DrawThemeBackground. Sometimes, the GDI clip
rectangle will be too small since we clamp a FloatRect to integer values when setting the
GDI clip rectangle.

  • platform/graphics/win/GraphicsContextWin.cpp:

(WebCore::GraphicsContextPlatformPrivate::clip):

Jun 15, 2017:

11:15 PM Changeset in webkit [218383] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

[Win] Update expectations for layout tests.
https://bugs.webkit.org/show_bug.cgi?id=172437

Unreviewed test gardening, update test expectations for failing tests.

  • platform/win/TestExpectations:
11:03 PM Changeset in webkit [218382] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

REGRESSION(r218325): [GTK] Runtime critical warnings running layout tests that show a popup menu
https://bugs.webkit.org/show_bug.cgi?id=173421

Reviewed by Carlos Alberto Lopez Perez.

In r218325 I forgot to create a WebKitPopupMenu or WebPopupMenuProxyGtk depending on whether the view is a
WebKitWebView or not.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::createPopupMenuProxy):

9:38 PM Changeset in webkit [218381] by mark.lam@apple.com
  • 8 edits in trunk/Source

Add a JSRunLoopTimer registry in VM.
https://bugs.webkit.org/show_bug.cgi?id=173429
<rdar://problem/31287961>

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

This way, we can be sure we've got every JSRunLoopTimer instance covered if we
need to change their run loop (e.g. when setting to the WebThread's run loop).

  • heap/Heap.cpp:

(JSC::Heap::Heap):
(JSC::Heap::setRunLoop): Deleted.

  • heap/Heap.h:

(JSC::Heap::runLoop): Deleted.

  • runtime/JSRunLoopTimer.cpp:

(JSC::JSRunLoopTimer::JSRunLoopTimer):
(JSC::JSRunLoopTimer::setRunLoop):
(JSC::JSRunLoopTimer::~JSRunLoopTimer):

  • runtime/VM.cpp:

(JSC::VM::VM):
(JSC::VM::registerRunLoopTimer):
(JSC::VM::unregisterRunLoopTimer):
(JSC::VM::setRunLoop):

  • runtime/VM.h:

(JSC::VM::runLoop):

Source/WebCore:

No new tests needed because:

  1. it's already covered: it was also originally discovered by our API tests while running on the iOS simulator. The test was intermittently failing on a debug build.
  2. the issue is racy (it depends on a JSRunLoopTimer firing at the right time). Hence, it's non trivial to write a better test than the one we already have.
  • bindings/js/CommonVM.cpp:

(WebCore::commonVMSlow):

9:06 PM Changeset in webkit [218380] by Wenson Hsieh
  • 4 edits in trunk/Source/WebKit/mac

[iOS DnD] [WK1] Dropping links onto UIWebViews should not trigger navigation by default
https://bugs.webkit.org/show_bug.cgi?id=173454
<rdar://problem/31720671>

Reviewed by Tim Horton.

Adds -webView:dragDestinationActionMaskForSession: as SPI to WebUIDelegate.
If unimplemented, the default UI delegate allows all actions except for URL loading.

  • DefaultDelegates/WebDefaultUIDelegate.mm:

(-[WebDefaultUIDelegate webView:dragDestinationActionMaskForSession:]):

  • WebView/WebUIDelegatePrivate.h:
  • WebView/WebView.mm:

(-[WebView dragDestinationActionMaskForSession:]):

8:55 PM Changeset in webkit [218379] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

[Cocoa] Modernize some internal initializers to use instancetype instead of id
https://bugs.webkit.org/show_bug.cgi?id=173112

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-06-15
Reviewed by Wenson Hsieh.

  • API/JSContextInternal.h:
  • API/JSWrapperMap.h:
  • API/JSWrapperMap.mm:

(-[JSObjCClassInfo initForClass:]):
(-[JSWrapperMap initWithGlobalContextRef:]):

8:26 PM Changeset in webkit [218378] by timothy_horton@apple.com
  • 5 edits in trunk/Source/WebKit2

Null deref under ViewGestureController::endSwipeGesture (navigationGestureDidEnd)
https://bugs.webkit.org/show_bug.cgi?id=173441
<rdar://problem/25876512>

Reviewed by Simon Fraser.

This is a speculative fix for a crash that we don't have repro steps for.

In a few places, ViewGestureController looks itself up by pageID (in cases
where we're in an asynchronous callback), and then calls some
function on it (endSwipeGesture, or something that will get there).
However, if in the meantime an API client has turned the swipe gesture
on and off, the page's ViewGestureController will be a different one
than the one that originally started this process, with fresh state,
and nullptrs in all sorts of places, ripe for dereferencing.

To fix this, instead of just looking ViewGestureController up by
pageID, also keep track of the current gestureID, process-wide (previously
the gestureID was per-ViewGestureController), and only return the
ViewGestureController if it's currently processing the same gesture
that started the asynchronous task.

  • UIProcess/Cocoa/ViewGestureController.cpp:

(WebKit::ViewGestureController::controllerForGesture):
(WebKit::ViewGestureController::takeNextGestureID):
(WebKit::ViewGestureController::willBeginGesture):
(WebKit::ViewGestureController::didEndGesture):
(WebKit::ViewGestureController::gestureControllerForPage): Deleted.

  • UIProcess/Cocoa/ViewGestureController.h:

Add helpers that set and reset activeGestureType and currentGestureID together.
Make gesture IDs process global, to avoid two ViewGestureControllers using the same IDs.

  • UIProcess/ios/ViewGestureControllerIOS.mm:

(WebKit::ViewGestureController::beginSwipeGesture):
(WebKit::ViewGestureController::endSwipeGesture):
(WebKit::ViewGestureController::removeSwipeSnapshot):

  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::didCollectGeometryForMagnificationGesture):
(WebKit::ViewGestureController::handleMagnificationGestureEvent):
(WebKit::ViewGestureController::endMagnificationGesture):
(WebKit::ViewGestureController::beginSwipeGesture):
(WebKit::ViewGestureController::forceRepaintIfNeeded):
(WebKit::ViewGestureController::removeSwipeSnapshot):
Adopt willBeginGesture/didEndGesture and controllerForGesture.

8:08 PM Changeset in webkit [218377] by commit-queue@webkit.org
  • 5 edits
    1 delete in trunk

REGRESSION: AirPlay button is incorrectly highlighted in inline and fullscreen
https://bugs.webkit.org/show_bug.cgi?id=173446

Patch by Antoine Quint <Antoine Quint> on 2017-06-15
Reviewed by Dean Jackson.

Source/WebCore:

A button's color should be applied to its <picture> element, not the containing
<button> element.

  • Modules/modern-media-controls/controls/airplay-button.css:

(button.airplay.on > picture):
(button.airplay.on): Deleted.

LayoutTests:

Update the test to explicitly check the color on the <picture>. We also make the test check
the color with a value depending on the platform, so we can use a single expectation file.

  • media/modern-media-controls/airplay-button/airplay-button-on-expected.txt:
  • media/modern-media-controls/airplay-button/airplay-button-on.html:
  • platform/ios/media/modern-media-controls/airplay-button/airplay-button-on-expected.txt: Removed.
7:55 PM Changeset in webkit [218376] by Matt Baker
  • 21 edits
    9 adds in trunk

Web Inspector: Instrument 2D/WebGL canvas contexts in the backend
https://bugs.webkit.org/show_bug.cgi?id=172623
<rdar://problem/32415986>

Reviewed by Devin Rousso.

Source/JavaScriptCore:

This patch adds a basic Canvas protocol. It includes Canvas and related
types and events for monitoring the lifetime of canvases in the page.

  • CMakeLists.txt:
  • DerivedSources.make:
  • inspector/protocol/Canvas.json: Added.
  • inspector/scripts/codegen/generator.py:

(Generator.stylized_name_for_enum_value):
Add special handling for Canvas.ContextType protocol enumeration,
so that "canvas-2d" and "webgl" map to Canvas2D and WebGL.

Source/WebCore:

Test: inspector/canvas/create-canvas-contexts.html

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::getCSSCanvasElement):
Instrument creation of CSS canvases. This merely registers the canvas
element with InspectorCanvasAgent and stores the name (identifier passed
to getCSSCanvasContext) for later use. It isn't until the context is
actually created that the frontend receives a notification.

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::getContext2d):
(WebCore::HTMLCanvasElement::getContextWebGL):
Instrument creation of 2D and WebGL canvas contexts.

  • inspector/InspectorAllInOne.cpp:
  • inspector/InspectorCanvasAgent.cpp: Added.

New backend agent for canvas inspection. Canvas creation and destruction
are continuously monitored by the agent, regardless of the presence of
a frontend. This is necessary since there is no way to retrieve the
rendering contexts for with a given frame once they've been created.

(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::didCreateFrontendAndBackend):
(WebCore::InspectorCanvasAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorCanvasAgent::discardAgent):
Unregister canvas observers to prevent dangling agent pointer.
(WebCore::InspectorCanvasAgent::enable):
Dispatch events for existing canvases, now that the frontend exists.
(WebCore::InspectorCanvasAgent::disable):
(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::didCreateCSSCanvas):
Register the name/identifier associated with the CSS canvas, so that it
can be retrieved and associated with the rendering context later.

(WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext):
(WebCore::InspectorCanvasAgent::canvasDestroyed):
Removes the canvas from the agent, and queues it for notifying the
frontend during the next event loop.

(WebCore::InspectorCanvasAgent::canvasDestroyedTimerFired):
(WebCore::InspectorCanvasAgent::clearCanvasData):
(WebCore::InspectorCanvasAgent::getCanvasEntry):
(WebCore::InspectorCanvasAgent::buildObjectForCanvas):

  • inspector/InspectorCanvasAgent.h: Added.
  • inspector/InspectorController.cpp:

(WebCore::InspectorController::InspectorController):

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didCommitLoadImpl):
(WebCore::InspectorInstrumentation::didCreateCSSCanvasImpl):
(WebCore::InspectorInstrumentation::didCreateCanvasRenderingContextImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didCreateCSSCanvas):
(WebCore::InspectorInstrumentation::didCreateCanvasRenderingContext):
These instrumentation points should not fast return when no frontend
is attached.

  • inspector/InstrumentingAgents.cpp:

(WebCore::InstrumentingAgents::reset):

  • inspector/InstrumentingAgents.h:

(WebCore::InstrumentingAgents::inspectorCanvasAgent):
(WebCore::InstrumentingAgents::setInspectorCanvasAgent):
Plumbing for the new agent.

Source/WebInspectorUI:

  • UserInterface/Base/Main.js:

(WebInspector.loaded):

  • UserInterface/Controllers/CanvasManager.js: Added.

New frontend manager for the Canvas domain.
(WebInspector.CanvasManager):
(WebInspector.CanvasManager.prototype.get canvases):
(WebInspector.CanvasManager.prototype.canvasAdded):
(WebInspector.CanvasManager.prototype.canvasRemoved):
(WebInspector.CanvasManager.prototype._mainResourceDidChange):

  • UserInterface/Main.html:

New files.

  • UserInterface/Models/Canvas.js: Added.

(WebInspector.Canvas):
(WebInspector.Canvas.fromPayload):
(WebInspector.Canvas.displayNameForContextType):
Get displayable text "2D" or "WebGL" based on context type.
(WebInspector.Canvas.resetUniqueDisplayNameNumbers):
Called by CanvasManager when canvases are cleared.
(WebInspector.Canvas.prototype.get identifier):
(WebInspector.Canvas.prototype.get contextType):
(WebInspector.Canvas.prototype.get frame):
(WebInspector.Canvas.prototype.get cssCanvasName):
For CSS canvases, the identifier passed to getCSSCanvasContext.
(WebInspector.Canvas.prototype.get displayName):
Get displayable canvas name. The name depends on how the canvas was
created, and the information available:

  • getCSSCanvasContext: "CSS Canvas <identifier>"
  • getContext: "Canvas #<DOM id attribute value>"
  • Otherwise: "Canvas 1", "Canvas 2", ...

(WebInspector.Canvas.saveIdentityToCookie):

  • UserInterface/Protocol/CanvasObserver.js: Added.

(WebInspector.CanvasObserver.prototype.canvasAdded):
(WebInspector.CanvasObserver.prototype.canvasRemoved):
(WebInspector.CanvasObserver):

  • UserInterface/Test.html:
  • UserInterface/Test/Test.js:

(WebInspector.loaded):

LayoutTests:

Test that CanvasAgent dispatches events for canvas lifecycle events.

  • inspector/canvas/create-canvas-contexts-expected.txt: Added.
  • inspector/canvas/create-canvas-contexts.html: Added.
7:49 PM Changeset in webkit [218375] by jer.noble@apple.com
  • 14 edits
    2 adds in trunk

[WebRTC] Removing a MediaStreamTrack from a MediaStream reports no recording to WebKit clients
https://bugs.webkit.org/show_bug.cgi?id=173398
<rdar://problem/32592961>

Reviewed by Eric Carlson.

Source/WebCore:

API Test: Tests/WebKit2/MediaStreamTrackDetached.mm

Move the definition of a MediaStream as a MediaProducer from the stream itself to its constituent
MediaStreamTracks. This ensures that, even if a MediaStreamTrack is removed from its stream, the
document (and thus the clients) are notified that media capture is still occurring.

Though MediaStream is no longer a MediaProducer, it still uses the MediaProducer's state concept
to determine when to fire events. However it's mediaState() implementation will be moved into
MediaStreamTrack, and will instead simply bitwise-or together each of it's track's mediaState().

The MediaStream notifies the document that its state has changed asynchronously, so do the same
for MediaStreamTrack (which reduces the number of calls to the client when changes all occur
during a single run loop).

Because the MediaStreamTrackPrivate may be started externally (not by the MediaStreamTrack directly),
add a new client method that notifies observers when the track has been started, and the
MediaStreamTrack will use this notification to update the document with it's new mediaState().

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::MediaStream):
(WebCore::MediaStream::~MediaStream):
(WebCore::MediaStream::mediaState):
(WebCore::MediaStream::statusDidChange):
(WebCore::MediaStream::characteristicsChanged):
(WebCore::MediaStream::pageMutedStateDidChange): Deleted.

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

(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::~MediaStreamTrack):
(WebCore::MediaStreamTrack::pageMutedStateDidChange):
(WebCore::MediaStreamTrack::mediaState):
(WebCore::MediaStreamTrack::trackStarted):
(WebCore::MediaStreamTrack::configureTrackRendering):
(WebCore::MediaStreamTrack::stop):
(WebCore::MediaStreamTrack::document):

  • Modules/mediastream/MediaStreamTrack.h:

(WebCore::MediaStreamTrack::source):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/mediastream/MediaStreamPrivate.cpp:

(WebCore::MediaStreamPrivate::trackStarted):

  • platform/mediastream/MediaStreamPrivate.h:
  • platform/mediastream/MediaStreamTrackPrivate.cpp:

(WebCore::MediaStreamTrackPrivate::sourceStarted):

  • platform/mediastream/MediaStreamTrackPrivate.h:
  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::start):

  • platform/mediastream/RealtimeMediaSource.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/MediaStreamTrackDetached.mm: Added.

(-[MediaStreamTrackDetachedUIDelegate _webView:requestUserMediaAuthorizationForDevices:url:mainFrameURL:decisionHandler:]):
(-[MediaStreamTrackDetachedUIDelegate _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]):
(-[MediaStreamTrackDetachedUIDelegate _webView:mediaCaptureStateDidChange:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2/mediastreamtrack-detached.html: Added.
6:43 PM Changeset in webkit [218374] by Simon Fraser
  • 3 edits in trunk/Source/WebKit2

[iOS WK2] YouTube videos flash at the wrong place at the end of rotation
https://bugs.webkit.org/show_bug.cgi?id=173445
rdar://problem/31584852

Reviewed by Tim Horton.

In MobileSafari where WKWebView rotation uses _dynamicViewportUpdateModes, we could do a
visibleContentRect update at the end of rotation which computed a bad layoutViewportRect,
because it used a m_baseLayoutViewportSize from the old orientation.

We have actually sent a new m_baseLayoutViewportSize to the UI process by this point in
a layer tree commit, but _didCommitLayerTree: ignored it because we had a _dynamicViewportUpdateMode.

Fix is to always update the layout viewport data from the web process, since during dynamic
viewport updates, we still need these data to compute rectangles sent back to the web process via
visible content rect updates.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _didCommitLayerTree:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::computeCustomFixedPositionRect):
(WebKit::WebPageProxy::updateLayoutViewportParameters): Cleanup.

6:39 PM Changeset in webkit [218373] by Simon Fraser
  • 35 edits in trunk/Source/WebCore

Use WTFLogAlways for debug logging so that it shows up in device system logs
https://bugs.webkit.org/show_bug.cgi?id=173450

Reviewed by Tim Horton.

If you want to showRenderTree() on-device, the result doesn't show in system log so you can't see it
Switch to WTFLogAlways to fix this, for all the debug logging in WebCore.

Also WKError () -> WKError() in the old WAK code, to allow for easier searching pending cleanup.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::~AudioContext):

  • Modules/webaudio/AudioNode.cpp:

(WebCore::AudioNode::~AudioNode):
(WebCore::AudioNode::ref):
(WebCore::AudioNode::finishDeref):
(WebCore::AudioNode::printNodeCounts):

  • bridge/objc/objc_instance.mm:

(ObjcInstance::invokeObjcMethod):

  • bridge/objc/objc_utility.mm:

(JSC::Bindings::convertObjcValueToValue):

  • css/StyleProperties.cpp:

(WebCore::StyleProperties::showStyle):

  • dom/DocumentMarkerController.cpp:

(DocumentMarkerController::showMarkers):

  • dom/Node.cpp:

(WebCore::Node::showNode):
(WebCore::Node::showNodePathForThis):
(WebCore::traverseTreeAndMark):

  • dom/Position.cpp:

(WebCore::Position::debugPosition):
(WebCore::Position::showAnchorTypeAndOffset):

  • dom/Range.cpp:

(showTree):

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::debugRenderer):

  • editing/VisiblePosition.cpp:

(WebCore::VisiblePosition::debugPosition):

  • editing/VisibleSelection.cpp:

(WebCore::VisibleSelection::debugPosition):

  • history/HistoryItem.cpp:

(WebCore::HistoryItem::showTreeWithIndent):

  • html/parser/HTMLFormattingElementList.cpp:

(WebCore::HTMLFormattingElementList::show):

  • inspector/DOMPatchSupport.cpp:

(WebCore::DOMPatchSupport::dumpMap):

  • page/scrolling/ScrollingStateTree.cpp:

(showScrollingStateTree):

  • platform/audio/ios/AudioDestinationIOS.cpp:

(WebCore::AudioDestinationIOS::frameSizeChangedProc):

  • platform/graphics/GraphicsLayer.cpp:

(showGraphicsLayerTree):

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::dump):

  • platform/ios/wak/WAKView.mm:

(+[WAKView _wrapperForViewRef:]):
(-[WAKView displayRect:]):
(-[WAKView displayRectIgnoringOpacity:inContext:]):

  • platform/ios/wak/WKUtilities.c:

(WKRelease):

  • platform/ios/wak/WKView.mm:

(_WKViewSetViewContext):
(WKViewGetBounds):
(WKViewGetFrame):
(_WKViewRecursivelyInvalidateGState):
(WKViewSetFrameOrigin):
(WKViewSetFrameSize):
(WKViewGetWindow):
(WKViewGetSubviews):
(WKViewAddSubview):
(WKViewRemoveFromSuperview):
(WKViewFirstChild):
(WKViewNextSibling):
(WKViewTraverseNext):
(WKViewGetVisibleRect):
(WKViewConvertRectToSuperview):
(WKViewConvertRectToBase):
(WKViewConvertPointToSuperview):
(WKViewConvertPointFromSuperview):
(WKViewConvertPointToBase):
(_WKViewGetAncestorViewsIncludingView):
(WKViewConvertPointFromBase):
(WKViewConvertRectFromSuperview):
(WKViewConvertRectFromBase):
(WKViewGetAutoresizingMask):
(WKViewSetAutoresizingMask):

  • platform/text/TextEncodingRegistry.cpp:

(WebCore::dumpTextEncodingNameMap):

  • rendering/CounterNode.cpp:

(WebCore::showTreeAndMark):

  • rendering/InlineBox.cpp:

(WebCore::InlineBox::showLineBox):

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::showLineBox):

  • rendering/RenderCounter.cpp:

(showCounterRendererTree):

  • rendering/RenderLayer.cpp:

(WebCore::showLayerTree):

  • rendering/RenderObject.cpp:

(WebCore::showRenderTreeLegend):
(WebCore::RenderObject::showRegionsInformation):
(WebCore::RenderObject::showRenderObject):
(WebCore::printRenderTreeForLiveDocuments):
(WebCore::printLayerTreeForLiveDocuments):

  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::printPrefix):
(WebCore::SimpleLineLayout::showLineLayoutForFlow):

  • rendering/svg/SVGResources.cpp:

(WebCore::SVGResources::dump):

  • rendering/svg/SVGResourcesCycleSolver.cpp:

(WebCore::SVGResourcesCycleSolver::resolveCycles):

  • rendering/svg/SVGTextLayoutAttributes.cpp:

(WebCore::dumpSVGCharacterDataMapValue):
(WebCore::SVGTextLayoutAttributes::dump):

  • rendering/svg/SVGTextLayoutEngine.cpp:

(WebCore::dumpTextBoxes):
(WebCore::SVGTextLayoutEngine::finishLayout):

6:07 PM Changeset in webkit [218372] by mmaxfield@apple.com
  • 8 edits in trunk/Source/WebCore

Removing stray whitespace after r218371
https://bugs.webkit.org/show_bug.cgi?id=173043

Unreviewed.

No new tests because there is no behavior change.

  • platform/graphics/FontCascadeFonts.cpp:

(WebCore::shouldIgnoreRotation):
(WebCore::glyphDataForNonCJKCharacterWithGlyphOrientation):

  • platform/graphics/FontDescription.cpp:
  • platform/graphics/FontDescription.h:
  • platform/graphics/FontFamilySpecificationNull.h:
  • platform/graphics/cocoa/FontDescriptionCocoa.cpp:

(WebCore::SystemFontDatabase::systemFontCascadeList):
(WebCore::systemFontParameters):

  • platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:

(WebCore::FontFamilySpecificationCoreText::fontRanges):

  • platform/graphics/cocoa/FontFamilySpecificationCoreText.h:
5:56 PM Changeset in webkit [218371] by mmaxfield@apple.com
  • 12 edits
    11 adds in trunk

[Cocoa] Expand system-ui to include every item in the Core Text cascade list
https://bugs.webkit.org/show_bug.cgi?id=173043
<rdar://problem/21125708>

Reviewed by Simon Fraser.

Source/WebCore:

The concept of the system font on Cocoa platforms represents the entire Core Text cascade list.
However, previously, WebKit only represented system-ui by pulling out the first item in the Core
Text cascade list. Instead, we should make all text rendered with "system-ui" match what the
platform would natively render.

Previously, we walked through the strings in the font-family property and looked them up one by
one. However, now we want to abstract this idea of a font family to possibly hold a
CTFontDescriptorRef instead of a string. This way, we expand a font-family list of ["fontA",
"system-ui", "fontB"] to ["fontA", ... a bunch of CTFontDescriptorRefs ..., "FontB"]. We can
then modify the consumer of this object to have two codepaths: the old string-based codepath,
and a new, platform-specific codepath which simply embeds the CTFontDesriptorRefs inside a Font
object.

We don't want to simply pull out the family name from each item in the Core Text fallback list
because that is a lossy translation. There is more information in these font descriptors which
cannot be represented by CSS. Therefore, we must keep the descriptors alive and add the new
codepath for them.

We also don't want to run the CSS font matching algorithm on each member of the Core Text
fallback list because it may yield different results from Core Text's font matching algorithm.
Our goal is to draw text as closely as possible to the system APIs. If we ran it, we may find
a font which is closer to the requested traits, but it would look out of place on the system.

This new codepath is only enabled on macOS High Sierra and iOS 11, because enabling it on all
operating systems would make fixing https://bugs.webkit.org/show_bug.cgi?id=173300 impossible.

Tests: fast/text/system-font-fallback-emoji.html

fast/text/system-font-fallback.html
fast/text/system-font-zero-size.html

  • WebCore.xcodeproj/project.pbxproj:
  • page/MemoryRelease.cpp:

(WebCore::releaseNoncriticalMemory):

  • platform/graphics/FontCascadeFonts.cpp:

(WebCore::realizeNextFallback): The consumer of our new data type. Now uses WTF::visit().
(WebCore::FontCascadeFonts::realizeFallbackRangesAt): Now that the number of items to test
against the current character is larger than the number of strings in the font-family list,
we need to update the existing code to use the correct value.

  • platform/graphics/FontDescription.cpp: Default implementation for non-Cocoa ports.

(WebCore::FontDescription::invalidateCaches):
(WebCore::FontCascadeDescription::effectiveFamilyCount):
(WebCore::FontCascadeDescription::effectiveFamilyAt):

  • platform/graphics/FontDescription.h: Our new data type is a Variant of AtomicString and a

platform-specific class. Cocoa uses a class that holds a CTFontDescriptorRef and other ports
use an empty non-constructable class.

  • platform/graphics/FontFamilySpecificationNull.h: Added. The empty non-constructable

class.
(WebCore::FontFamilySpecificationNull::fontRanges):

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::fontCacheRegisteredFontsChangedNotificationCallback):
(WebCore::FontCache::platformInit): Changing the system language will change the system font
fallback list, so we need to listen to this notification. This also matters for
FontCache::systemFallbackForCharacters(), so we should build off the same callback we are
already using for font installation.
(WebCore::invalidateFontCache):

  • platform/graphics/cocoa/FontDescriptionCocoa.cpp: Added. The platform-specific creation of

our CTFontDescriptorRefs. We hold them cached in a SystemFontDatabase.
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::CoreTextCascadeListParameters):
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::isHashTableDeletedValue):
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::operator==):
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::hash):
(WebCore::SystemFontDatabase::singleton):
(WebCore::SystemFontDatabase::systemFontCascadeList):
(WebCore::SystemFontDatabase::clear):
(WebCore::SystemFontDatabase::SystemFontDatabase):
(WebCore::SystemFontDatabase::applyWeightAndItalics):
(WebCore::SystemFontDatabase::removeCascadeList):
(WebCore::SystemFontDatabase::computeCascadeList):
(WebCore::SystemFontDatabase::CoreTextCascadeListParametersHash::hash):
(WebCore::SystemFontDatabase::CoreTextCascadeListParametersHash::equal):
(WebCore::isSystemFontString):
(WebCore::systemFontParameters):
(WebCore::FontDescription::invalidateCaches):
(WebCore::FontCascadeDescription::effectiveFamilyCount): We don't store the result of this
because it would probably be a bad idea to increase the size of every single FontCascade just
in case it might ask for the system font. Most fonts never mention system-ui. Because it's so
rare, we can just recalculate the result of this as necessary. This shouldn't be slow because
the results are cached.
(WebCore::FontCascadeDescription::effectiveFamilyAt):

  • platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp: Added.

(WebCore::FontFamilySpecificationCoreText::fontRanges): Create a FontRanges from a
CTFontDescriptorRef.

  • platform/graphics/cocoa/FontFamilySpecificationCoreText.h: Added.

(WebCore::FontFamilySpecificationCoreText::FontFamilySpecificationCoreText):

  • platform/graphics/ios/FontCacheIOS.mm:

(WebCore::platformFontWithFamilySpecialCase):

  • platform/graphics/mac/FontCacheMac.mm:

(WebCore::platformFontWithFamilySpecialCase):

LayoutTests:

  • fast/text/system-font-fallback-emoji-expected.txt: Added.
  • fast/text/system-font-fallback-emoji.html: Added.
  • fast/text/system-font-fallback-expected.html: Added.
  • fast/text/system-font-fallback.html: Added.
  • fast/text/system-font-zero-size-expected.txt: Added.
  • fast/text/system-font-zero-size.html: Added.
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/mac/fast/text/international/system-language/system-font-punctuation-expected.png: Added.
5:45 PM Changeset in webkit [218370] by ddkilzer@apple.com
  • 3 edits
    3 deletes in trunk/Source/WebCore

Revert: [iOS] Generate a simulated crash when the WebThread starts in MobileSafari
<https://webkit.org/b/173386>
<rdar://problem/32776426>

Revert r218347 and r218339 since we're going to take a different
approach to investigating a crash on the WebThread.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/ios/CrashReporterSupportSoftLink.h: Remove.
  • platform/ios/CrashReporterSupportSoftLink.mm: Remove.
  • platform/ios/wak/WebCoreThread.mm:

(WebThreadEnable):

  • platform/spi/ios/CrashReporterSupportSPI.h: Remove.
5:16 PM Changeset in webkit [218369] by Matt Lewis
  • 14 edits
    2 deletes in trunk

Unreviewed, rolling out r218365.

The revision caused API timeouts on all builds.

Reverted changeset:

"[WebRTC] Removing a MediaStreamTrack from a MediaStream
reports no recording to WebKit clients"
https://bugs.webkit.org/show_bug.cgi?id=173398
http://trac.webkit.org/changeset/218365

4:49 PM Changeset in webkit [218368] by Simon Fraser
  • 10 edits in trunk/Source/WebCore

Allow use of Layout* TextStream operators in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=173440

Reviewed by Zalan Bujtas.

Export TextStream& operator<< for LayoutPoint, LayoutSize and LayoutRect so that
WebKit2 can log them.

Use #pragma once in these geometry headers.

  • platform/graphics/FloatPoint.h:
  • platform/graphics/FloatRect.h:
  • platform/graphics/FloatSize.h:
  • platform/graphics/IntPoint.h:
  • platform/graphics/IntRect.h:
  • platform/graphics/IntSize.h:
  • platform/graphics/LayoutPoint.h:
  • platform/graphics/LayoutRect.h:
  • platform/graphics/LayoutSize.h:
4:34 PM Changeset in webkit [218367] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Modern media controls tests error in Button.js
https://bugs.webkit.org/show_bug.cgi?id=173439

Patch by Antoine Quint <Antoine Quint> on 2017-06-15
Reviewed by Dean Jackson.

Tests would sometime yield an error when commit() would be called and the _imageSource
ivar hadn't been set. To more safely commit the mask image when it's loaded, we now use
a markDirtyProperty() call and a commitProperty() override to ensure that we cover the
case where we want to commit the mask image, and for other commits not to have to worry
about the mask image being defined.

  • Modules/modern-media-controls/controls/button.js:

(Button.prototype.commitProperty):
(Button.prototype._updateImage):
(Button.prototype.commit): Deleted.

3:54 PM Changeset in webkit [218366] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked webrtc/video-unmute.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=172879

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
3:48 PM Changeset in webkit [218365] by jer.noble@apple.com
  • 14 edits
    2 adds in trunk

[WebRTC] Removing a MediaStreamTrack from a MediaStream reports no recording to WebKit clients
https://bugs.webkit.org/show_bug.cgi?id=173398
<rdar://problem/32592961>

Reviewed by Eric Carlson.

Source/WebCore:

API Test: Tests/WebKit2/MediaStreamTrackDetached.mm

Move the definition of a MediaStream as a MediaProducer from the stream itself to its constituent
MediaStreamTracks. This ensures that, even if a MediaStreamTrack is removed from its stream, the
document (and thus the clients) are notified that media capture is still occurring.

Though MediaStream is no longer a MediaProducer, it still uses the MediaProducer's state concept
to determine when to fire events. However it's mediaState() implementation will be moved into
MediaStreamTrack, and will instead simply bitwise-or together each of it's track's mediaState().

The MediaStream notifies the document that its state has changed asynchronously, so do the same
for MediaStreamTrack (which reduces the number of calls to the client when changes all occur
during a single run loop).

Because the MediaStreamTrackPrivate may be started externally (not by the MediaStreamTrack directly),
add a new client method that notifies observers when the track has been started, and the
MediaStreamTrack will use this notification to update the document with it's new mediaState().

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::MediaStream):
(WebCore::MediaStream::~MediaStream):
(WebCore::MediaStream::mediaState):
(WebCore::MediaStream::statusDidChange):
(WebCore::MediaStream::characteristicsChanged):
(WebCore::MediaStream::pageMutedStateDidChange): Deleted.

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

(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::~MediaStreamTrack):
(WebCore::MediaStreamTrack::pageMutedStateDidChange):
(WebCore::MediaStreamTrack::mediaState):
(WebCore::MediaStreamTrack::trackStarted):
(WebCore::MediaStreamTrack::configureTrackRendering):
(WebCore::MediaStreamTrack::stop):
(WebCore::MediaStreamTrack::document):

  • Modules/mediastream/MediaStreamTrack.h:

(WebCore::MediaStreamTrack::source):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/mediastream/MediaStreamPrivate.cpp:

(WebCore::MediaStreamPrivate::trackStarted):

  • platform/mediastream/MediaStreamPrivate.h:
  • platform/mediastream/MediaStreamTrackPrivate.cpp:

(WebCore::MediaStreamTrackPrivate::sourceStarted):

  • platform/mediastream/MediaStreamTrackPrivate.h:
  • platform/mediastream/RealtimeMediaSource.cpp:

(WebCore::RealtimeMediaSource::start):

  • platform/mediastream/RealtimeMediaSource.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/MediaStreamTrackDetached.mm: Added.

(-[MediaStreamTrackDetachedUIDelegate _webView:requestUserMediaAuthorizationForDevices:url:mainFrameURL:decisionHandler:]):
(-[MediaStreamTrackDetachedUIDelegate _webView:checkUserMediaPermissionForURL:mainFrameURL:frameIdentifier:decisionHandler:]):
(-[MediaStreamTrackDetachedUIDelegate _webView:mediaCaptureStateDidChange:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2/mediastreamtrack-detached.html: Added.
3:26 PM Changeset in webkit [218364] by sbarati@apple.com
  • 3 edits in trunk/LayoutTests

[iOS wk2] Layout Test perf/object-keys.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=171617
<rdar://problem/31977874>

Reviewed by Mark Lam.

Increase the starting magnitude of the object-keys test to
remove variance from having objects with a very few number of keys.

  • perf/object-keys.html:
  • platform/ios-wk2/TestExpectations:
3:24 PM Changeset in webkit [218363] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.3.5

Tag Safari-603.3.5.

3:23 PM Changeset in webkit [218362] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-604.1.25.3.2

Tag Safari-604.1.25.3.2.

3:20 PM Changeset in webkit [218361] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-604.1.25.4.2

Tag Safari-604.1.25.4.2.

3:08 PM Changeset in webkit [218360] by Matt Lewis
  • 3 edits in trunk/LayoutTests

Marked webrtc/datachannel/basic.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=172922

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
  • platform/wk2/TestExpectations:
2:50 PM Changeset in webkit [218359] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Search highlight doesn't show up in resources when paused
https://bugs.webkit.org/show_bug.cgi?id=173438
<rdar://problem/32800114>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-06-15
Reviewed by Matt Baker.

  • UserInterface/Views/TextEditor.js:

(WebInspector.TextEditor.prototype.revealPosition.revealAndHighlightLine):
Previously we were bailing if executionLineNumber was NaN, which means that when
we were paused we were incorrectly disabling highlights in any resource that does
not have the active callframe. Relax this and make it match the intended behavior
of only disabling highlights if the highlight line matches the execution line.

2:38 PM Changeset in webkit [218358] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit/win

[Win] WebKit shouldn't include the forwarding header of WebKit itself
https://bugs.webkit.org/show_bug.cgi?id=173352

Patch by Fujii Hironori <Fujii Hironori> on 2017-06-15
Reviewed by Alex Christensen.

  • WebKitPrefix.h: Include WebKit.h of DerivedSources/WebKit instead of DerivedSources/ForwardingHeaders.
2:35 PM Changeset in webkit [218357] by Konstantin Tokarev
  • 2 edits in trunk

[cmake] ADD_PRECOMPILED_HEADER should append OBJECT_DEPENDS, not overwrite it
https://bugs.webkit.org/show_bug.cgi?id=173428

Reviewed by Michael Catanzaro.

Right now, if any of source files that are passed to
ADD_PRECOMPILED_HEADER have non-empty OBJECT_DEPENDS property (e.g.
changed with ADD_SOURCE_DEPENDENCIES call), its value is lost.

  • Source/cmake/WebKitMacros.cmake:
2:26 PM Changeset in webkit [218356] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Uncaught Exception: TypeError: null is not an object (evaluating 'this.contentBrowser.contentViewForRepresentedObject')
https://bugs.webkit.org/show_bug.cgi?id=173425
<rdar://problem/32744172>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-06-15
Reviewed by Devin Rousso.

  • UserInterface/Views/ContentBrowserTabContentView.js:

(WebInspector.ContentBrowserTabContentView.prototype.shown):
Reorder slightly so the NavigationSidebar has its ContentBrowser set
before anyone tries to restore views in the sidebar.

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WebInspector.DebuggerSidebarPanel.prototype.showDefaultContentView):
Try to select a script/resource content view instead of nothing.

(WebInspector.DebuggerSidebarPanel.prototype.saveStateToCookie):
When a resource is selected, save it using the normal path.

  • UserInterface/Views/NetworkSidebarPanel.js:

(WebInspector.NetworkSidebarPanel.prototype.canShowDifferentContentView):
Remove a reference to an unused / stale member variable.

2:19 PM Changeset in webkit [218355] by clopez@igalia.com
  • 2 edits in trunk/Tools

REGRESSION(r218344): [WPE] Thousands of layout test crashes
https://bugs.webkit.org/show_bug.cgi?id=173433

Unreviewed.

  • wpe/jhbuild.modules: Revert the update of WPEBackend-mesa.
1:25 PM Changeset in webkit [218354] by matthew_hanson@apple.com
  • 1 edit in branches/safari-604.1.25.4-branch/Source/WebCore/page/Settings.in

Follow-up fix for rdar://problem/32621736

1:22 PM Changeset in webkit [218353] by matthew_hanson@apple.com
  • 1 edit in branches/safari-604.1.25.3-branch/Source/WebCore/page/Settings.in

Follow-up fix for rdar://problem/32621736

1:15 PM Changeset in webkit [218352] by Jonathan Bedard
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix after r218336

  • platform/spi/cocoa/PassKitSPI.h: Add missing #ifdefs for Internal builds.
1:08 PM Changeset in webkit [218351] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

Ensure we only log changes to the ScriptedAnimationController suspended state in debug builds
https://bugs.webkit.org/show_bug.cgi?id=173423

Patch by Antoine Quint <Antoine Quint> on 2017-06-15
Reviewed by Tim Horton.

We added logging for when the suspended state of the scripted animation controller would change in
webkit.org/b/173326. It was meant to only be enabled in debug builds and we actually did the wrong
thing and enabled it in non-debug builds.

We also added a setting that wasn't used and that we are removing here.

  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::logSuspendCount):

  • page/Settings.in:
  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::resetToConsistentState):
(WebCore::InternalSettings::shouldLogScritedAnimationControllerSuspensionChange): Deleted.
(WebCore::InternalSettings::setShouldLogScritedAnimationControllerSuspensionChange): Deleted.

  • testing/InternalSettings.h:
  • testing/InternalSettings.idl:
1:02 PM Changeset in webkit [218350] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Add logging to MachineStackMarker to try to diagnose crashes in the wild
https://bugs.webkit.org/show_bug.cgi?id=173427

Reviewed by Mark Lam.

This patch adds some logging to the MachineStackMarker constructor
to help figure out where we are seeing crashes. Since macOS does
not support os_log_info my hope is that if we set all the callee
save registers before making any calls in the C++ code we can
figure out which calls is the source of the crash. We also, set
all the caller save registers before returning in case some
weirdness is happening in the Heap constructor.

This logging should not matter from a performance perspective. We
only create MachineStackMarkers when we are creating a new VM,
which is already expensive.

  • heap/MachineStackMarker.cpp:

(JSC::MachineThreads::MachineThreads):

12:49 PM Changeset in webkit [218349] by Chris Dumez
  • 2 edits in trunk/Source/WTF

Fix typo in XPCSPI.h
https://bugs.webkit.org/show_bug.cgi?id=173426

Reviewed by Alex Christensen.

We should check if xpc_release is defined before defining it,
not xpc_retain.

  • wtf/spi/darwin/XPCSPI.h:
12:37 PM Changeset in webkit [218348] by Yusuke Suzuki
  • 10 edits
    1 add in trunk

[JSC] Implement Object.assign in C++
https://bugs.webkit.org/show_bug.cgi?id=173414

Reviewed by Saam Barati.

JSTests:

  • stress/object-assign-string-first.js: Added.

(shouldBe):
(source.get Symbol):
(source.get 1):
(source.get cocoa):

Source/JavaScriptCore:

Implementing Object.assign in JS is not so good compared to C++ version because,

  1. JS version allocates JS array for object own keys. And we allocate JSString / Symbol for each key.

But basically, they can be handled as UniquedStringImpl in C++. Allocating these cells are wasteful.

  1. While implementing builtins in JS offers some good type speculation chances, Object.assign is inherently super polymorphic.

So JS's type profile doesn't help well.

  1. We have a chance to introduce various fast path for Object.assign in C++.

This patch moves implementation from JS to C++. It achieves the above (1) and (2). (3) is filed in [1].

We can see 1.65x improvement in SixSpeed object-assign.es6.

baseline patched

object-assign.es6 643.3253+-8.0521 389.1075+-8.8840 definitely 1.6533x faster

[1]: https://bugs.webkit.org/show_bug.cgi?id=173416

  • builtins/ObjectConstructor.js:

(entries):
(assign): Deleted.

  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::putInline):

  • runtime/JSCell.h:
  • runtime/JSCellInlines.h:

(JSC::JSCell::putInline):

  • runtime/JSObject.cpp:

(JSC::JSObject::put):

  • runtime/JSObject.h:
  • runtime/JSObjectInlines.h:

(JSC::JSObject::putInlineForJSObject):
(JSC::JSObject::putInline): Deleted.

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorAssign):

12:29 PM Changeset in webkit [218347] by ddkilzer@apple.com
  • 5 edits in trunk/Source/WebCore

Build fix: [iOS] Generate a simulated crash when the WebThread starts in MobileSafari
<https://webkit.org/b/173386>
<rdar://problem/32776426>

  • platform/ios/CrashReporterSupportSoftLink.h:
  • platform/ios/CrashReporterSupportSoftLink.mm:
  • platform/ios/wak/WebCoreThread.mm:

(WebThreadEnable): Log to the console on iOS Simulator.

  • platform/spi/ios/CrashReporterSupportSPI.h:
  • CrashReporterSupport.h is not available on iOS Simulator, so restrict to iOS hardware only.
12:00 PM Changeset in webkit [218346] by Matt Lewis
  • 2 edits
    2 deletes in trunk/LayoutTests

REGRESSION (r218228): Layout Test editing/execCommand/strikethrough-uses-strike-tag.html is failing
https://bugs.webkit.org/show_bug.cgi?id=173375

Unreviewed test gardening.

Reverted an incorrect baseline and skipped a test causing test failures.

  • TestExpectations:
  • platform/mac-wk1/editing/execCommand/strikethrough-uses-strike-tag-expected.txt: Removed.
  • platform/win/editing/execCommand/strikethrough-uses-strike-tag-expected.txt: Removed.
11:59 AM Changeset in webkit [218345] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Unreviewed, rolling out r218318.

Seems to have caused an 11% PLT regression. Rolling out to
confirm.

Reverted changeset:

"Don't always recalc the style of display: contents elements."
https://bugs.webkit.org/show_bug.cgi?id=172753
http://trac.webkit.org/changeset/218318

11:44 AM Changeset in webkit [218344] by clopez@igalia.com
  • 5 edits in trunk/Tools

[WPE] The run-minibrowser script should allow to execute also a WPE launcher
https://bugs.webkit.org/show_bug.cgi?id=173061

Reviewed by Žan Doberšek.

Launch dyz <https://github.com/Igalia/dyz> with the script
run-minibrowser for the wpe port. It is now built as part of the
WPE dependencies with JHBuild.

  • Scripts/run-minibrowser:
  • Scripts/webkitdirs.pm:

(launcherPath):
(launcherName):

  • wpe/install-dependencies: Luajit is needed for building dyz.
  • wpe/jhbuild.modules: Add dyz and update the revision for WPEBackend-mesa.
11:11 AM Changeset in webkit [218343] by Wenson Hsieh
  • 25 edits in trunk

Using -[WebItemProviderPasteboard setItemProviders:] to swap out item providers before a drop breaks item provider loading
https://bugs.webkit.org/show_bug.cgi?id=173338
<rdar://problem/32777720>

Reviewed by Tim Horton.

Source/WebCore:

Currently, replacing the list of UIItemProviders right before a drop is handled results in
WebItemProviderPasteboard failing to load non-"public.content"-conformant items. This is because DragController
computes and sends to the UI process a list of UTIs to load (preferredTypeIdentifiers: one type identifier for
each item provider in WebItemProviderPasteboard). However, if the list of item providers changes immediately
before a drop is performed, WebItemProviderPasteboard will get into an inconsistent state where it has a
different number of preferred type identifiers to load than available item providers. This causes
WebItemProviderPasteboard to fail when choosing what type identifiers to load from each item provider.

To fix this, we instead have the web process propagate a list of supported type identifiers to the UI process,
which is a property of only the drop destination rather than both the destination and item providers. When
performing a drop, we then use the current item providers on WebItemProviderPasteboard to consult this list of
supported type identifiers to resolve our list of preferred type identifiers to load.

Globally renames updatePreferredTypeIdentifiers to updateSupportedTypeIdentifiers.

Tests:
DataInteractionTests.ExternalSourceOverrideDropFileUpload
DataInteractionTests.ExternalSourceOverrideDropInsertURL

  • page/DragController.cpp:

(WebCore::DragController::dragEnteredOrUpdated):
(WebCore::DragController::updateSupportedTypeIdentifiersForDragHandlingMethod):
(WebCore::DragController::updatePreferredTypeIdentifiersForDragHandlingMethod): Deleted.

  • page/DragController.h:
  • page/mac/DragControllerMac.mm:

(WebCore::DragController::updateSupportedTypeIdentifiersForDragHandlingMethod):
(WebCore::DragController::updatePreferredTypeIdentifiersForDragHandlingMethod): Deleted.

  • platform/DragData.h:
  • platform/PasteboardStrategy.h:
  • platform/PlatformPasteboard.h:
  • platform/ios/AbstractPasteboard.h:
  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::updateSupportedTypeIdentifiers):
(WebCore::PlatformPasteboard::updatePreferredTypeIdentifiers): Deleted.

  • platform/ios/WebItemProviderPasteboard.mm:

(-[WebItemProviderPasteboard init]):
(-[WebItemProviderPasteboard updateSupportedTypeIdentifiers:]):
(-[WebItemProviderPasteboard setItemProviders:]):
(-[WebItemProviderPasteboard typeIsAppropriateForSupportedTypes:]):
(-[WebItemProviderPasteboard typeIdentifierToLoadForRegisteredTypeIdentfiers:]):

Add logic to resolve preferred type identifiers from an item providers list of registered type identifiers.
This formerly existed on DragData.

(-[WebItemProviderPasteboard doAfterLoadingProvidedContentIntoFileURLs:synchronousTimeout:]):
(-[WebItemProviderPasteboard updatePreferredTypeIdentifiers:]): Deleted.

  • platform/mac/DragDataMac.mm:

Remove preferred type identifier resolution logic from DragData.

(WebCore::typeIsAppropriateForSupportedTypes): Deleted.
(WebCore::DragData::updatePreferredTypeIdentifiers): Deleted.

Source/WebKit/mac:

Rename updatePreferredTypeIdentifiers to updateSupportedTypeIdentifiers.

  • WebCoreSupport/WebPlatformStrategies.h:
  • WebCoreSupport/WebPlatformStrategies.mm:

(WebPlatformStrategies::updateSupportedTypeIdentifiers):
(WebPlatformStrategies::updatePreferredTypeIdentifiers): Deleted.

Source/WebKit2:

Rename updatePreferredTypeIdentifiers to updateSupportedTypeIdentifiers. Also, introduce
_webView:willPerformDropWithSession: as SPI on WKUIDelegate.

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::updateSupportedTypeIdentifiers):
(WebKit::WebPasteboardProxy::updatePreferredTypeIdentifiers): Deleted.

  • UIProcess/WebPasteboardProxy.h:
  • UIProcess/WebPasteboardProxy.messages.in:
  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::updateSupportedTypeIdentifiers):
(WebKit::WebPlatformStrategies::updatePreferredTypeIdentifiers): Deleted.

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Tools:

Adds new unit tests to ensure that -_webView:willPerformDropWithSession: can be used to filter out drag items
used by WebKit when handling a drop. These tests ensure that WebItemProviderPasteboard is still able to handle
these remaining items on drop.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/ios/DataInteractionSimulator.h:
  • TestWebKitAPI/ios/DataInteractionSimulator.mm:

Add -overridePerformDropBlock, which can be set to provide custom handling of dropped items.

(-[DataInteractionSimulator _webView:willPerformDropWithSession:]):

10:49 AM Changeset in webkit [218342] by commit-queue@webkit.org
  • 96 edits in trunk/Source/WebCore

[WebIDL] Replace general inclusion of JSDOMConvert.h with inclusion of individual converter files to reduce unnecessary inclusion
https://bugs.webkit.org/show_bug.cgi?id=173392

Patch by Sam Weinig <sam@webkit.org> on 2017-06-15
Reviewed by Tim Horton.

Stop including the umbrella header JSDOMConvert.h in every generated bindings and
instead only include the specific converter needed. Then, go around and add all the
now missing includes that used to be obtained transitively.

  • Modules/indexeddb/IDBRequest.cpp:
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:
  • Modules/plugins/QuickTimePluginReplacement.mm:
  • bindings/js/IDBBindingUtilities.cpp:
  • bindings/js/JSCSSStyleDeclarationCustom.cpp:
  • bindings/js/JSCryptoAlgorithmDictionary.cpp:
  • bindings/js/JSCustomElementInterface.cpp:
  • bindings/js/JSCustomElementRegistryCustom.cpp:
  • bindings/js/JSDOMConvertBase.h:
  • bindings/js/JSDOMConvertInterface.h:
  • bindings/js/JSDOMConvertRecord.h:
  • bindings/js/JSDOMConvertSequences.h:
  • bindings/js/JSDOMConvertUnion.h:
  • bindings/js/JSDOMGlobalObject.h:
  • bindings/js/JSDOMWindowCustom.cpp:
  • bindings/js/JSDOMWindowProperties.cpp:
  • bindings/js/JSDocumentCustom.cpp:
  • bindings/js/JSErrorHandler.cpp:
  • bindings/js/JSEventListener.cpp:
  • bindings/js/JSHTMLCanvasElementCustom.cpp:
  • bindings/js/JSHTMLDocumentCustom.cpp:
  • bindings/js/JSHistoryCustom.cpp:
  • bindings/js/JSMessageEventCustom.cpp:

(WebCore::JSMessageEvent::data):

  • bindings/js/JSMockContentFilterSettingsCustom.cpp:
  • bindings/js/JSMutationCallback.cpp:
  • bindings/js/JSXMLHttpRequestCustom.cpp:

(WebCore::JSXMLHttpRequest::retrieveResponse):

  • bindings/js/ScriptGlobalObject.cpp:
  • bindings/js/SerializedScriptValue.cpp:
  • bindings/scripts/CodeGeneratorJS.pm:

(AddToIncludesForIDLType):
(GetJSCAttributesForAttribute):
(GenerateEnumerationHeader):
(GenerateEnumerationImplementation):
(GenerateEnumerationImplementationContent):
(GenerateEnumerationsImplementationContent):
(GenerateEnumerationHeaderContent):
(GenerateEnumerationsHeaderContent):
(GenerateDictionaryHeaderContent):
(GenerateDictionariesHeaderContent):
(GenerateDictionaryImplementationContent):
(GenerateDictionariesImplementationContent):
(GenerateHeader):
(GeneratePropertiesHashTable):
(GenerateOverloadDispatcher):
(GenerateImplementation):
(GenerateAttributeGetterDefinition):
(GenerateSerializerDefinition):
(GenerateDictionaryHeader):
(JSValueToNative):
(NativeToJSValueUsingReferences):
(NativeToJSValueUsingPointers):
(IsValidContextForNativeToJSValue):
(NativeToJSValue):
(GenerateConstructorDefinition):
(ComputeFunctionSpecial):

  • bindings/scripts/test/JS/JSMapLike.cpp:
  • bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
  • bindings/scripts/test/JS/JSTestCEReactions.cpp:
  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
  • bindings/scripts/test/JS/JSTestCallbackFunction.cpp:
  • bindings/scripts/test/JS/JSTestCallbackFunctionRethrow.cpp:
  • bindings/scripts/test/JS/JSTestCallbackFunctionWithTypedefs.cpp:
  • bindings/scripts/test/JS/JSTestCallbackInterface.cpp:
  • bindings/scripts/test/JS/JSTestCallbackInterface.h:
  • bindings/scripts/test/JS/JSTestDOMJIT.cpp:
  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:
  • bindings/scripts/test/JS/JSTestEventConstructor.h:
  • bindings/scripts/test/JS/JSTestEventTarget.cpp:
  • bindings/scripts/test/JS/JSTestException.cpp:
  • bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:
  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestInterface.cpp:
  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
  • bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
  • bindings/scripts/test/JS/JSTestNode.cpp:
  • bindings/scripts/test/JS/JSTestNode.h:
  • bindings/scripts/test/JS/JSTestObj.cpp:
  • bindings/scripts/test/JS/JSTestObj.h:
  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
  • bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.h:
  • bindings/scripts/test/JS/JSTestSerialization.cpp:
  • bindings/scripts/test/JS/JSTestSerialization.h:
  • bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
  • bindings/scripts/test/JS/JSTestSerializationInherit.h:
  • bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
  • bindings/scripts/test/JS/JSTestSerializationInheritFinal.h:
  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
  • bindings/scripts/test/JS/JSTestStandaloneDictionary.cpp:
  • bindings/scripts/test/JS/JSTestStandaloneDictionary.h:
  • bindings/scripts/test/JS/JSTestStandaloneEnumeration.h:
  • bindings/scripts/test/JS/JSTestTypedefs.cpp:
  • bindings/scripts/test/JS/JSTestVoidCallbackFunction.cpp:
  • dom/MouseEvent.cpp:
  • html/HTMLPlugInImageElement.cpp:
10:05 AM Changeset in webkit [218341] by matthew_hanson@apple.com
  • 1 edit in branches/safari-604.1.25.4-branch/Source/WebCore/page/Settings.in

rdar://problem/32621736

10:05 AM Changeset in webkit [218340] by matthew_hanson@apple.com
  • 7 edits in branches/safari-604.1.25.4-branch/Source

Versioning.

10:05 AM Changeset in webkit [218339] by ddkilzer@apple.com
  • 3 edits
    3 adds in trunk/Source/WebCore

[iOS] Generate a simulated crash when the WebThread starts in MobileSafari
<https://webkit.org/b/173386>
<rdar://problem/32776426>

Reviewed by Andy Estes.

  • WebCore.xcodeproj/project.pbxproj: Add new files to project.
  • platform/ios/CrashReporterSupportSoftLink.h: Add. The using

statement is so that we don't have to write
WebCore::SimulateCrash() in WebCoreThread.mm since it's
functions are not defined inside a WebCore namespace. I also
kept the 'pid' argument despite the style checker warning
because it matches the internal method definition.

  • platform/ios/CrashReporterSupportSoftLink.mm: Add.
  • platform/ios/wak/WebCoreThread.mm: Sort headers. Soft link to

CrashReporterSupport.framework.
(WebThreadEnable): Generate a simulated crash log if the
WebThread ever starts in MobileSafari.

  • platform/spi/ios/CrashReporterSupportSPI.h: Add. The header

isn't safe to include in C++ source, so wrap the import in
extern "C" macros.

10:01 AM Changeset in webkit [218338] by matthew_hanson@apple.com
  • 1 edit in branches/safari-604.1.25.3-branch/Source/WebCore/page/Settings.in

rdar://problem/32621736

10:01 AM Changeset in webkit [218337] by pvollan@apple.com
  • 2 edits in trunk/Tools

[Win] Crash in accessibility layout test.
https://bugs.webkit.org/show_bug.cgi?id=173401

Reviewed by Brent Fulgham.

We should not manually release the punkVal IUnknown member in a _variant_t object, since the punkVal
member will be automatically released when the _variant_t object goes out of scope if the vt member
does not equal VT_UNKNOWN | VT_BYREF.
See https://msdn.microsoft.com/en-us/library/windows/desktop/ms221165(v=vs.85).aspx.

  • DumpRenderTree/win/AccessibilityUIElementWin.cpp:

(AccessibilityUIElement::titleUIElement):

9:57 AM Changeset in webkit [218336] by Jonathan Bedard
  • 4 edits in trunk/Source/WebCore

Build WebKit with High Sierra (Seed 1)
https://bugs.webkit.org/show_bug.cgi?id=173371

Reviewed by Andy Estes.

  • crypto/CommonCryptoUtilities.h: Added ccRSAPSSPadding to CCAsymmetricPading enum.
  • platform/spi/cocoa/AVKitSPI.h: Declare AVKit SPI used by WebKit in High Sierra.

(-[AVTouchBarPlaybackControlsControlling NS_ENUM]): Added AVTouchBarMediaSelectionOptionType
SPI used in WebPlaybackControlManager in High Sierra.

  • platform/spi/cocoa/PassKitSPI.h: Declare PassKit SPI used by WebKit in High Sierra.

(NS_ERROR_ENUM): Added PKPaymentErrorCode used in WebPayment in High Sierra.

9:24 AM Changeset in webkit [218335] by commit-queue@webkit.org
  • 9 edits
    2 adds in trunk

RTCPeerConnection returns RTCSessionDescription where RTCSessionDescriptionInit would be appropriate
https://bugs.webkit.org/show_bug.cgi?id=173118
<rdar://problem/32746761>

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

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/RTCPeerConnection-createOffer-expected.txt:

Source/WebCore:

Test: webrtc/createOfferAnswer.html

Making the promise return a RTCSessionDescription::Init instead of a RTCSessionDescription.
This aligns with the spec and is more optimal.

  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::createOfferSucceeded):
(WebCore::PeerConnectionBackend::createAnswerSucceeded):

  • Modules/mediastream/PeerConnectionBackend.h:
  • Modules/mediastream/RTCSessionDescription.idl:

LayoutTests:

  • fast/mediastream/RTCPeerConnection-setLocalDescription-offer-expected.txt:
  • fast/mediastream/RTCPeerConnection-setRemoteDescription-offer-expected.txt:
  • webrtc/createOfferAnswer-expected.txt: Added.
  • webrtc/createOfferAnswer.html: Added.
9:19 AM Changeset in webkit [218334] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Marked imported/w3c/web-platform-tests/dom/nodes/Document-constructor-svg.svg as skip.
https://bugs.webkit.org/show_bug.cgi?id=173333

Unreviewed test gardening.

9:14 AM Changeset in webkit [218333] by Konstantin Tokarev
  • 2 edits in trunk/Source/WTF

Implement FALLTHROUGH macro for compilers other than Clang
https://bugs.webkit.org/show_bug.cgi?id=173385

Reviewed by Alex Christensen.

FALLTHROUGH should be able to use [[gnu::fallthrough]] attribute of
GCC, and fallthrough? from C++17, whichever is available.

  • wtf/Compiler.h:
8:40 AM Changeset in webkit [218332] by Carlos Garcia Campos
  • 93 edits in trunk/Source/WebKit2

[GTK] Cleanup headers includes in GTK+ API files
https://bugs.webkit.org/show_bug.cgi?id=173415

Reviewed by Michael Catanzaro.

  • Remove WTFGType.h from WebKitPrivate.h and include it in all other files instead of WebKitPrivate if needed.
  • Stop including WebKitPrivate.h in all other private headers.
  • Remove all C API includes.
  • UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:
  • UIProcess/API/gtk/WebKitAuthenticationRequest.cpp:
  • UIProcess/API/gtk/WebKitAuthenticationRequestPrivate.h:
  • UIProcess/API/gtk/WebKitAutomationSession.cpp:
  • UIProcess/API/gtk/WebKitBackForwardList.cpp:
  • UIProcess/API/gtk/WebKitBackForwardListItem.cpp:
  • UIProcess/API/gtk/WebKitColorChooser.h:
  • UIProcess/API/gtk/WebKitColorChooserRequest.cpp:
  • UIProcess/API/gtk/WebKitContextMenu.cpp:
  • UIProcess/API/gtk/WebKitContextMenuItem.cpp:
  • UIProcess/API/gtk/WebKitContextMenuItemPrivate.h:
  • UIProcess/API/gtk/WebKitContextMenuPrivate.h:
  • UIProcess/API/gtk/WebKitCookieManager.cpp:
  • UIProcess/API/gtk/WebKitCookieManagerPrivate.h:
  • UIProcess/API/gtk/WebKitCredentialPrivate.h:
  • UIProcess/API/gtk/WebKitDownload.cpp:
  • UIProcess/API/gtk/WebKitDownloadClient.cpp:
  • UIProcess/API/gtk/WebKitDownloadPrivate.h:
  • UIProcess/API/gtk/WebKitEditorState.cpp:
  • UIProcess/API/gtk/WebKitEditorStatePrivate.h:
  • UIProcess/API/gtk/WebKitError.cpp:
  • UIProcess/API/gtk/WebKitFaviconDatabase.cpp:
  • UIProcess/API/gtk/WebKitFileChooserRequest.cpp:
  • UIProcess/API/gtk/WebKitFileChooserRequestPrivate.h:
  • UIProcess/API/gtk/WebKitFindController.cpp:
  • UIProcess/API/gtk/WebKitFormClient.cpp:
  • UIProcess/API/gtk/WebKitFormSubmissionRequest.cpp:
  • UIProcess/API/gtk/WebKitFormSubmissionRequestPrivate.h:
  • UIProcess/API/gtk/WebKitGeolocationPermissionRequest.cpp:
  • UIProcess/API/gtk/WebKitGeolocationPermissionRequestPrivate.h:
  • UIProcess/API/gtk/WebKitHitTestResult.cpp:
  • UIProcess/API/gtk/WebKitHitTestResultPrivate.h:
  • UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequest.cpp:
  • UIProcess/API/gtk/WebKitInstallMissingMediaPluginsPermissionRequestPrivate.h:
  • UIProcess/API/gtk/WebKitJavascriptResult.cpp:
  • UIProcess/API/gtk/WebKitJavascriptResultPrivate.h:
  • UIProcess/API/gtk/WebKitMimeInfoPrivate.h:
  • UIProcess/API/gtk/WebKitNavigationActionPrivate.h:
  • UIProcess/API/gtk/WebKitNavigationPolicyDecision.cpp:
  • UIProcess/API/gtk/WebKitNavigationPolicyDecisionPrivate.h:
  • UIProcess/API/gtk/WebKitNetworkProxySettings.cpp:
  • UIProcess/API/gtk/WebKitNetworkProxySettingsPrivate.h:
  • UIProcess/API/gtk/WebKitNotification.cpp:
  • UIProcess/API/gtk/WebKitNotificationPermissionRequest.cpp:
  • UIProcess/API/gtk/WebKitNotificationPermissionRequestPrivate.h:
  • UIProcess/API/gtk/WebKitNotificationPrivate.h:
  • UIProcess/API/gtk/WebKitOptionMenu.cpp:
  • UIProcess/API/gtk/WebKitPlugin.cpp:
  • UIProcess/API/gtk/WebKitPluginPrivate.h:
  • UIProcess/API/gtk/WebKitPolicyDecision.cpp:
  • UIProcess/API/gtk/WebKitPolicyDecisionPrivate.h:
  • UIProcess/API/gtk/WebKitPrintCustomWidget.cpp:
  • UIProcess/API/gtk/WebKitPrintCustomWidgetPrivate.h:
  • UIProcess/API/gtk/WebKitPrintOperation.cpp:
  • UIProcess/API/gtk/WebKitPrivate.h:
  • UIProcess/API/gtk/WebKitResponsePolicyDecision.cpp:
  • UIProcess/API/gtk/WebKitResponsePolicyDecisionPrivate.h:
  • UIProcess/API/gtk/WebKitSecurityManager.cpp:
  • UIProcess/API/gtk/WebKitSecurityOrigin.cpp:
  • UIProcess/API/gtk/WebKitSecurityOriginPrivate.h:
  • UIProcess/API/gtk/WebKitSettings.cpp:
  • UIProcess/API/gtk/WebKitUIClient.cpp:
  • UIProcess/API/gtk/WebKitURIRequest.cpp:
  • UIProcess/API/gtk/WebKitURIResponse.cpp:
  • UIProcess/API/gtk/WebKitURISchemeRequest.cpp:
  • UIProcess/API/gtk/WebKitURISchemeRequestPrivate.h:
  • UIProcess/API/gtk/WebKitUserContent.cpp:
  • UIProcess/API/gtk/WebKitUserContentManager.cpp:
  • UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:
  • UIProcess/API/gtk/WebKitUserMediaPermissionRequestPrivate.h:
  • UIProcess/API/gtk/WebKitWebContext.cpp:
  • UIProcess/API/gtk/WebKitWebContextPrivate.h:
  • UIProcess/API/gtk/WebKitWebInspector.cpp:
  • UIProcess/API/gtk/WebKitWebInspectorPrivate.h:
  • UIProcess/API/gtk/WebKitWebResource.cpp:
  • UIProcess/API/gtk/WebKitWebResourcePrivate.h:
  • UIProcess/API/gtk/WebKitWebView.cpp:
  • UIProcess/API/gtk/WebKitWebViewBase.cpp:
  • UIProcess/API/gtk/WebKitWebViewBaseAccessible.cpp:
  • UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
  • UIProcess/API/gtk/WebKitWebViewPrivate.h:
  • UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:
  • UIProcess/API/gtk/WebKitWebsiteDataManagerPrivate.h:
  • UIProcess/API/gtk/WebKitWebsiteDataPrivate.h:
  • UIProcess/API/gtk/WebKitWindowProperties.cpp:
  • UIProcess/API/gtk/WebKitWindowPropertiesPrivate.h:
  • WebProcess/InjectedBundle/API/gtk/WebKitFrame.cpp:
  • WebProcess/InjectedBundle/API/gtk/WebKitScriptWorld.cpp:
  • WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:
  • WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:
  • WebProcess/InjectedBundle/API/gtk/WebKitWebHitTestResult.cpp:
  • WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:
8:37 AM Changeset in webkit [218331] by Carlos Garcia Campos
  • 6 edits in trunk

[GTK] Do not use the C API in WebGtkExtensionManager
https://bugs.webkit.org/show_bug.cgi?id=173408

Reviewed by Michael Catanzaro.

.:

Update exported symbol signature.

  • Source/cmake/gtksymbols.filter:

Source/WebKit2:

Use the C++ API instead.

  • WebProcess/gtk/WebGtkExtensionManager.cpp:

(WebKit::parseUserData):
(WebKit::WebGtkExtensionManager::initialize):

  • WebProcess/gtk/WebGtkExtensionManager.h:
  • WebProcess/gtk/WebGtkInjectedBundleMain.cpp:

(WKBundleInitialize):

8:15 AM Changeset in webkit [218330] by matthew_hanson@apple.com
  • 6 edits
    1 copy
    1 move
    3 adds in branches/safari-603-branch

Cherry-pick r218300. rdar://problem/31971362

7:03 AM Changeset in webkit [218329] by Adrian Perez de Castro
  • 3 edits in trunk/Source/WebKit2

[GTK] Stop using GtkAction in WebPopupMenuProxyGtk
https://bugs.webkit.org/show_bug.cgi?id=173417

Reviewed by Carlos Garcia Campos.

This gets rid of GtkAction in WebPopupMenuProxyGtk, which was deprecated in GTK+ 3.10
and will not be available in GTK+ 4.0. Using GtkMenuItem directly makes populating
long menus slightly faster, which can be noticeable in lower-end machines.

  • UIProcess/gtk/WebPopupMenuProxyGtk.cpp:

(WebKit::WebPopupMenuProxyGtk::populatePopupMenu):
(WebKit::WebPopupMenuProxyGtk::menuItemActivated):
(WebKit::WebPopupMenuProxyGtk::createGtkActionForMenuItem): Deleted.

  • UIProcess/gtk/WebPopupMenuProxyGtk.h:

(WebKit::WebPopupMenuProxyGtk::setCurrentlySelectedMenuItem):
Instantiate GtkMenuItem objects directly when populating the menu.

5:56 AM Changeset in webkit [218328] by magomez@igalia.com
  • 2 edits in trunk/LayoutTests

Unreviewed GTK+ gardening. Update expectations of several tests failing after r218320.

  • platform/gtk/TestExpectations:
2:58 AM Changeset in webkit [218327] by Claudio Saavedra
  • 2 edits in trunk/LayoutTests

[WPE] dom storage gardening

Unreviewed gardening.

Two dom storage tests marked as failing have been passing always,
so remove them.

  • platform/wpe/TestExpectations:
2:49 AM Changeset in webkit [218326] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

Unreviewed. Fix copy-paste error in GTK+ WEBKIT_JAVASCRIPT_ERROR definition.

The print one was copied there.

  • UIProcess/API/gtk/WebKitError.h:
2:41 AM Changeset in webkit [218325] by Carlos Garcia Campos
  • 14 edits
    9 adds in trunk

[GTK] Add API to allow overriding popup menus
https://bugs.webkit.org/show_bug.cgi?id=172905

Reviewed by Michael Catanzaro.

Source/WebKit2:

The GTK+ API uses GTK+ for the default implementation of several UI elements like the file chooser, print dialog,
color picker, context menu, etc. but in all those cases it allows to override the default implementation. It's
not possible to override the popup menu used for select elements. This patch adds WebKitOptionMenu to represent
a select dropdown menu. It's passed as an argument of the new signal WebKitWebView::show-option-menu, and
contains WebKitOptionMenuItem elements representing the items to be displayed.

  • PlatformGTK.cmake:
  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::createPopupMenuProxy): Create a WebKitPopupMenu.

  • UIProcess/API/gtk/WebKitOptionMenu.cpp: Added.

(webkitOptionMenuCreate):
(webkit_option_menu_get_n_items):
(webkit_option_menu_get_item):
(webkit_option_menu_select_item):
(webkit_option_menu_activate_item):
(webkit_option_menu_close):

  • UIProcess/API/gtk/WebKitOptionMenu.h: Added.
  • UIProcess/API/gtk/WebKitOptionMenuItem.cpp: Added.

(webkit_option_menu_item_copy):
(webkit_option_menu_item_free):
(webkit_option_menu_item_get_label):
(webkit_option_menu_item_get_tooltip):
(webkit_option_menu_item_is_group_label):
(webkit_option_menu_item_is_group_child):
(webkit_option_menu_item_is_enabled):
(webkit_option_menu_item_is_selected):

  • UIProcess/API/gtk/WebKitOptionMenuItem.h: Added.
  • UIProcess/API/gtk/WebKitOptionMenuItemPrivate.h: Added.

(_WebKitOptionMenuItem::_WebKitOptionMenuItem):

  • UIProcess/API/gtk/WebKitOptionMenuPrivate.h: Added.
  • UIProcess/API/gtk/WebKitPopupMenu.cpp: Added.

(WebKit::WebKitPopupMenu::WebKitPopupMenu):
(WebKit::menuCloseCallback):
(WebKit::WebKitPopupMenu::showPopupMenu): Call webkitWebViewShowOptionMenu() falling back to default
implementation if the user didn't handle the signal.
(WebKit::WebKitPopupMenu::hidePopupMenu):
(WebKit::WebKitPopupMenu::cancelTracking):
(WebKit::WebKitPopupMenu::selectItem):
(WebKit::WebKitPopupMenu::activateItem):

  • UIProcess/API/gtk/WebKitPopupMenu.h: Added.
  • UIProcess/API/gtk/WebKitWebView.cpp:

(webkit_web_view_class_init):
(webkitWebViewShowOptionMenu): Emit WebKitWebView::show-option-menu.

  • UIProcess/API/gtk/WebKitWebView.h:
  • UIProcess/API/gtk/WebKitWebViewPrivate.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Add new symbols.
  • UIProcess/API/gtk/docs/webkit2gtk-4.0.types: Add new get_type functions.
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml: Add new sections.
  • UIProcess/API/gtk/webkit2.h: Add new public headers.
  • UIProcess/gtk/WebPopupMenuProxyGtk.cpp:

(WebKit::WebPopupMenuProxyGtk::WebPopupMenuProxyGtk): Do not create the GtkMenu in constructor.
(WebKit::WebPopupMenuProxyGtk::showPopupMenu): Create the GtkMenu and connect to the signals here.
(WebKit::WebPopupMenuProxyGtk::hidePopupMenu): Return early if the Gtk hasn't been shown.

  • UIProcess/gtk/WebPopupMenuProxyGtk.h: Make constructor and webview protected.

Tools:

Add a unit test to check the new API.

  • TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt:
  • TestWebKitAPI/Tests/WebKit2Gtk/TestOptionMenu.cpp: Added.

(OptionMenuTest::OptionMenuTest):
(OptionMenuTest::~OptionMenuTest):
(OptionMenuTest::destroyMenu):
(OptionMenuTest::showOptionMenuCallback):
(OptionMenuTest::menuCloseCallback):
(OptionMenuTest::showOptionMenu):
(OptionMenuTest::clickAtPositionAndWaitUntilOptionMenuShown):
(OptionMenuTest::close):
(OptionMenuTest::activateItem):
(OptionMenuTest::selectItem):
(testOptionMenuSimple):
(testOptionMenuGroups):
(testOptionMenuActivate):
(testOptionMenuSelect):
(beforeAll):
(afterAll):

2:19 AM Changeset in webkit [218324] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[GTK] Use API::InjectedBundle::ResourceLoadClient in WebKitWebPage
https://bugs.webkit.org/show_bug.cgi?id=173364

Reviewed by Michael Catanzaro.

Instead of the C API.

  • WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:

(webkitWebPageCreate):
(didInitiateLoadForResource): Deleted.
(willSendRequestForFrame): Deleted.
(didReceiveResponseForResource): Deleted.
(didReceiveContentLengthForResource): Deleted.
(didFinishLoadForResource): Deleted.
(didFailLoadForResource): Deleted.

2:10 AM Changeset in webkit [218323] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[GTK] Use API::InjectedBundle::Client in WebKitWebExtension
https://bugs.webkit.org/show_bug.cgi?id=173358

Reviewed by Michael Catanzaro.

Instead of the C API.

  • WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:

(webkitWebExtensionCreate):
(webkitWebExtensionPageCreated): Deleted.
(webkitWebExtensionPageDestroy): Deleted.
(webkitWebExtensionDidReceiveMessage): Deleted.
(didCreatePage): Deleted.
(willDestroyPage): Deleted.
(didReceiveMessage): Deleted.
(didReceiveMessageToPage): Deleted.

1:31 AM Changeset in webkit [218322] by Carlos Garcia Campos
  • 4 edits in trunk/Source/WebKit2

[GTK] Use API::NotificationProvider
https://bugs.webkit.org/show_bug.cgi?id=173312

Reviewed by Žan Doberšek.

Also cleanup a bit the WebKitNotificationProvider implementation, it doesn't need to be refcounted.

  • UIProcess/API/gtk/WebKitNotificationProvider.cpp:

(WebKitNotificationProvider::WebKitNotificationProvider):
(WebKitNotificationProvider::~WebKitNotificationProvider):
(WebKitNotificationProvider::show):
(WebKitNotificationProvider::clearNotifications):
(WebKitNotificationProvider::notificationPermissions):
(WebKitNotificationProvider::setNotificationPermissions):

  • UIProcess/API/gtk/WebKitNotificationProvider.h:
  • UIProcess/API/gtk/WebKitWebContext.cpp:

(webkitWebContextConstructed):
(addOriginToMap):
(webkit_web_context_initialize_notification_permissions):

1:20 AM Changeset in webkit [218321] by Carlos Garcia Campos
  • 9 edits
    1 copy in trunk/Source/WebKit2

Add API::InjectedBundle::ResourceLoadClient
https://bugs.webkit.org/show_bug.cgi?id=173362

Reviewed by Alex Christensen.

It will be used by the GTK+ port instead of the C API.

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/APIInjectedBundlePageResourceLoadClient.h: Copied from Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.h.

(API::InjectedBundle::ResourceLoadClient::didInitiateLoadForResource):
(API::InjectedBundle::ResourceLoadClient::willSendRequestForFrame):
(API::InjectedBundle::ResourceLoadClient::didReceiveResponseForResource):
(API::InjectedBundle::ResourceLoadClient::didReceiveContentLengthForResource):
(API::InjectedBundle::ResourceLoadClient::didFinishLoadForResource):
(API::InjectedBundle::ResourceLoadClient::didFailLoadForResource):
(API::InjectedBundle::ResourceLoadClient::shouldCacheResponse):
(API::InjectedBundle::ResourceLoadClient::shouldUseCredentialStorage):

  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKBundlePageSetResourceLoadClient):

  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(setUpResourceLoadClient):
(-[WKWebProcessPlugInBrowserContextController setLoadDelegate:]):

  • WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp:

(WebKit::InjectedBundlePageResourceLoadClient::InjectedBundlePageResourceLoadClient):
(WebKit::InjectedBundlePageResourceLoadClient::didInitiateLoadForResource):
(WebKit::InjectedBundlePageResourceLoadClient::willSendRequestForFrame):
(WebKit::InjectedBundlePageResourceLoadClient::didReceiveResponseForResource):
(WebKit::InjectedBundlePageResourceLoadClient::didReceiveContentLengthForResource):
(WebKit::InjectedBundlePageResourceLoadClient::didFinishLoadForResource):
(WebKit::InjectedBundlePageResourceLoadClient::didFailLoadForResource):
(WebKit::InjectedBundlePageResourceLoadClient::shouldCacheResponse):
(WebKit::InjectedBundlePageResourceLoadClient::shouldUseCredentialStorage):

  • WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.h:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::assignIdentifierToInitialRequest):
(WebKit::WebFrameLoaderClient::dispatchWillSendRequest):
(WebKit::WebFrameLoaderClient::shouldUseCredentialStorage):
(WebKit::WebFrameLoaderClient::dispatchDidReceiveResponse):
(WebKit::WebFrameLoaderClient::dispatchDidReceiveContentLength):
(WebKit::WebFrameLoaderClient::dispatchDidFinishLoading):
(WebKit::WebFrameLoaderClient::dispatchDidFailLoading):
(WebKit::WebFrameLoaderClient::willCacheResponse):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setInjectedBundleResourceLoadClient):
(WebKit::WebPage::close):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::injectedBundleResourceLoadClient):

12:18 AM Changeset in webkit [218320] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[WinCairo] DumpRenderTree.cpp: error C3861: 'CFURLCacheCreate': identifier not found
https://bugs.webkit.org/show_bug.cgi?id=173399

Patch by Fujii Hironori <Fujii Hironori> on 2017-06-15
Reviewed by Per Arne Vollan.

OpenCFLite doesn't have CFURLCacheCreate and CFURLCacheSetSharedURLCache.
Curl port needs to do nothing because libcurl doesn't have disk cache.

  • DumpRenderTree/win/DumpRenderTree.cpp:

(prepareConsistentTestingEnvironment): Call CFURLCacheCreate() and
CFURLCacheSetSharedURLCache() only if USE(CFURLCONNECTION).

12:02 AM Changeset in webkit [218319] by Carlos Garcia Campos
  • 9 edits
    1 copy in trunk/Source/WebKit2

Add API::InjectedBundle::Client
https://bugs.webkit.org/show_bug.cgi?id=173357

Reviewed by Alex Christensen.

It will be used by the GTK+ port instead of the C API.

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/APIInjectedBundleBundleClient.h: Copied from Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleClient.h.

(API::InjectedBundle::Client::didCreatePage):
(API::InjectedBundle::Client::willDestroyPage):
(API::InjectedBundle::Client::didInitializePageGroup):
(API::InjectedBundle::Client::didReceiveMessage):
(API::InjectedBundle::Client::didReceiveMessageToPage):

  • WebProcess/InjectedBundle/API/c/WKBundle.cpp:

(WKBundleSetClient):

  • WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:

(webkitWebExtensionPageCreated): Deleted.
(webkitWebExtensionPageDestroy): Deleted.
(webkitWebExtensionDidReceiveMessage): Deleted.
(didCreatePage): Deleted.
(willDestroyPage): Deleted.
(didReceiveMessage): Deleted.
(didReceiveMessageToPage): Deleted.

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::setClient):
(WebKit::InjectedBundle::didCreatePage):
(WebKit::InjectedBundle::willDestroyPage):
(WebKit::InjectedBundle::didInitializePageGroup):
(WebKit::InjectedBundle::didReceiveMessage):
(WebKit::InjectedBundle::didReceiveMessageToPage):

  • WebProcess/InjectedBundle/InjectedBundle.h:
  • WebProcess/InjectedBundle/InjectedBundleClient.cpp:

(WebKit::InjectedBundleClient::InjectedBundleClient):
(WebKit::InjectedBundleClient::didCreatePage):
(WebKit::InjectedBundleClient::willDestroyPage):
(WebKit::InjectedBundleClient::didInitializePageGroup):
(WebKit::InjectedBundleClient::didReceiveMessage):
(WebKit::InjectedBundleClient::didReceiveMessageToPage):

  • WebProcess/InjectedBundle/InjectedBundleClient.h:

Jun 14, 2017:

11:58 PM Changeset in webkit [218318] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Don't always recalc the style of display: contents elements.
https://bugs.webkit.org/show_bug.cgi?id=172753

Patch by Emilio Cobos Álvarez <ecobos@igalia.com> on 2017-06-15
Reviewed by Antti Koivisto.

No new tests (no functionality change). This only removes an
inefficiency.

  • dom/Element.cpp:

(WebCore::Element::existingComputedStyle):

  • dom/Element.h:
  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateRenderTree):
(WebCore::RenderTreeUpdater::updateElementRenderer):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::resolveElement):
(WebCore::Style::TreeResolver::createAnimatedElementUpdate):
(WebCore::Style::shouldResolveElement):
(WebCore::Style::TreeResolver::resolveComposedTree):

11:23 PM Changeset in webkit [218317] by ap@apple.com
  • 2 edits in trunk/LayoutTests

REGRESSION: trac.webkit.org/export returns Content-Type application/xhtml+xml for .html files
https://bugs.webkit.org/show_bug.cgi?id=173191

Add a MIME type to one test to check if this changes the behavior.

  • http/tests/security/contentSecurityPolicy/allow-favicon.html: Added property svn:mime-type.
10:57 PM Changeset in webkit [218316] by mitz@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

[Cocoa] Objective-C class whose name begins with an underscore can’t be exported to JavaScript
https://bugs.webkit.org/show_bug.cgi?id=168578

Reviewed by Geoff Garen.

  • API/JSWrapperMap.mm:

(allocateConstructorForCustomClass): Updated for change to forEachProtocolImplementingProtocol.
(-[JSObjCClassInfo allocateConstructorAndPrototype]): Ditto.
(-[JSWrapperMap classInfoForClass:]): If the class name begins with an underscore, check if

it defines conformance to a JSExport-derived protocol and if so, avoid using the
superclass as a substitute as we’d normally do.

  • API/ObjcRuntimeExtras.h:

(forEachProtocolImplementingProtocol): Added a "stop" argument to the block to let callers

bail out.

  • API/tests/JSExportTests.mm:

(+[JSExportTests classNamePrefixedWithUnderscoreTest]): New test for this.
(runJSExportTests): Run new test.

10:38 PM Changeset in webkit [218315] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

WKErrorGetErrorCode should not return the API::Error enum values directly
https://bugs.webkit.org/show_bug.cgi?id=173367

Reviewed by Alex Christensen.

Even if the values are the same, we should use a switch to ensure we return the C API values, and not all
API::Error enum values are exposed in the C API.

  • Shared/API/c/WKErrorRef.cpp:

(WKErrorGetErrorCode):

9:01 PM Changeset in webkit [218314] by tpopela@redhat.com
  • 2 edits in trunk/Tools

[GTK] integer expression expected if running Tools/gtk/install-dependencies
https://bugs.webkit.org/show_bug.cgi?id=173356

Reviewed by Michael Catanzaro.

Use the correct operator to compare the strings.

  • gtk/install-dependencies:
8:36 PM Changeset in webkit [218313] by commit-queue@webkit.org
  • 10 edits in trunk

Rebaseline media/modern-media-controls/media-documents
https://bugs.webkit.org/show_bug.cgi?id=173394

Patch by Antoine Quint <Antoine Quint> on 2017-06-14
Reviewed by Dean Jackson.

Source/WebCore:

We found two issues related to media documents while rebaselining the dedicated tests.

First, we needed to expose the --inline-controls-bar-height CSS variable to <video>
elements in media documents that are actually showing an audio UI. Previously we would
only expose the variable to <audio> elements.

Also, due to webkit.org/b/173387, we would fail to identify certain media documents as
video because the videoTracks weren't set yet when the "loadedmetadata" event would be
triggered. So now we also look at the videoWidth and videoHeight properties, which should
provide accurate information in the "loadedmetadata" event handler.

  • Modules/modern-media-controls/controls/media-controls.css:

(:host(audio), :host(video.media-document.audio), *):
(:host(audio), *): Deleted.

  • Modules/modern-media-controls/media/media-controller.js:

(MediaController.prototype.get isAudio):

LayoutTests:

  • media/modern-media-controls/media-documents/click-on-video-should-not-pause-expected.txt:
  • media/modern-media-controls/media-documents/click-on-video-should-not-pause.html:
  • media/modern-media-controls/media-documents/media-document-audio-mac-sizing-expected.txt:
  • media/modern-media-controls/media-documents/media-document-audio-mac-sizing.html:
  • platform/ios-simulator/TestExpectations:
  • platform/mac/TestExpectations:
8:31 PM Changeset in webkit [218312] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, suppress invalid register alloation validation assertion in 32 bit part 2
https://bugs.webkit.org/show_bug.cgi?id=172421

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileArrayIndexOf):

7:36 PM Changeset in webkit [218311] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

animations-paused-in-background-page.html and animated-svg-image-removed-from-document-paused.html fail after r218284
https://bugs.webkit.org/show_bug.cgi?id=173393

Reviewed by Simon Fraser.

Testing cares really about whether the animation has initiated.

  • platform/graphics/Image.h:

(WebCore::Image::animationPending):

  • testing/Internals.cpp:

(WebCore::Internals::isImageAnimating):

7:15 PM Changeset in webkit [218310] by matthew_hanson@apple.com
  • 7 edits in tags/Safari-604.1.26.1/Source

Versioning.

7:02 PM Changeset in webkit [218309] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-604.1.26.1

New tag.

6:57 PM Changeset in webkit [218308] by matthew_hanson@apple.com
  • 1 move in tags/Safari-604.1.26

New tag.

6:57 PM Changeset in webkit [218307] by matthew_hanson@apple.com
  • 1 delete in tags/Safari-604.1.26

Delete tag.

6:57 PM Changeset in webkit [218306] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-604.1.26-tmp

New tag.

6:44 PM Changeset in webkit [218305] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Pretty print / type info / code coverage buttons disappear after switching tabs
https://bugs.webkit.org/show_bug.cgi?id=162515
<rdar://problem/28455322>

Reviewed by Joseph Pecoraro.

Each ContentView owns a list of NavigationItems. When the ContentView moves across
Tabs (ContentBrowsers) it removes its NavigationItems from the old Tab's NavigationBar
and adds them to the new Tab's NavigationBar. When switching back to the original tab
the ContentView is restored, but its NavigationItems are not carried back.

  • UserInterface/Views/ContentBrowser.js:

(WebInspector.ContentBrowser.prototype._updateContentViewNavigationItems):
Add a forceUpdate parameter that is needed when navigationItems are unchanged but navigationBar is
different.

(WebInspector.ContentBrowser.prototype._removeAllNavigationItems):
Remove navigation items even when their navigationBar is no longer a current navigationBar,
e.g. a navigationBar of the previous tab.

(WebInspector.ContentBrowser.prototype._contentViewNavigationItemsDidChange):

  • UserInterface/Views/ContentViewContainer.js:

(WebInspector.ContentViewContainer.prototype._takeOwnershipOfContentView):

6:33 PM Changeset in webkit [218304] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-604.1.26

Tag Safari-604.1.26.

6:33 PM Changeset in webkit [218303] by matthew_hanson@apple.com
  • 1 delete in tags/Safari-604.1.26

Delete tag.

6:29 PM Changeset in webkit [218302] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-604.1.26/trunk

Tag Safari-604.1.26.

6:27 PM Changeset in webkit [218301] by matthew_hanson@apple.com
  • 7 edits in branches/safari-604.1.25.3-branch/Source

Versioning.

6:01 PM Changeset in webkit [218300] by dino@apple.com
  • 6 edits
    1 copy
    1 move
    3 adds in trunk

Restrict filtered painting across cross-origin boundaries with transforms
https://bugs.webkit.org/show_bug.cgi?id=173388
<rdar://problem/27362159>

Reviewed by Simon Fraser.

Source/WebCore:

Make sure all cases of LayerPaintingInfo maintain the security
flag. In this case there was only one new place, and since
everything is scalar, there was no need for a real copy constructor.

Test: http/tests/css/filters-on-iframes-transform.html

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::paintLayerByApplyingTransform): Make sure the cross
origin flag is used in the call to paint the layer children.

  • rendering/RenderLayer.h: Fix some typos.

LayoutTests:

New test that checks painting across a origin boundary when in
a transformed container. Also clean up the existing test
to make it smfr-compliant (green is good, red is bad).

  • http/tests/css/filters-on-iframes-expected.html:
  • http/tests/css/filters-on-iframes-transform-expected.html: Added.
  • http/tests/css/filters-on-iframes-transform.html: Added.
  • http/tests/css/filters-on-iframes.html:
  • http/tests/css/resources/references-external-green.html: Copied from LayoutTests/http/tests/css/resources/references-external.html.
  • http/tests/css/resources/references-external-red.html: Renamed from LayoutTests/http/tests/css/resources/references-external.html.
  • http/tests/css/resources/solid-green.html: Added.
5:39 PM Changeset in webkit [218299] by commit-queue@webkit.org
  • 21 edits
    1 delete in trunk

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

API test fails on iOS (Requested by alexchristensen on
#webkit).

Reverted changeset:

"Add SPI for immediate injection of user scripts"
https://bugs.webkit.org/show_bug.cgi?id=173342
http://trac.webkit.org/changeset/218285

5:36 PM Changeset in webkit [218298] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: SVG files and favicon don't display properly
https://bugs.webkit.org/show_bug.cgi?id=173389
<rdar://problem/32774281>

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/ImageResourceContentView.css:

(.content-view.resource.image img):
Don't set a min-width as it has odd interactions with flexbox.

5:24 PM Changeset in webkit [218297] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

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

"The previous rollout of r218263, r218265, and r218266 by
mlewis13 on bug 173383 missed r218267 and broke the GTK+
build" (Requested by clopez_ on #webkit).

Reverted changeset:

"[GTK] Use API::InjectedBundle::ResourceLoadClient in
WebKitWebPage"
https://bugs.webkit.org/show_bug.cgi?id=173364
http://trac.webkit.org/changeset/218267

4:39 PM Changeset in webkit [218296] by matthew_hanson@apple.com
  • 7 edits in trunk/Source

Versioning.

3:49 PM Changeset in webkit [218295] by Chris Dumez
  • 11 edits
    1 add in trunk

WebKit falsely reports that a web process is unresponsive if you close a page shortly after stopping a load
https://bugs.webkit.org/show_bug.cgi?id=173384
<rdar://problem/32723779>

Reviewed by Dan Bernstein.

Source/WebKit2:

WebKit falsely reports that a web process is unresponsive if you close a page shortly after stopping a load.
This is because WebPageProxy::stopLoad() starts the responsiveness timer and expects a StopResponsinessTimer
IPC from the WebProcess to stop the timer so we don't report the process as unresponsive. However, if
WebPageProxy::close() is called before the StopResponsinessTimer IPC has been received, the page will remove
itself from the message receiver map and we would no longer be able to receive the StopResponsinessTimer
IPC and stop the timer, even if the WebProcess sent it to the UIProcess.

To address the issue, we now send the IPC Message to the WebProcessProxy instead of the WebPageProxy, so we
can stop the responsiveness timer, even after the WebPageProxy has been called.

  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::stopResponsivenessTimer):

  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.messages.in:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::SendStopResponsivenessTimer::~SendStopResponsivenessTimer):
(WebKit::WebPage::tryClose):
(WebKit::WebPage::loadRequest):
(WebKit::WebPage::loadDataImpl):
(WebKit::WebPage::stopLoading):
(WebKit::WebPage::reload):
(WebKit::WebPage::goForward):
(WebKit::WebPage::goBack):
(WebKit::WebPage::goToBackForwardItem):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/ResponsivenessTimer.cpp: Added.

Add API test coverage.

  • TestWebKitAPI/cocoa/UtilitiesCocoa.mm:

(TestWebKitAPI::Util::sleep):
Update implementation of Util::sleep() so that we actually run the run loop.
Otherwise, we don't process events while sleeping.

3:19 PM Changeset in webkit [218294] by commit-queue@webkit.org
  • 16 edits
    2 deletes in trunk/Source/WebKit2

Unreviewed, rolling out r218263, r218265, and r218266.
https://bugs.webkit.org/show_bug.cgi?id=173383

"These revisions caused multiple API test to Time out on
macOS" (Requested by mlewis13 on #webkit).

Reverted changesets:

"Add API::InjectedBundle::Client"
https://bugs.webkit.org/show_bug.cgi?id=173357
http://trac.webkit.org/changeset/218263

"[GTK] Use API::InjectedBundle::Client in WebKitWebExtension"
https://bugs.webkit.org/show_bug.cgi?id=173358
http://trac.webkit.org/changeset/218265

"Add API::InjectedBundle::ResourceLoadClient"
https://bugs.webkit.org/show_bug.cgi?id=173362
http://trac.webkit.org/changeset/218266

3:17 PM Changeset in webkit [218293] by mitz@apple.com
  • 9 copies
    1 add in releases/Apple/Safari Technology Preview 33

Added a tag for Safari Technology Preview release 33.

2:06 PM Changeset in webkit [218292] by Brent Fulgham
  • 4 edits in trunk/Source/WebKit2

[WK2][iOS] Remove dead-code "import "removed-dev-nodes.sb” from sandboxes (173378)
https://bugs.webkit.org/show_bug.cgi?id=173378
<rdar://problem/32773230>

Reviewed by Alexey Proskuryakov.

Clean up the sandboxes to remove a couple of dead functions (and imports):

  1. Remove the import "removed-dev-nodes.sb" from the sandbox, since this file is now empty.
  2. Also remove the call to "instruments-support" as this is a no-op function in modern iOS.
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Databases.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.Networking.sb:
  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
1:47 PM Changeset in webkit [218291] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

Video flashes black when switching back to a tab https://www.apple.com/homepod/
https://bugs.webkit.org/show_bug.cgi?id=173377

Reviewed by Eric Carlson.

Previously, we had set the background color of the video layer to black in order to make the rect
occupied by the HTMLMediaElement fully opaque. This worked around a graphics corruption bug. Since
then, the code in RenderVideo::foregroundIsKnownToBeOpaqueInRect(...) has been fixed to fully account
for whether the HTMLMediaElement has a valid frame to display, making the black layer background
unnecessary.

Remove all the instances where we were setting the background color of the video layer to black.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerLayer):

  • platform/graphics/avfoundation/objc/VideoFullscreenLayerManager.mm:

(WebCore::VideoFullscreenLayerManager::setVideoLayer):
(WebCore::VideoFullscreenLayerManager::setVideoFullscreenLayer):

1:15 PM Changeset in webkit [218290] by jfbastien@apple.com
  • 1 edit
    3 deletes in trunk/JSTests

WebAssembly: remove empty test files

1:12 PM Changeset in webkit [218289] by matthew_hanson@apple.com
  • 4 edits
    3 deletes in tags/Safari-604.1.26

Revert r218157. rdar://problem/32554450

1:12 PM Changeset in webkit [218288] by matthew_hanson@apple.com
  • 36 edits
    13 deletes in tags/Safari-604.1.26

Revert r218161. rdar://problem/21125708

1:01 PM Changeset in webkit [218287] by Matt Lewis
  • 36 edits
    13 deletes in trunk

Unreviewed, rolling out r218161.

Introduced bot API test failures and Layout Test Failures.

Reverted changeset:

"[Cocoa] Expand system-ui to include every item in the Core
Text cascade list"
https://bugs.webkit.org/show_bug.cgi?id=173043
http://trac.webkit.org/changeset/218161

1:00 PM Changeset in webkit [218286] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-604.1.26

Tag Safari-604.1.26.

12:51 PM Changeset in webkit [218285] by commit-queue@webkit.org
  • 21 edits
    1 add in trunk

Add SPI for immediate injection of user scripts
https://bugs.webkit.org/show_bug.cgi?id=173342
<rdar://problem/29202285>

Patch by Alex Christensen <achristensen@webkit.org> on 2017-06-14
Reviewed by Brady Eidson.

Source/WebCore:

The new SPI is WKUserContentController._addUserScriptImmediately.
It is covered by new API tests.

  • page/Frame.cpp:

(WebCore::Frame::injectUserScripts):
(WebCore::Frame::injectUserScriptImmediately):
Move injection functionality to allow us to call it directly from the new SPI.

  • page/Frame.h:
  • page/Page.cpp:

(WebCore::Page::forEachPage):

  • page/Page.h:

Source/WebKit2:

  • UIProcess/API/C/WKPageGroup.cpp:

(WKPageGroupAddUserScript):

  • UIProcess/API/C/WKUserContentControllerRef.cpp:

(WKUserContentControllerAddUserScript):

  • UIProcess/API/Cocoa/WKUserContentController.mm:

(-[WKUserContentController addUserScript:]):
(-[WKUserContentController _addUserScriptImmediately:]):

  • UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:
  • UIProcess/UserContent/WebUserContentControllerProxy.cpp:

(WebKit::WebUserContentControllerProxy::addUserScript):

  • UIProcess/UserContent/WebUserContentControllerProxy.h:
  • WebProcess/UserContent/WebUserContentController.cpp:

(WebKit::WebUserContentController::addUserScripts):
(WebKit::WebUserContentController::addUserScriptInternal):
If we are to inject the script internally, inject it into the appropriate pages.
If we're injecting into the top frame only, there's no need to traverse the frame tree.
(WebKit::WebUserContentController::addUserScript):

  • WebProcess/UserContent/WebUserContentController.h:
  • WebProcess/UserContent/WebUserContentController.messages.in:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_cpuLimit):

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:

(waitForMessage):
(TEST):

12:36 PM Changeset in webkit [218284] by Alan Bujtas
  • 6 edits
    2 adds in trunk

Crash in WebCore::RenderStyle::colorIncludingFallback.
https://bugs.webkit.org/show_bug.cgi?id=173347
<rdar://problem/32675317>

Reviewed by Chris Dumez.

Source/WebCore:

Starting an SVG image animation synchronously might trigger recursive style recalc.
We should kick off the animation on a zero timer to reduce callstack complexity.

Test: svg/as-image/svg-css-animation.html

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::didAddClient):

  • platform/graphics/Image.cpp:

(WebCore::Image::Image):
(WebCore::Image::startAnimationAsynchronously):

  • platform/graphics/Image.h:

LayoutTests:

  • svg/animations/animated-svg-image-removed-from-document-paused.html: animations are not started synchronously anymore.
  • svg/as-image/svg-css-animation-expected.txt: Added.
  • svg/as-image/svg-css-animation.html: Added.
12:21 PM Changeset in webkit [218283] by Claudio Saavedra
  • 5 edits in trunk/Tools

Add WPE to the flakiness dashboard
https://bugs.webkit.org/show_bug.cgi?id=173365

Reviewed by Carlos Alberto Lopez Perez.

  • TestResultServer/static-dashboards/builders.jsonp:
  • TestResultServer/static-dashboards/flakiness_dashboard.js:
  • TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:

(resetGlobals):

  • TestResultServer/static-dashboards/loader_unittests.js:
12:20 PM Changeset in webkit [218282] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebKit2

Cherry-pick r218206. rdar://problem/32751025

12:20 PM Changeset in webkit [218281] by matthew_hanson@apple.com
  • 2 edits in branches/safari-603-branch/Source/WebKit2

Cherry-pick r218187. rdar://problem/32751025

12:20 PM Changeset in webkit [218280] by matthew_hanson@apple.com
  • 3 edits in branches/safari-603-branch/Source/WebKit/win

<rdar://problem/32585333> SUIsottaGasket 5G21 / Jordan 6A96: WebKit-7603.3.4 fails to build: error LNK2001: unresolved external symbol allowsPageCacheWithWindowOpener

12:20 PM Changeset in webkit [218279] by Matt Lewis
  • 1 edit
    2 moves
    1 add in trunk/LayoutTests

Fixed typo error for re-baselined editing/execCommand/strikethrough-uses-strike-tag.html.
https://bugs.webkit.org/show_bug.cgi?id=173375

Unreviewed test gardening.

  • platform/mac-wk1/editing/execCommand/strikethrough-uses-strike-tag-expected.txt: Renamed from LayoutTests/platform/mac-wk1/editing/exeCommand/strikethrough-uses-strike-tag-expected.txt.
  • platform/win/editing/execCommand/strikethrough-uses-strike-tag-expected.txt: Renamed from LayoutTests/platform/win/editing/exeCommand/strikethrough-uses-strike-tag-expected.txt.
12:17 PM Changeset in webkit [218278] by beidson@apple.com
  • 4 edits
    1 add in trunk

WKIconLoadingDelegate never gets asked about the default favicon if touch/touch-precomposed icons are in the <head>
<rdar://problem/32614328> and https://bugs.webkit.org/show_bug.cgi?id=173376

Reviewed by Alex Christensen.

Source/WebCore:

Covered by new API test

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::startIconLoading): Previously we applied the default favicon if the set of LinkIcons was empty.

Now, apply the default favicon if the set of LinkIcons contains no explicit favicon.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/IconLoadingDelegate.mm: Added.

(-[IconLoadingDelegate webView:shouldLoadIconWithParameters:completionHandler:]):
(-[IconLoadingSchemeHandler initWithData:mimeType:]):
(-[IconLoadingSchemeHandler webView:startURLSchemeTask:]):
(-[IconLoadingSchemeHandler webView:stopURLSchemeTask:]):
(TEST):

11:42 AM Changeset in webkit [218277] by Chris Dumez
  • 6 edits in trunk/LayoutTests

transitions/created-while-suspended.html is slow and flaky
https://bugs.webkit.org/show_bug.cgi?id=173370

Reviewed by Zalan Bujtas.

The test was waiting 8 seconds at the end, unnecessarily.
Instead, end the test as soon as the transition ends, after resuming
the animations.

  • TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
  • transitions/created-while-suspended-expected.txt:
  • transitions/created-while-suspended.html:
11:22 AM Changeset in webkit [218276] by timothy_horton@apple.com
  • 2 edits in trunk/Tools

WKContentViewEditingActions API test always fails
https://bugs.webkit.org/show_bug.cgi?id=173374

Reviewed by Wenson Hsieh.

  • TestWebKitAPI/Tests/WebKit2Cocoa/WKContentViewEditingActions.mm:

(TEST):
selectAll isn't working, because canPerformAction for selectAll returns NO
if selectionIsNone (which is true in the non-contenteditable case).
Instead, make use of r218180's test page, which knows how to select itself.
Also, reset the pasteboard at the beginning of the test to reduce confusion
(I landed the test broken because my simulator had the correct text
stuck in its pasteboard).

11:15 AM Changeset in webkit [218275] by Jonathan Bedard
  • 13 edits
    1 move in trunk

Configure screen scale for running layout tests on plus devices
https://bugs.webkit.org/show_bug.cgi?id=173319

Reviewed by Tim Horton.

Source/WebKit2:

  • Platform/spi/ios/UIKitSPI.h: Both this and UIKitTestSPI.h define UIKeyboard. Use

a define guard to prevent re-definition.

Tools:

  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Include UIKitTestSPI.h in project.
  • DumpRenderTree/mac/DumpRenderTree.mm:

(dumpRenderTree): Set screen scale to 2.0.

  • TestRunnerShared/spi/UIKitTestSPI.h: Copied from Tools/WebKitTestRunner/ios/UIKitSPI.h,

add _setScale for UIScreen.

  • WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: Include UIKitTestSPI.h in project.
  • WebKitTestRunner/cocoa/TestRunnerWKWebView.mm: Import UIKitTestSPI.h instead of UIKitSPI.h.
  • WebKitTestRunner/ios/HIDEventGenerator.h: Ditto.
  • WebKitTestRunner/ios/HIDEventGenerator.mm: Ditto.
  • WebKitTestRunner/ios/PlatformWebViewIOS.mm: Ditto.
  • WebKitTestRunner/ios/TestControllerIOS.mm: Ditto.

(WTR::TestController::platformInitialize): Set screen scale to 2.0.

  • WebKitTestRunner/ios/UIKitSPI.h: Moved to TestRunnerShared/spi/UIKitTestSPI.h.
  • WebKitTestRunner/ios/UIScriptControllerIOS.mm: Import UIKitTestSPI.h instead of UIKitSPI.h.
  • WebKitTestRunner/ios/mainIOS.mm: Ditto.
11:14 AM Changeset in webkit [218274] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Layout Test media/modern-media-controls/placard-support/placard-support-pip.html is failing
https://bugs.webkit.org/show_bug.cgi?id=173373

Patch by Antoine Quint <Antoine Quint> on 2017-06-14
Reviewed by Antoine Quint.

  • platform/mac/TestExpectations:
11:12 AM Changeset in webkit [218273] by Matt Lewis
  • 1 edit
    4 adds in trunk/LayoutTests

Rebaselined editing/execCommand/strikethrough-uses-strike-tag.html.
https://bugs.webkit.org/show_bug.cgi?id=173375

Unreviewed test gardening.

  • platform/mac-wk1/editing/exeCommand/strikethrough-uses-strike-tag-expected.txt: Added.
  • platform/win/editing/exeCommand/strikethrough-uses-strike-tag-expected.txt: Added.
11:09 AM Changeset in webkit [218272] by Claudio Saavedra
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION: 15 new jsc failures in WPE and GTK+
https://bugs.webkit.org/show_bug.cgi?id=173349

Reviewed by JF Bastien.

Recent changes to generateWasm.py are not accounted for from
CMake, which leads to WasmOps.h not being regenerated in partial
builds. Make generateWasm.py an additional dependency.

  • CMakeLists.txt:
11:07 AM Changeset in webkit [218271] by ap@apple.com
  • 3 edits
    4 adds in trunk/Tools

Add iOS 11 support to the bot watcher's dashboard
https://bugs.webkit.org/show_bug.cgi?id=173369

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/IOS11.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/IOS11@2x.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/IOS11Simulator.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Images/IOS11Simulator@2x.png: Added.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Dashboard.js:
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/Main.css:
10:58 AM Changeset in webkit [218270] by clopez@igalia.com
  • 4 edits
    1 copy in trunk/Tools

[GTK][WPE] Raise the timeout values for layout tests
https://bugs.webkit.org/show_bug.cgi?id=173368

Reviewed by Carlos Garcia Campos.

Raise the values to 15 seconds in Release builds and 30 seconds (2x) in Debug builds.
When running under valgrind a 10x multiplier is applied.

  • Scripts/webkitpy/port/gtk.py:

(GtkPort.default_timeout_ms):

  • Scripts/webkitpy/port/gtk_unittest.py:

(GtkPortTest.test_default_timeout_ms):

  • Scripts/webkitpy/port/wpe.py:

(WPEPort.default_timeout_ms):

  • Scripts/webkitpy/port/wpe_unittest.py: Copied from Tools/Scripts/webkitpy/port/gtk_unittest.py.

(WPEPortTest):
(WPEPortTest.make_port):
(WPEPortTest.test_default_timeout_ms):
(WPEPortTest.test_get_crash_log):

10:56 AM Changeset in webkit [218269] by achristensen@apple.com
  • 2 edits in trunk/Tools

Test persistent WKHTTPCookieStorages on iOS.
https://bugs.webkit.org/show_bug.cgi?id=173284

  • TestWebKitAPI/Tests/WebKit2Cocoa/WKHTTPCookieStore.mm:

(TEST):
Make the bots green again for now. There's still a problem, and I'll investigate and fix.

10:32 AM Changeset in webkit [218268] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

Flaky Test: media/media-source/media-source-unnecessary-seek-seeked.html
https://bugs.webkit.org/show_bug.cgi?id=173344

Reviewed by Eric Carlson.

Separate the concept of "the page has asked us to seek" from "we have asked the
media player to seek". When the media engine tells us its ready state has changed
after the page has requested a seek, but before the media element has asked its
player to perform the seek, we were previously firing a seeked event. Now we'll
check this new ivar and see that we aren't expecting a seek to finish yet.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::setReadyState):
(WebCore::HTMLMediaElement::finishSeek):
(WebCore::HTMLMediaElement::mediaPlayerTimeChanged):

  • html/HTMLMediaElement.h:
10:22 AM Changeset in webkit [218267] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[GTK] Use API::InjectedBundle::ResourceLoadClient in WebKitWebPage
https://bugs.webkit.org/show_bug.cgi?id=173364

Reviewed by Michael Catanzaro.

Instead of the C API.

  • WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:

(webkitWebPageCreate):
(didInitiateLoadForResource): Deleted.
(willSendRequestForFrame): Deleted.
(didReceiveResponseForResource): Deleted.
(didReceiveContentLengthForResource): Deleted.
(didFinishLoadForResource): Deleted.
(didFailLoadForResource): Deleted.

10:10 AM Changeset in webkit [218266] by Carlos Garcia Campos
  • 9 edits
    1 copy in trunk/Source/WebKit2

Add API::InjectedBundle::ResourceLoadClient
https://bugs.webkit.org/show_bug.cgi?id=173362

Reviewed by Alex Christensen.

It will be used by the GTK+ port instead of the C API.

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/APIInjectedBundlePageResourceLoadClient.h: Copied from Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.h.

(API::InjectedBundle::ResourceLoadClient::didInitiateLoadForResource):
(API::InjectedBundle::ResourceLoadClient::willSendRequestForFrame):
(API::InjectedBundle::ResourceLoadClient::didReceiveResponseForResource):
(API::InjectedBundle::ResourceLoadClient::didReceiveContentLengthForResource):
(API::InjectedBundle::ResourceLoadClient::didFinishLoadForResource):
(API::InjectedBundle::ResourceLoadClient::didFailLoadForResource):
(API::InjectedBundle::ResourceLoadClient::shouldCacheResponse):
(API::InjectedBundle::ResourceLoadClient::shouldUseCredentialStorage):

  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKBundlePageSetResourceLoadClient):

  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(setUpResourceLoadClient):
(-[WKWebProcessPlugInBrowserContextController setLoadDelegate:]):

  • WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp:

(WebKit::InjectedBundlePageResourceLoadClient::InjectedBundlePageResourceLoadClient):
(WebKit::InjectedBundlePageResourceLoadClient::didInitiateLoadForResource):
(WebKit::InjectedBundlePageResourceLoadClient::willSendRequestForFrame):
(WebKit::InjectedBundlePageResourceLoadClient::didReceiveResponseForResource):
(WebKit::InjectedBundlePageResourceLoadClient::didReceiveContentLengthForResource):
(WebKit::InjectedBundlePageResourceLoadClient::didFinishLoadForResource):
(WebKit::InjectedBundlePageResourceLoadClient::didFailLoadForResource):
(WebKit::InjectedBundlePageResourceLoadClient::shouldCacheResponse):
(WebKit::InjectedBundlePageResourceLoadClient::shouldUseCredentialStorage):

  • WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.h:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::assignIdentifierToInitialRequest):
(WebKit::WebFrameLoaderClient::dispatchWillSendRequest):
(WebKit::WebFrameLoaderClient::shouldUseCredentialStorage):
(WebKit::WebFrameLoaderClient::dispatchDidReceiveResponse):
(WebKit::WebFrameLoaderClient::dispatchDidReceiveContentLength):
(WebKit::WebFrameLoaderClient::dispatchDidFinishLoading):
(WebKit::WebFrameLoaderClient::dispatchDidFailLoading):
(WebKit::WebFrameLoaderClient::willCacheResponse):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setInjectedBundleResourceLoadClient):
(WebKit::WebPage::close):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::injectedBundleResourceLoadClient):

9:45 AM Changeset in webkit [218265] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[GTK] Use API::InjectedBundle::Client in WebKitWebExtension
https://bugs.webkit.org/show_bug.cgi?id=173358

Reviewed by Michael Catanzaro.

Instead of the C API.

  • WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:

(webkitWebExtensionCreate):
(webkitWebExtensionPageCreated): Deleted.
(webkitWebExtensionPageDestroy): Deleted.
(webkitWebExtensionDidReceiveMessage): Deleted.
(didCreatePage): Deleted.
(willDestroyPage): Deleted.
(didReceiveMessage): Deleted.
(didReceiveMessageToPage): Deleted.

9:40 AM Changeset in webkit [218264] by Matt Lewis
  • 4 edits
    3 deletes in trunk

Unreviewed, rolling out r218157.

This patch caused multiple API failures on iOS Simulator.

Reverted changeset:

"@font-face rules with invalid primary fonts never download
their secondary fonts"
https://bugs.webkit.org/show_bug.cgi?id=173138
http://trac.webkit.org/changeset/218157

9:37 AM Changeset in webkit [218263] by Carlos Garcia Campos
  • 9 edits
    1 copy in trunk/Source/WebKit2

Add API::InjectedBundle::Client
https://bugs.webkit.org/show_bug.cgi?id=173357

Reviewed by Alex Christensen.

It will be used by the GTK+ port instead of the C API.

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/APIInjectedBundleBundleClient.h: Copied from Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleClient.h.

(API::InjectedBundle::Client::didCreatePage):
(API::InjectedBundle::Client::willDestroyPage):
(API::InjectedBundle::Client::didInitializePageGroup):
(API::InjectedBundle::Client::didReceiveMessage):
(API::InjectedBundle::Client::didReceiveMessageToPage):

  • WebProcess/InjectedBundle/API/c/WKBundle.cpp:

(WKBundleSetClient):

  • WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:

(webkitWebExtensionPageCreated): Deleted.
(webkitWebExtensionPageDestroy): Deleted.
(webkitWebExtensionDidReceiveMessage): Deleted.
(didCreatePage): Deleted.
(willDestroyPage): Deleted.
(didReceiveMessage): Deleted.
(didReceiveMessageToPage): Deleted.

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::setClient):
(WebKit::InjectedBundle::didCreatePage):
(WebKit::InjectedBundle::willDestroyPage):
(WebKit::InjectedBundle::didInitializePageGroup):
(WebKit::InjectedBundle::didReceiveMessage):
(WebKit::InjectedBundle::didReceiveMessageToPage):

  • WebProcess/InjectedBundle/InjectedBundle.h:
  • WebProcess/InjectedBundle/InjectedBundleClient.cpp:

(WebKit::InjectedBundleClient::InjectedBundleClient):
(WebKit::InjectedBundleClient::didCreatePage):
(WebKit::InjectedBundleClient::willDestroyPage):
(WebKit::InjectedBundleClient::didInitializePageGroup):
(WebKit::InjectedBundleClient::didReceiveMessage):
(WebKit::InjectedBundleClient::didReceiveMessageToPage):

  • WebProcess/InjectedBundle/InjectedBundleClient.h:
9:24 AM Changeset in webkit [218262] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[GTK] Use API::InjectedBundleClient in WebKitInjectedBundleClient
https://bugs.webkit.org/show_bug.cgi?id=173351

Reviewed by Michael Catanzaro.

Instead of the C API.

  • UIProcess/API/gtk/WebKitInjectedBundleClient.cpp:

(attachInjectedBundleClientToContext):
(didReceiveWebViewMessageFromInjectedBundle): Deleted.
(didReceiveMessageFromInjectedBundle): Deleted.
(getInjectedBundleInitializationUserData): Deleted.

9:21 AM Changeset in webkit [218261] by Carlos Garcia Campos
  • 8 edits
    1 copy in trunk/Source/WebKit2

Add API::InjectedBundleClient
https://bugs.webkit.org/show_bug.cgi?id=173350

Reviewed by Alex Christensen.

It will be used by the GTK+ port instead of the C API.

  • UIProcess/API/APIInjectedBundleClient.h: Copied from Source/WebKit2/UIProcess/WebContextInjectedBundleClient.h.

(API::InjectedBundleClient::didReceiveMessageFromInjectedBundle):
(API::InjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle):
(API::InjectedBundleClient::getInjectedBundleInitializationUserData):

  • UIProcess/API/C/WKContext.cpp:

(WKContextSetInjectedBundleClient):

  • UIProcess/API/gtk/WebKitWebContext.cpp:

(webkitWebContextDispose):

  • UIProcess/WebContextInjectedBundleClient.cpp:

(WebKit::WebContextInjectedBundleClient::WebContextInjectedBundleClient):
(WebKit::WebContextInjectedBundleClient::didReceiveMessageFromInjectedBundle):
(WebKit::WebContextInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle):
(WebKit::WebContextInjectedBundleClient::getInjectedBundleInitializationUserData):

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

(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::setInjectedBundleClient):
(WebKit::WebProcessPool::createNewWebProcess):
(WebKit::WebProcessPool::handleMessage):
(WebKit::WebProcessPool::handleSynchronousMessage):

  • UIProcess/WebProcessPool.h:
  • WebKit2.xcodeproj/project.pbxproj:
9:17 AM Changeset in webkit [218260] by Carlos Garcia Campos
  • 8 edits
    1 copy in trunk/Source/WebKit2

Add API::NotificationProvider
https://bugs.webkit.org/show_bug.cgi?id=173309

Reviewed by Alex Christensen.

It will be used by the GTK+ port instead of the C API.

  • UIProcess/API/APINotificationProvider.h: Copied from Source/WebKit2/UIProcess/Notifications/WebNotificationProvider.h.

(API::NotificationProvider::show):
(API::NotificationProvider::cancel):
(API::NotificationProvider::didDestroyNotification):
(API::NotificationProvider::clearNotifications):
(API::NotificationProvider::addNotificationManager):
(API::NotificationProvider::removeNotificationManager):
(API::NotificationProvider::notificationPermissions):

  • UIProcess/API/C/WKNotificationManager.cpp:

(WKNotificationManagerSetProvider):

  • UIProcess/Notifications/WebNotificationManagerProxy.cpp:

(WebKit::WebNotificationManagerProxy::WebNotificationManagerProxy):
(WebKit::WebNotificationManagerProxy::setProvider):
(WebKit::WebNotificationManagerProxy::processPoolDestroyed):
(WebKit::WebNotificationManagerProxy::notificationPermissions):
(WebKit::WebNotificationManagerProxy::show):
(WebKit::WebNotificationManagerProxy::cancel):
(WebKit::WebNotificationManagerProxy::didDestroyNotification):
(WebKit::WebNotificationManagerProxy::clearNotifications):

  • UIProcess/Notifications/WebNotificationManagerProxy.h:
  • UIProcess/Notifications/WebNotificationProvider.cpp:

(WebKit::WebNotificationProvider::WebNotificationProvider):
(WebKit::WebNotificationProvider::show):
(WebKit::WebNotificationProvider::cancel):
(WebKit::WebNotificationProvider::didDestroyNotification):
(WebKit::WebNotificationProvider::addNotificationManager):
(WebKit::WebNotificationProvider::removeNotificationManager):
(WebKit::WebNotificationProvider::notificationPermissions):

  • UIProcess/Notifications/WebNotificationProvider.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::createNewWebProcess):

  • WebKit2.xcodeproj/project.pbxproj:
9:13 AM Changeset in webkit [218259] by Carlos Garcia Campos
  • 13 edits in trunk/Source/WebKit2

API clients should not be passed by value to the setters
https://bugs.webkit.org/show_bug.cgi?id=173266

Reviewed by Alex Christensen.

By using a rvalue reference we make it more explicit that the ownership is transferred and we avoid the
parameter construction.

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::setClient):

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/WebGeolocationManagerProxy.cpp:

(WebKit::WebGeolocationManagerProxy::setProvider):

  • UIProcess/WebGeolocationManagerProxy.h:
  • UIProcess/WebIconDatabase.cpp:

(WebKit::WebIconDatabase::setClient):

  • UIProcess/WebIconDatabase.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::setHistoryClient):
(WebKit::WebPageProxy::setNavigationClient):
(WebKit::WebPageProxy::setLoaderClient):
(WebKit::WebPageProxy::setPolicyClient):
(WebKit::WebPageProxy::setFormClient):
(WebKit::WebPageProxy::setUIClient):
(WebKit::WebPageProxy::setIconLoadingClient):
(WebKit::WebPageProxy::setFindClient):
(WebKit::WebPageProxy::setFindMatchesClient):
(WebKit::WebPageProxy::setDiagnosticLoggingClient):
(WebKit::WebPageProxy::setContextMenuClient):
(WebKit::WebPageProxy::close):
(WebKit::WebPageProxy::setFullscreenClient):
(WebKit::WebPageProxy::getLoadDecisionForIcon):

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

(WebKit::WebProcessPool::setHistoryClient):
(WebKit::WebProcessPool::setDownloadClient):
(WebKit::WebProcessPool::setAutomationClient):

  • UIProcess/WebProcessPool.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setInjectedBundleContextMenuClient):
(WebKit::WebPage::setInjectedBundleEditorClient):
(WebKit::WebPage::setInjectedBundleFormClient):
(WebKit::WebPage::setInjectedBundlePageLoaderClient):
(WebKit::WebPage::setInjectedBundleUIClient):

  • WebProcess/WebPage/WebPage.h:
9:01 AM Changeset in webkit [218258] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[Win64] Fails to build Asm.lib (PaintHooks.asm) since Bug 173132
https://bugs.webkit.org/show_bug.cgi?id=173308

Patch by Fujii Hironori <Fujii Hironori> on 2017-06-14
Reviewed by Alex Christensen.

Use the same method to process asm file as well as JSC does (Bug 170833).

  • PlatformWin.cmake: Use add_custom_command to assemble PaintHooks.asm.
8:40 AM Changeset in webkit [218257] by Chris Dumez
  • 3 edits
    4 adds in trunk

REGRESSION (r217997): mint.com header renders incorrectly when initially loaded
https://bugs.webkit.org/show_bug.cgi?id=173302
<rdar://problem/32731747>

Reviewed by Darin Adler.

Source/WebCore:

r217997 updated ImplicitAnimation::reset() to not call updateStateMachine(AnimationStateInput::RestartAnimation)
if the compositeAnimation is suspended. If the compositeAnimation is suspended, we would call
updateStateMachine(AnimationStateInput::AnimationStateInput::PlayStatePaused), which was expected to be a no-op.
This was needed because otherwise, changing the style of the animated element would restart the animation
even though it was supposed to be suspended. One thing I did not realize is that calling
updateStateMachine(AnimationStateInput::AnimationStateInput::PlayStatePaused) on an animation that is already
in PausedNew state, will cause it to move to PausedWaitResponse state. This is an issue because upon resuming
we would call AnimationBase::updatePlayState(AnimPlayStatePlaying) which would return early because
AnimationBase::paused() would return false. To address the issue, we no longer call updateStateMachine(PlayStatePaused)
in ImplicitAnimation::reset() when the compositeAnimation is suspended, so that the animation stays in
PausedNew state until we resume. When we resume, AnimationBase::paused() returns false and we actually resume
the animation.

Tests:
fast/animation/css-animation-resuming-when-visible-with-style-change.html
fast/animation/css-animation-resuming-when-visible-with-style-change2.html

  • page/animation/ImplicitAnimation.cpp:

(WebCore::ImplicitAnimation::reset):

LayoutTests:

Add layout test coverage. We change the style of the animated element while the animation is paused,
and then we resume the animations.

  • fast/animation/css-animation-resuming-when-visible-with-style-change-expected.txt: Added.
  • fast/animation/css-animation-resuming-when-visible-with-style-change.html: Added.
  • fast/animation/css-animation-resuming-when-visible-with-style-change2-expected.txt: Added.
  • fast/animation/css-animation-resuming-when-visible-with-style-change2.html: Added.
8:15 AM Changeset in webkit [218256] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit/win

[Win] WebKit fails to paint the bottom lines of the window at 125% scale.
https://bugs.webkit.org/show_bug.cgi?id=173318

Reviewed by Darin Adler.

The logical frame size is currently calculated by scaling the frame size in pixels,
and rounding the coordinates to the nearest integers. The computed logical frame
size will in some cases be smaller than the scaled frame size in pixels, since it is
represented as an IntSize. In these cases, the bottom line will not be painted.
Instead of calculating the logical frame size by rounding the scaled frame in
pixels, find the enclosing rectangle of the scaled frame rectangle in pixels.

  • WebCoreSupport/WebFrameLoaderClient.cpp:

(WebFrameLoaderClient::transitionToCommittedForNewPage):

7:56 AM Changeset in webkit [218255] by pvollan@apple.com
  • 2 edits in trunk/Tools

[Win] DRT should not use disk cache.
https://bugs.webkit.org/show_bug.cgi?id=173361

Reviewed by Darin Adler.

Like on macOS/iOS, DRT on Windows should only use memory cache.

  • DumpRenderTree/win/DumpRenderTree.cpp:

(setDefaultsToConsistentValuesForTesting):
(prepareConsistentTestingEnvironment):

5:58 AM Changeset in webkit [218254] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

[Win] Update expectations for layout tests.
https://bugs.webkit.org/show_bug.cgi?id=172437

Unreviewed test gardening, update test expectations for failing tests.

  • platform/win/TestExpectations:
4:23 AM Changeset in webkit [218253] by magomez@igalia.com
  • 3 edits in trunk/Source/WebCore

REGRESSION(r216901): ImageDecoders: rendering of large images is broken since r216901
https://bugs.webkit.org/show_bug.cgi?id=172502

Reviewed by Carlos Garcia Campos.

When using GTK and WPE image decoders, the decoded frames are stored inside a Vector of
ImageFrames inside the decoders. These ImageFrames have and ImageBackingStore with the
pixels. When a NativeImagePtr is requested, a cairo surface is created from the data
in those ImageBackingStores, but the data keeps being owned by the backing stores. Due
to this, if the decoder that created the image gets destroyed, the backing stores for
the decoded frames get destroyed as well, causing the cairo surfaces that were using
that data to contain garbage (and potentially cause a crash).

To fix this, we change ImageBackingStore so the pixels are stored in a SharedBuffer. The
buffer will be reffed everytime a cairo surface is created with it, and the cairo surfaces
will unref the buffer when they are destroyed. This way, the pixel data won't be freed
while there are cairo surfaces using it.

No new tests, no behaviour change.

  • platform/graphics/ImageBackingStore.h:

(WebCore::ImageBackingStore::setSize):
(WebCore::ImageBackingStore::ImageBackingStore):

  • platform/image-decoders/cairo/ImageBackingStoreCairo.cpp:

(WebCore::ImageBackingStore::image):

4:12 AM Changeset in webkit [218252] by Claudio Saavedra
  • 2 edits in trunk/LayoutTests

[WPE] IndexedDB gardening

Unreviewed gardening.

Mark a few expected crashers. We don't use IndexedDB in workers,
storage/indexeddb/modern/worker-getall.html is expected to fail.
storage/indexeddb/modern/idbkey-array-equality.html is now passing.

  • platform/wpe/TestExpectations:
3:49 AM Changeset in webkit [218251] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[GTK] Use API::InjectedBundle::EditorClient in WebKitWebEditor
https://bugs.webkit.org/show_bug.cgi?id=173355

Reviewed by Žan Doberšek.

Instead of the C API.

  • WebProcess/InjectedBundle/API/gtk/WebKitWebEditor.cpp:

(webkitWebEditorCreate):
(didChangeSelection): Deleted.

3:41 AM Changeset in webkit [218250] by Carlos Garcia Campos
  • 4 edits in trunk/Source/WebKit2

Unreviewed. Fix GTK+ build with GCC 4.9 after r218244.

It seems that GCC 4.9 gets confused by enum named General and value of Print enum named General too. This
renames the Print enum value as Generic.

  • Shared/API/APIError.h:
  • Shared/gtk/WebErrorsGtk.cpp:

(WebKit::printError):

  • UIProcess/API/gtk/WebKitPrivate.cpp:

(toWebKitError):
(toWebCoreError):

3:06 AM Changeset in webkit [218249] by Claudio Saavedra
  • 2 edits in trunk/LayoutTests

[WPE] Rebaseline imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-requestmediakeysystemaccess.html

Unreviewed gardening.

  • platform/wpe/imported/w3c/web-platform-tests/encrypted-media/clearkey-mp4-requestmediakeysystemaccess-expected.txt:
1:56 AM Changeset in webkit [218248] by zandobersek@gmail.com
  • 4 edits in trunk/Source/WebCore

[GStreamer] Align GstBus signal watch priorities with RunLoop dispatches
https://bugs.webkit.org/show_bug.cgi?id=173348

Reviewed by Carlos Garcia Campos.

When adding GstBus signal watches, use the gst_bus_add_signal_watch_full()
function to also specify the GLib priority that's used for the underlying
GSource object.

RunLoopSourcePriority::RunLoopDispatcher should be a good priority value
to use here, matching the RunLoop::dispatch() priority that's e.g. used
in the MainThreadNotifier class.

  • platform/audio/gstreamer/AudioDestinationGStreamer.cpp:

(WebCore::AudioDestinationGStreamer::AudioDestinationGStreamer):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):

  • platform/graphics/gstreamer/mse/AppendPipeline.cpp:

(WebCore::AppendPipeline::AppendPipeline):

1:44 AM Changeset in webkit [218247] by nael.ouedraogo@crf.canon.fr
  • 10 edits in trunk

MediaSource duration attribute should not be equal to Infinity when set to a value greater than 264
https://bugs.webkit.org/show_bug.cgi?id=171668

Reviewed by Jer Noble.

MediaSource duration attribute is a double represented in MediaSource by a MediaTime instance created with
MediaTime::CreateWithDouble(). This method implements an overflow control mechanism which sets MediaTime to
Infinity when the double value passed as argument is greater than 264.

This patch removes the overflow control mechanism when time value is represented as a double. This patch also
modifies the behavior of mathematical operations between a double MediaTime and rational MediaTime: the rational
MediaTime is converted to a double before applying the operation. Double MediaTime precision is the same as for
double. Overflow mechanisms still apply to the conversion of a double MediaTime to rational with setTimescale()
method. No behavior change for rational MediaTime.

LayoutTests/imported/w3c:

Update test expectations.

  • web-platform-tests/media-source/mediasource-duration-boundaryconditions-expected.txt:

Source/WTF:

  • wtf/MediaTime.cpp:

(WTF::MediaTime::createWithFloat):
(WTF::MediaTime::createWithDouble):
(WTF::MediaTime::operator+):
(WTF::MediaTime::operator-):

Tools:

  • TestWebKitAPI/Tests/WTF/MediaTime.cpp: Add tests to check operation results between double and rational MediaTime.

(TestWebKitAPI::TEST):

LayoutTests:

Update test expectations.

  • media/media-source/media-source-timeoffset-expected.txt:
  • platform/gtk/imported/w3c/web-platform-tests/media-source/mediasource-duration-boundaryconditions-expected.txt:
  • platform/mac-elcapitan/imported/w3c/web-platform-tests/media-source/mediasource-duration-boundaryconditions-expected.txt:
12:04 AM Changeset in webkit [218246] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[MediaStream iOS] Back camera view rendered upside down when in portrait mode
https://bugs.webkit.org/show_bug.cgi?id=173346
<rdar://problem/32713675>

Reviewed by Youenn Fablet.

  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::computeSampleRotation): Use different rotations for front and
back cameras when device is in portrait orientation.

Note: See TracTimeline for information about the timeline view.