Timeline



Dec 10, 2019:

11:45 PM Changeset in webkit [253364] by youenn@apple.com
  • 12 edits in trunk/Source/WebCore

TrackListBase does not need to be an ActiveDOMObject
https://bugs.webkit.org/show_bug.cgi?id=205063

Reviewed by Eric Carlson.

Made TrackListBase a ContextDestructrionObserver instead of an ActiveDOMObject.
No observable change of behavior.

  • html/track/AudioTrackList.cpp:

(WebCore::AudioTrackList::activeDOMObjectName const): Deleted.

  • html/track/AudioTrackList.h:
  • html/track/AudioTrackList.idl:
  • html/track/TextTrackList.cpp:

(WebCore::TextTrackList::activeDOMObjectName const): Deleted.

  • html/track/TextTrackList.h:
  • html/track/TextTrackList.idl:
  • html/track/TrackListBase.cpp:

(WebCore::TrackListBase::TrackListBase):

  • html/track/TrackListBase.h:
  • html/track/VideoTrackList.cpp:

(WebCore::VideoTrackList::activeDOMObjectName const): Deleted.

  • html/track/VideoTrackList.h:
  • html/track/VideoTrackList.idl:
10:46 PM Changeset in webkit [253363] by sbarati@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

BytecodeDumper should print out of line jump targets
https://bugs.webkit.org/show_bug.cgi?id=205091

Reviewed by Tadeu Zagallo and Yusuke Suzuki.

  • bytecode/BytecodeDumper.cpp:

(JSC::BytecodeDumperBase::dumpValue):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::outOfLineJumpOffset):

10:37 PM Changeset in webkit [253362] by cathiechen
  • 2 edits in trunk/Source/WebCore

Fixed Pattern.h compile error
https://bugs.webkit.org/show_bug.cgi?id=205101

Need to include "Image.h" to use ImageHandle.

Unreviewed, fixed compile error.

  • platform/graphics/Pattern.h:
10:06 PM Changeset in webkit [253361] by ysuzuki@apple.com
  • 10 edits
    1 add in trunk

[JSC] Adhocly created CallLinkInfo in GetterSetterAccess should be owned by GCAwareJITStubRoutine
https://bugs.webkit.org/show_bug.cgi?id=204876

Reviewed by Saam Barati.

JSTests:

  • stress/code-emitted-by-getter-setter-access-case-should-hold-ownership-of-call-link-info.js: Added.

(func):

Source/JavaScriptCore:

When emitting GetterSetterAccessCase code in IC, we dynamically create CallLinkInfo which is owned by GetterSetterAccessCase,
and we use this pointer for GetterSetter calls (like, operationLinkCall etc.). The problem is that IC code is not destroyed
so long as it is live in the stack. For example, GetterSetterAccessCase might be destroyed when the StructureStubInfo is reset,
while executing the emitted code. So, the code is still pointing already-destroyed CallLinkInfo.

In this patch, CallLinkInfo used for GetterSetterAccessCase code is owned by emitted code, which means, owned by
MarkingGCAwareJITStubRoutine. So it is kept so long as the code is live. We use Bag<CallLinkInfo> to create a CallLinkInfo,
and MarkingGCAwareJITStubRoutine owns it.

The important question is whether we should call CallLinkInfo::visitWeak when the associated GetterSetterAccessCase is already
destroyed. We do not need to call it since (1) it is just clearing CallLinkInfo, and (2) this information will not be used
by anyone since associated GetterSetterAccessCase is already destroyed.

  • bytecode/AccessCase.cpp:

(JSC::AccessCase::generateImpl):

  • bytecode/GetterSetterAccessCase.h:

(JSC::GetterSetterAccessCase::callLinkInfo const):

  • bytecode/PolymorphicAccess.cpp:

(JSC::PolymorphicAccess::regenerate):

  • bytecode/PolymorphicAccess.h:
  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitDumbVirtualCall):

  • jit/GCAwareJITStubRoutine.cpp:

(JSC::MarkingGCAwareJITStubRoutine::MarkingGCAwareJITStubRoutine):
(JSC::GCAwareJITStubRoutineWithExceptionHandler::GCAwareJITStubRoutineWithExceptionHandler):
(JSC::createJITStubRoutine):

  • jit/GCAwareJITStubRoutine.h:

(JSC::GCAwareJITStubRoutine::create):
(JSC::createJITStubRoutine): Deleted.

  • jit/Repatch.cpp:

(JSC::linkSlowFor):
(JSC::linkVirtualFor):

6:16 PM Changeset in webkit [253360] by Chris Dumez
  • 9 edits in trunk/Source/WebKit

[macOS] Issue load sooner on swipe back/forward navigation
https://bugs.webkit.org/show_bug.cgi?id=205087

Reviewed by Tim Horton.

Issue load sooner on swipe back/forward navigation on macOS. We were waiting until the end of
the swipe animation to issue the load. We now issue the load as soon as the user lifts the finger
off the screen and thus commits to navigating. This results in improved perceived performance
when swiping back/forward to navigate.

This patch does not take care of iOS because the ViewGestureController logic is different on that
platform. There is no reason we shouldn't be able to do the same optimization on iOS too though.

To achieve the behavior change on macOS, the following was done:

  • Issue the load in ViewGestureController::willEndSwipeGesture() instead of ViewGestureController::endSwipeGesture().
  • Add a new SnapshotRemovalTracker::Event::SwipeAnimationEnd event and wait for this event before taking away the snapshot. This makes sure we do not take away the swipe snapshot until the swipe animation is actually over (now that we start the navigation during the animation, instead of after).
  • To make sure that layer being swiped away stays the same until the end of the animation, I added a new SwipeAnimation reason for freezing the layer tree. At the beginning of the animation, the UIProcess sends a FreezeLayerTreeDueToSwipeAnimation IPC to the WebProcess to add this layer tree freeze reason. At the end of the animation, the UIProcess sends the UnfreezeLayerTreeDueToSwipeAnimation IPC to remove this freeze reason. Without this change, the layer being swiped away would sometimes start showing the destination site being loaded before the end of the animation. On cross-process navigation, not freezing the layer tree would cause the swipe animation to get interrupted when we have something to paint in the new process before the end of the swipe animation.
  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::initializeWebPage):

  • UIProcess/ViewGestureController.cpp:

(WebKit::ViewGestureController::SnapshotRemovalTracker::eventsDescription):
(WebKit::ViewGestureController::willEndSwipeGesture):
(WebKit::ViewGestureController::endSwipeGesture):

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

(WebKit::WebPageProxy::commitProvisionalPage):

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::isLayerTreeFrozenDueToSwipeAnimation const):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::freezeLayerTreeDueToSwipeAnimation):
(WebKit::WebPage::unfreezeLayerTreeDueToSwipeAnimation):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
5:52 PM Changeset in webkit [253359] by Fujii Hironori
  • 9 edits in trunk/Source

[Win] Fix MSVC warning C4701: potentially uninitialized local variable 'x' used
https://bugs.webkit.org/show_bug.cgi?id=205052

Reviewed by Don Olmstead.

Source/WebCore:

  • platform/graphics/cairo/CairoOperations.cpp:

(WebCore::Cairo::setLineCap): Zero-initialize a local variable cairoCap.
(WebCore::Cairo::setLineJoin): Zero-initialize a local variable cairoJoin

  • platform/network/NetworkStorageSession.cpp:

(WebCore::NetworkStorageSession::shouldBlockCookies const): Added
ASSERT_NOT_REACHED() and return false at the end of the function.

Source/WebDriver:

  • Session.cpp:

(WebDriver::Session::getToplevelBrowsingContextRect):
(WebDriver::Session::computeElementLayout):
Zero-initialized local variables.

Source/WebKit:

  • NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:
  • NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::shouldRemoveAllButCookiesFor const):

  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:

(WebKit::ResourceLoadStatisticsStore::hasStatisticsExpired const):
Zero-initialized local variables.

5:45 PM Changeset in webkit [253358] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Worklist::deleteCancelledPlansForVM() should not assume that a cancelled plan is ready for deletion.
https://bugs.webkit.org/show_bug.cgi?id=205086
<rdar://problem/57795002>

Reviewed by Saam Barati.

Consider this race scenario:

  1. The DFG thread finds a plan and started compiling, and it's holding a ref to the plan while it's compiling.
  2. The GC thread discovers that we no longer need the plan and cancels it.
  3. After the plan is cancelled but while the DFG thread is still compiling, the mutator thread calls Worklist::deleteCancelledPlansForVM().

Worklist::deleteCancelledPlansForVM() was assuming that by the time it is
called, Worklist::m_cancelledPlansPendingDestruction will contain the last ref
to the cancelled plan. However, this is an incorrect assumption, and the
assertion there that asserts refCount == 1 will fail.

This patch fixes Worklist::deleteCancelledPlansForVM() to append the cancelled
plan back into m_cancelledPlansPendingDestruction if its refCount is not 1
(implying that the compiler thread still has a ref to it), and defer deletion of
the plan to a subsequent call to deleteCancelledPlansForVM().

This patch also adds a WTFMove to Worklist::removeDeadPlans() when we append the
cancelled plan to m_cancelledPlansPendingDestruction there. This saves us one
unnecessary ref and deref of the plan.

  • dfg/DFGWorklist.cpp:

(JSC::DFG::Worklist::deleteCancelledPlansForVM):
(JSC::DFG::Worklist::removeDeadPlans):

5:35 PM Changeset in webkit [253357] by pvollan@apple.com
  • 17 edits in trunk/Source

[iOS] Calls to the device motion API should be done in the UI process
https://bugs.webkit.org/show_bug.cgi?id=204770

Reviewed by Brent Fulgham.

Source/WebCore:

The device motion API on iOS is communicating with iohideventsystem. Since mach lookup to this daemon
will be closed, the calls to this API should be moved from the WebContent process to the UI process.
This patch implements forwarding of the device orientation requests to the UI process through the
class, DeviceOrientationUpdateProvider, which is subclassed by WebDeviceOrientationUpdateProvider in
modern WebKit. This class implements forwarding of the requests to the UI process, and receives
device orientation updates from the UI process. An instance of this class will be shared by all
device orientation clients on a page, and passed as part of the page configuration parameters. On
the UI process side, the class WebDeviceOrientationUpdateProviderProxy attached to the Web page
proxy is taking care of calling the device orientation API through the existing WebCoreMotionManager
Objective-C class, and send device orientation updates back to the Web process. Also, use a weak
hash set of clients in WebDeviceOrientationUpdateProvider.

No new tests, covered by existing tests.

  • dom/Document.cpp:
  • platform/ios/DeviceMotionClientIOS.h:
  • platform/ios/DeviceMotionClientIOS.mm:

(WebCore::DeviceMotionClientIOS::DeviceMotionClientIOS):
(WebCore::DeviceMotionClientIOS::startUpdating):
(WebCore::DeviceMotionClientIOS::stopUpdating):
(WebCore::DeviceMotionClientIOS::deviceMotionControllerDestroyed):

  • platform/ios/DeviceOrientationClientIOS.mm:

(WebCore::DeviceOrientationClientIOS::startUpdating):
(WebCore::DeviceOrientationClientIOS::stopUpdating):
(WebCore::DeviceOrientationClientIOS::deviceOrientationControllerDestroyed):

  • platform/ios/DeviceOrientationUpdateProvider.h:
  • platform/ios/MotionManagerClient.h:

(WebCore::MotionManagerClient::orientationChanged):
(WebCore::MotionManagerClient::motionChanged):

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

(-[WebCoreMotionManager addMotionClient:]):
(-[WebCoreMotionManager removeMotionClient:]):
(-[WebCoreMotionManager checkClientStatus]):
(-[WebCoreMotionManager sendAccelerometerData:]):
(-[WebCoreMotionManager sendMotionData:withHeading:]):

Source/WebKit:

The class WebDeviceOrientationUpdateProviderProxy will handle messages to start and stop updating device motion
in the UI process. Also, add a message to update the device motion in the WebContent process. In the UI process,
the device motion API is called through the already existing WebCoreMotionManager class.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • UIProcess/ios/WebDeviceOrientationUpdateProviderProxy.h:
  • UIProcess/ios/WebDeviceOrientationUpdateProviderProxy.messages.in:
  • UIProcess/ios/WebDeviceOrientationUpdateProviderProxy.mm:

(WebKit::WebDeviceOrientationUpdateProviderProxy::startUpdatingDeviceMotion):
(WebKit::WebDeviceOrientationUpdateProviderProxy::stopUpdatingDeviceMotion):
(WebKit::WebDeviceOrientationUpdateProviderProxy::motionChanged):

  • WebProcess/WebCoreSupport/WebDeviceOrientationUpdateProvider.cpp:

(WebKit::WebDeviceOrientationUpdateProvider::startUpdatingDeviceOrientation):
(WebKit::WebDeviceOrientationUpdateProvider::stopUpdatingDeviceOrientation):
(WebKit::WebDeviceOrientationUpdateProvider::startUpdatingDeviceMotion):
(WebKit::WebDeviceOrientationUpdateProvider::stopUpdatingDeviceMotion):
(WebKit::WebDeviceOrientationUpdateProvider::deviceOrientationChanged):
(WebKit::WebDeviceOrientationUpdateProvider::deviceMotionChanged):
(WebKit::WebDeviceOrientationUpdateProvider::startUpdating): Deleted.
(WebKit::WebDeviceOrientationUpdateProvider::stopUpdating): Deleted.

  • WebProcess/WebCoreSupport/WebDeviceOrientationUpdateProvider.h:
  • WebProcess/WebCoreSupport/WebDeviceOrientationUpdateProvider.messages.in:
5:25 PM Changeset in webkit [253356] by commit-queue@webkit.org
  • 1 edit
    2 adds in trunk/LayoutTests

Create a TestExpectations file for the GPU process related work
https://bugs.webkit.org/show_bug.cgi?id=205088

Patch by Peng Liu <Peng Liu> on 2019-12-10
Reviewed by Tim Horton.

  • gpu-process/TestExpectations: Added.
5:19 PM Changeset in webkit [253355] by pvollan@apple.com
  • 2 edits in trunk/Tools

Fix API test failure after r253351
https://bugs.webkit.org/show_bug.cgi?id=205089

Reviewed by Brent Fulgham.

With the patch landed in r253351, the NetworkExtension framework will not be loaded in the WebContent process unless
[NEFilterSource filterRequired] returns YES. Swizzle this method to return YES in the UI process.

  • TestWebKitAPI/Tests/WebKitCocoa/ContentFiltering.mm:

(filterRequired):
(TEST):

3:59 PM Changeset in webkit [253354] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed, drop debug assertion in InspectorTargetProxy::didCommitProvisionalTarget() that is hitting after r253337

r253337 causes the ProvisionalPageProxy to get destroyed a little bit early, before didCommitProvisionalTarget()
is called. didCommitProvisionalTarget() had an assertion that isProvisional() returns true, which merely checked
that the ProvisionalPageProxy is still alive before nulling out its WeakPtr.

  • UIProcess/InspectorTargetProxy.cpp:

(WebKit::InspectorTargetProxy::didCommitProvisionalTarget):

3:39 PM Changeset in webkit [253353] by pvollan@apple.com
  • 4 edits in trunk/Source/WebCore

Make it possible to add regression tests for blocked XPC services
https://bugs.webkit.org/show_bug.cgi?id=204967

Reviewed by Brent Fulgham.

On macOS and iOS, it should be possible to add regression tests for blocked mach services. Add a method
to Internals, which checks whether a given process has access to mach lookup for a given global service
name. Currently, the only supported process is the WebContent process since the PIDs of other processes
are not readily available in Internals, but support for other processes will be added when needed.

No new tests, since this patch is in preparation for adding regression tests for sandbox changes.

  • testing/Internals.cpp:

(WebCore::Internals::hasSandboxMachLookupAccessToGlobalName):

  • testing/Internals.h:
  • testing/Internals.idl:
3:28 PM Changeset in webkit [253352] by sihui_liu@apple.com
  • 3 edits in trunk/Source/WebCore

IndexedDB: remove timer for completed operation in IDBTransaction
https://bugs.webkit.org/show_bug.cgi?id=205043

Reviewed by Brady Eidson.

Using a zero-delay Timer is slower than executing task immediately, and there is no specific reason to use a
Timer here.

Covered by existing tests.

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::IDBTransaction):
(WebCore::IDBTransaction::operationCompletedOnServer):
(WebCore::IDBTransaction::handleOperationsCompletedOnServer):
(WebCore::IDBTransaction::finishedDispatchEventForRequest):
(WebCore::IDBTransaction::scheduleCompletedOperationTimer): Deleted.
(WebCore::IDBTransaction::completedOperationTimerFired): Deleted.

  • Modules/indexeddb/IDBTransaction.h:
3:21 PM Changeset in webkit [253351] by pvollan@apple.com
  • 11 edits in trunk/Source

[iOS] Deny mach lookup access to network extension services in the WebContent sandbox
https://bugs.webkit.org/show_bug.cgi?id=203929

Reviewed by Brent Fulgham.

Source/WebCore:

Add a global flag to NetworkExtensionContentFilter to indicate whether network extension sandbox extensions have
been consumed. If the flag has been set, there is no need to check NEFilterSource.filterRequired, since the flag
will tell if filtering is required. Checking NEFilterSource.filterRequired will lead to other mach lookups which
we are trying to avoid.

The test ContentFiltering.LazilyLoadPlatformFrameworks has been modified.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/cocoa/NetworkExtensionContentFilter.h:
  • platform/cocoa/NetworkExtensionContentFilter.mm:

(WebCore::NetworkExtensionContentFilter::enabled):

Source/WebKit:

Mach lookup access to network extension services in the WebContent process is only needed if
NEFilterSource.filterRequired is true. If this is the case, issue the needed mach lookup
sandbox extensions to the WebContent process, where they will be consumed. Eventually, all
the content filtering code should be moved to the Networking process, but since this is a
bigger undertaking, we can issue extensions in the meantime to strengthen the sandbox.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

  • WebProcess/com.apple.WebProcess.sb.in:
3:08 PM Changeset in webkit [253350] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

methodOfGettingAValueProfileFor should return argument value profiles even when node and operandNode are the same origin
https://bugs.webkit.org/show_bug.cgi?id=205083

Reviewed by Yusuke Suzuki.

Inside methodOfGettingAValueProfileFor, we only grab profiles when the child
node and the parent node were from different code origins. This policy doesn't
make sense when the child node is the load of an argument value. In that case,
we can always just grab the argument profile.

We might want to reconsider this policy in general, since it's common for a
node to emit a GetLocal to grab its incoming arguments (this is frequently
done in the DFG when reloading locals across basic blocks).

This fixes an OSR exit compile loop inside Speedometer 2's React-Redux-TodoMVC
benchmark. That benchmark would repeatedly exit inside CompareStrictEq by
repeatedly speculating Object. That node would run with 95% incoming Objects,
and 5% incoming strings, and because we didn't grab the argument value profile
during exit, we never updated the profile with the String type information.

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::methodOfGettingAValueProfileFor):

3:06 PM Changeset in webkit [253349] by Alan Coon
  • 1 copy in tags/Safari-608.5.5

Tag Safari-608.5.5.

3:01 PM Changeset in webkit [253348] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r251038): Elements: Computed: implicit shorthands are not shown when "Prefer Shorthands" is enabled
https://bugs.webkit.org/show_bug.cgi?id=205035
<rdar://problem/57773470>

Reviewed by Brian Burg.

The computed style treats most shorthand properties as "implicit", meaning that if "Prefer
Shorthands" is enabled, we won't show the shorthand properties unless "Show All" is also
enabled. The frontend can fix this by checking to see if there are any non-implicit longhand
values for each shorthand value, and therefore decide not to hide the "implicit" shorthand.

  • UserInterface/Views/ComputedStyleSection.js:

(WI.ComputedStyleSection.prototype.get propertiesToRender):
(WI.ComputedStyleSection.prototype.get propertiesToRender.hasNonImplicitLonghand): Added.
Drive-by: filter the list of properties to render before sorting them for performance.

2:40 PM Changeset in webkit [253347] by Alan Coon
  • 1 copy in tags/Safari-608.5.0.2.2

Tag Safari-608.5.0.2.2.

2:29 PM Changeset in webkit [253346] by Chris Dumez
  • 19 edits in trunk/Source/WebKit

Leverage the fact that WebPageProxy subclasses IPC::MessageSender to simplify IPC sending code
https://bugs.webkit.org/show_bug.cgi?id=205065

Reviewed by Alex Christensen.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageLoaderClient):

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::switchToBrowsingContext):
(WebKit::WebAutomationSession::evaluateJavaScriptFunction):
(WebKit::WebAutomationSession::resolveChildFrameHandle):
(WebKit::WebAutomationSession::resolveParentFrameHandle):
(WebKit::WebAutomationSession::computeElementLayout):
(WebKit::WebAutomationSession::selectOptionElement):
(WebKit::WebAutomationSession::setFilesForInputFileUpload):
(WebKit::WebAutomationSession::getAllCookies):
(WebKit::WebAutomationSession::deleteSingleCookie):
(WebKit::WebAutomationSession::takeScreenshot):

  • UIProcess/RemoteWebInspectorProxy.cpp:

(WebKit::RemoteWebInspectorProxy::load):
(WebKit::RemoteWebInspectorProxy::sendMessageToFrontend):

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::~UserMediaPermissionRequestManagerProxy):

  • UIProcess/WebEditCommandProxy.cpp:

(WebKit::WebEditCommandProxy::unapply):
(WebKit::WebEditCommandProxy::reapply):

  • UIProcess/WebFrameProxy.cpp:

(WebKit::WebFrameProxy::loadURL):
(WebKit::WebFrameProxy::loadData):
(WebKit::WebFrameProxy::stopLoading const):

  • UIProcess/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::sendMessageToFrontend):
(WebKit::WebInspectorProxy::connect):
(WebKit::WebInspectorProxy::close):
(WebKit::WebInspectorProxy::updateForNewPageProcess):
(WebKit::WebInspectorProxy::setFrontendConnection):
(WebKit::WebInspectorProxy::showConsole):
(WebKit::WebInspectorProxy::showResources):
(WebKit::WebInspectorProxy::showMainResourceForFrame):
(WebKit::WebInspectorProxy::attach):
(WebKit::WebInspectorProxy::detach):
(WebKit::WebInspectorProxy::togglePageProfiling):
(WebKit::WebInspectorProxy::toggleElementSelection):
(WebKit::WebInspectorProxy::openLocalInspectorFrontend):
(WebKit::WebInspectorProxy::open):
(WebKit::WebInspectorProxy::closeFrontendPageAndWindow):
(WebKit::WebInspectorProxy::attachAvailabilityChanged):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setUIClient):
(WebKit::WebPageProxy::setIconLoadingClient):
(WebKit::WebPageProxy::launchProcessForReload):
(WebKit::WebPageProxy::launchProcessWithItem):
(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::close):
(WebKit::WebPageProxy::loadRequestWithNavigationShared):
(WebKit::WebPageProxy::loadFile):
(WebKit::WebPageProxy::loadAlternateHTML):
(WebKit::WebPageProxy::loadWebArchiveData):
(WebKit::WebPageProxy::navigateToPDFLinkWithSimulatedClick):
(WebKit::WebPageProxy::stopLoading):
(WebKit::WebPageProxy::reload):
(WebKit::WebPageProxy::goToBackForwardItem):
(WebKit::WebPageProxy::tryRestoreScrollPosition):
(WebKit::WebPageProxy::setControlledByAutomation):
(WebKit::WebPageProxy::setIndicating):
(WebKit::WebPageProxy::setBackgroundColor):
(WebKit::WebPageProxy::setTopContentInset):
(WebKit::WebPageProxy::setUnderlayColor):
(WebKit::WebPageProxy::viewWillStartLiveResize):
(WebKit::WebPageProxy::viewWillEndLiveResize):
(WebKit::WebPageProxy::viewDidEnterWindow):
(WebKit::WebPageProxy::dispatchActivityStateChange):
(WebKit::WebPageProxy::layerHostingModeDidChange):
(WebKit::WebPageProxy::setInitialFocus):
(WebKit::WebPageProxy::clearSelection):
(WebKit::WebPageProxy::restoreSelectionInFocusedEditableElement):
(WebKit::WebPageProxy::validateCommand):
(WebKit::WebPageProxy::increaseListLevel):
(WebKit::WebPageProxy::decreaseListLevel):
(WebKit::WebPageProxy::changeListType):
(WebKit::WebPageProxy::setBaseWritingDirection):
(WebKit::WebPageProxy::setNeedsFontAttributes):
(WebKit::WebPageProxy::scheduleFullEditorStateUpdate):
(WebKit::WebPageProxy::selectAll):
(WebKit::WebPageProxy::executeEditCommand):
(WebKit::WebPageProxy::requestFontAttributesAtSelectionStart):
(WebKit::WebPageProxy::setEditable):
(WebKit::WebPageProxy::performDragControllerAction):
(WebKit::WebPageProxy::dragEnded):
(WebKit::WebPageProxy::didStartDrag):
(WebKit::WebPageProxy::dragCancelled):
(WebKit::WebPageProxy::processNextQueuedMouseEvent):
(WebKit::WebPageProxy::sendWheelEvent):
(WebKit::WebPageProxy::handleKeyboardEvent):
(WebKit::WebPageProxy::handleGestureEvent):
(WebKit::WebPageProxy::handlePreventableTouchEvent):
(WebKit::WebPageProxy::resetPotentialTapSecurityOrigin):
(WebKit::WebPageProxy::handleUnpreventableTouchEvent):
(WebKit::WebPageProxy::handleTouchEvent):
(WebKit::WebPageProxy::cancelPointer):
(WebKit::WebPageProxy::touchWithIdentifierWasRemoved):
(WebKit::WebPageProxy::scrollBy):
(WebKit::WebPageProxy::centerSelectionInVisibleArea):
(WebKit::WebPageProxy::commitProvisionalPage):
(WebKit::WebPageProxy::setUserAgent):
(WebKit::WebPageProxy::resumeActiveDOMObjectsAndAnimations):
(WebKit::WebPageProxy::suspendActiveDOMObjectsAndAnimations):
(WebKit::WebPageProxy::setCustomTextEncodingName):
(WebKit::WebPageProxy::restoreFromSessionState):
(WebKit::WebPageProxy::setTextZoomFactor):
(WebKit::WebPageProxy::setPageZoomFactor):
(WebKit::WebPageProxy::setPageAndTextZoomFactors):
(WebKit::WebPageProxy::scalePage):
(WebKit::WebPageProxy::scalePageInViewCoordinates):
(WebKit::WebPageProxy::scaleView):
(WebKit::WebPageProxy::windowScreenDidChange):
(WebKit::WebPageProxy::accessibilitySettingsDidChange):
(WebKit::WebPageProxy::setUseFixedLayout):
(WebKit::WebPageProxy::setFixedLayoutSize):
(WebKit::WebPageProxy::setAlwaysShowsHorizontalScroller):
(WebKit::WebPageProxy::setAlwaysShowsVerticalScroller):
(WebKit::WebPageProxy::listenForLayoutMilestones):
(WebKit::WebPageProxy::setSuppressScrollbarAnimations):
(WebKit::WebPageProxy::setEnableVerticalRubberBanding):
(WebKit::WebPageProxy::setEnableHorizontalRubberBanding):
(WebKit::WebPageProxy::setBackgroundExtendsBeyondPage):
(WebKit::WebPageProxy::setPaginationMode):
(WebKit::WebPageProxy::setPaginationBehavesLikeColumns):
(WebKit::WebPageProxy::setPageLength):
(WebKit::WebPageProxy::setGapBetweenPages):
(WebKit::WebPageProxy::setPaginationLineGridEnabled):
(WebKit::WebPageProxy::findStringMatches):
(WebKit::WebPageProxy::findString):
(WebKit::WebPageProxy::getImageForFindMatch):
(WebKit::WebPageProxy::selectFindMatch):
(WebKit::WebPageProxy::indicateFindMatch):
(WebKit::WebPageProxy::hideFindUI):
(WebKit::WebPageProxy::countStringMatches):
(WebKit::WebPageProxy::replaceMatches):
(WebKit::WebPageProxy::runJavaScriptInMainFrameScriptWorld):
(WebKit::WebPageProxy::runJavaScriptInFrame):
(WebKit::WebPageProxy::getRenderTreeExternalRepresentation):
(WebKit::WebPageProxy::getSourceForFrame):
(WebKit::WebPageProxy::getContentsAsString):
(WebKit::WebPageProxy::getBytecodeProfile):
(WebKit::WebPageProxy::getSamplingProfilerOutput):
(WebKit::WebPageProxy::getContentsAsMHTMLData):
(WebKit::WebPageProxy::getSelectionOrContentsAsString):
(WebKit::WebPageProxy::getSelectionAsWebArchiveData):
(WebKit::WebPageProxy::getMainResourceDataOfFrame):
(WebKit::WebPageProxy::getResourceDataFromFrame):
(WebKit::WebPageProxy::getWebArchiveOfFrame):
(WebKit::WebPageProxy::forceRepaint):
(WebKit::WebPageProxy::preferencesDidChange):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::willSubmitForm):
(WebKit::WebPageProxy::showShareSheet):
(WebKit::WebPageProxy::setMediaVolume):
(WebKit::WebPageProxy::setMuted):
(WebKit::WebPageProxy::stopMediaCapture):
(WebKit::WebPageProxy::stopAllMediaPlayback):
(WebKit::WebPageProxy::suspendAllMediaPlayback):
(WebKit::WebPageProxy::resumeAllMediaPlayback):
(WebKit::WebPageProxy::handleMediaEvent):

  • UIProcess/gtk/WebInspectorProxyGtk.cpp:

(WebKit::WebInspectorProxy::platformSave):

2:08 PM Changeset in webkit [253345] by Alan Coon
  • 7 edits in branches/safari-608-branch/Source

Versioning.

1:56 PM Changeset in webkit [253344] by commit-queue@webkit.org
  • 11 edits in trunk/Source

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

1% regression in RAMification (Requested by yusukesuzuki on
#webkit).

Reverted changeset:

"[JSC] Put JSArray in IsoSubspace"
https://bugs.webkit.org/show_bug.cgi?id=205049
https://trac.webkit.org/changeset/253321

1:27 PM Changeset in webkit [253343] by Chris Dumez
  • 8 edits in trunk

Gyroscope (DeviceMotion related) permission cannot be requested in WKWebView unless the client app sets a WKUIDelegate
https://bugs.webkit.org/show_bug.cgi?id=203287

Reviewed by Alex Christensen.

Source/WebKit:

Device orientation / motion events permission dialog would not be shown unless the client app
set a WKUIDelegate on the WKWebView, even though we do not need this WKUIDelegate to show the
prompt.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _deviceOrientationUserPermissionHandler]):
(-[WKWebView _setDeviceOrientationUserPermissionHandler:]):

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

(WebKit::UIDelegate::UIClient::shouldAllowDeviceOrientationAndMotionAccess):

  • UIProcess/Cocoa/WKOrientationAccessAlert.mm:

(WebKit::presentOrientationAccessAlert):

Tools:

Add layout test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/DeviceOrientation.mm:

(runDeviceOrientationTest):
(TEST):

1:18 PM Changeset in webkit [253342] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed, drop bad assertion in PreconnectTask::willSendRedirectedRequest()

PreconnectTask::willSendRedirectedRequest() may get called in case of HSTS redirect,
so the ASSERT_NOT_REACHED() is wrong.

  • NetworkProcess/PreconnectTask.cpp:

(WebKit::PreconnectTask::willSendRedirectedRequest):

12:56 PM Changeset in webkit [253341] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Call RenderText:text() to get the rendered content instead of ::originalText()
https://bugs.webkit.org/show_bug.cgi?id=205079
<rdar://problem/57804297>

Reviewed by Antti Koivisto.

It fixes the cases when the original text content is different from the rendered content (e.g. Yen symbol).

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createLayoutBox):

12:19 PM Changeset in webkit [253340] by Chris Dumez
  • 3 edits in trunk/LayoutTests/imported/w3c

Re-sync imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html from usptream
https://bugs.webkit.org/show_bug.cgi?id=205070

Reviewed by Alex Christensen.

Re-sync imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html from usptream
ab28e18f067f17a76d9c32.

  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:
  • web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html:
12:10 PM Changeset in webkit [253339] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

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

'<rdar://problem/57771300> REGRESSION (253212): Safari does
not load local html file, base system Safari does not load
RecoveryInformation.html' (Requested by nham on #webkit).

Reverted changeset:

"Drop support for NSURLCache callbacks in NetworkProcess"
https://bugs.webkit.org/show_bug.cgi?id=203344
https://trac.webkit.org/changeset/253212

12:09 PM Changeset in webkit [253338] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

REGRESSION(r252523): Web Inspector: Styles: semicolon is wrongly positioned in multiline values
https://bugs.webkit.org/show_bug.cgi?id=205034
<rdar://problem/57772846>

Reviewed by Brian Burg.

Wrap the value node in another <span class="value-container"> so that the semicolon can be
included as part of the display: inline-block; when there are multiple lines in the value.

  • UserInterface/Views/SpreadsheetStyleProperty.js:

(WI.SpreadsheetStyleProperty.prototype.update):

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:

(.spreadsheet-style-declaration-editor .property:not(.disabled).has-newline .value-container): Added.
(.spreadsheet-style-declaration-editor .property:not(.disabled).has-newline .value): Deleted.

12:04 PM Changeset in webkit [253337] by Chris Dumez
  • 8 edits in trunk/Source/WebKit

[WK2][iOS] Visibility propagation view is not properly updated when navigating cross-process
https://bugs.webkit.org/show_bug.cgi?id=205028

Reviewed by Tim Horton.

Make sure we keep the contextIDForVisibilityPropagation on the ProvisionalPageProxy / SuspendedPageProxy
objects and update WebPageProxy::m_contextIDForVisibilityPropagation whenever we commit a provisional
page. Also update ProvisionalPageProxy to listen for the WebPageProxy::DidCreateContextForVisibilityPropagation
IPC so that it can update m_contextIDForVisibilityPropagation once the WebPage is created in the
provisional WebProcess (which creates the visibility propagation view).

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::ProvisionalPageProxy):
(WebKit::ProvisionalPageProxy::didCreateContextForVisibilityPropagation):
(WebKit::ProvisionalPageProxy::didReceiveMessage):

  • UIProcess/ProvisionalPageProxy.h:

(WebKit::ProvisionalPageProxy::contextIDForVisibilityPropagation const):

  • UIProcess/SuspendedPageProxy.cpp:

(WebKit::SuspendedPageProxy::SuspendedPageProxy):

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

(WebKit::WebPageProxy::swapToProvisionalPage):
(WebKit::WebPageProxy::commitProvisionalPage):
(WebKit::WebPageProxy::resetState):
(WebKit::WebPageProxy::swapToWebProcess): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _setupVisibilityPropagationView]):
(-[WKContentView _removeVisibilityPropagationView]):

11:51 AM Changeset in webkit [253336] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Elements: Styles: there is a double border between the last rule and the class list area or filter area
https://bugs.webkit.org/show_bug.cgi?id=205040

Reviewed by Brian Burg.

  • UserInterface/Views/GeneralStyleDetailsSidebarPanel.css:

(.sidebar > .panel.details.css-style.style-rules > .content ~ :matches(.options-container, .class-list-container)): Added.
(.sidebar > .panel.details.css-style > .content ~ .options-container):
Use a CSS transform to move the class list area and filter area up when the Styles panel is
selected in the details sidebar of the Elements Tab.

11:41 AM Changeset in webkit [253335] by Tadeu Zagallo
  • 13 edits
    1 copy in trunk/Source/JavaScriptCore

Reduce JSC's binary size
https://bugs.webkit.org/show_bug.cgi?id=204549

Reviewed by Saam Barati.

The Wasm interpreter landed in r251886 and significantly increased JSC's binary size. To try and
offset that, here and some easy fixes that get us ~200kb back:

  • We were generating 2 instances of dumpBytecode, at 30kb each. I changed the generator to emit a cpp file instead, avoiding the duplication.
  • We had 3 instances of computeUsesForBytecodeIndex at 11kb each. I kept the work that depended on the template type in the template function and moved the massive switch into computeUsesForBytecodeIndexImpl. I also did the same for computeDefsForBytecodeIndex.
  • We had 8 instances of emit_compareAndJump(Slow) at 8kb (7kb for Slow) each. I kept the code that extracts the data from the bytecode in the template, but moved the bulk of the function into emit_compareAndJump(Slow)Impl.
  • CMakeLists.txt:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • bytecode/BytecodeDumper.cpp:

(JSC::BytecodeDumperBase::printLocationAndOp):
(JSC::BytecodeDumperBase::dumpValue):

  • bytecode/BytecodeDumper.h:

(JSC::BytecodeDumperBase::~BytecodeDumperBase):
(JSC::BytecodeDumperBase::dumpValue):
(JSC::BytecodeDumperBase::BytecodeDumperBase):
(JSC::BytecodeDumper::BytecodeDumper):

  • bytecode/BytecodeUseDef.cpp: Copied from Source/JavaScriptCore/bytecode/BytecodeUseDef.h.

(JSC::computeUsesForBytecodeIndexImpl):
(JSC::computeDefsForBytecodeIndexImpl):

  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeIndex):
(JSC::computeDefsForBytecodeIndex):

  • generator/DSL.rb:
  • generator/Opcode.rb:
  • generator/Options.rb:
  • jit/JIT.h:
  • jit/JITArithmetic.cpp:

(JSC::JIT::emit_compareAndJump):
(JSC::JIT::emit_compareAndJumpImpl):
(JSC::JIT::emit_compareUnsignedAndJump):
(JSC::JIT::emit_compareUnsignedAndJumpImpl):
(JSC::JIT::emit_compareUnsigned):
(JSC::JIT::emit_compareUnsignedImpl):
(JSC::JIT::emit_compareAndJumpSlow):
(JSC::JIT::emit_compareAndJumpSlowImpl):

11:38 AM Changeset in webkit [253334] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC][Painting] TextRuns always have 0 left offset
https://bugs.webkit.org/show_bug.cgi?id=205071
<rdar://problem/57801254>

Reviewed by Antti Koivisto.

As the comment indicates TextRun start with the left offset of 0.
This patch also removes some FloatRect -> LayoutRect conversions (to match SLL's painting coordinates).

  • layout/displaytree/DisplayInlineContent.cpp:

(WebCore::Display:: const):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::computeVisualOverflow):
(WebCore::LayoutIntegration::LineLayout::collectOverflow):
(WebCore::LayoutIntegration::LineLayout::paint):

11:23 AM Changeset in webkit [253333] by dino@apple.com
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Produce a dummy libANGLE.a file to fool Apple's build test infrastructure
https://bugs.webkit.org/show_bug.cgi?id=205068
<rdar://problem/57713353>

Reviewed by Alex Christensen.

Create a dummy libANGLE.a file until our infrastructure realises it
doesn't need that file any more. Hopefully the fact that it isn't
really a static library, but just a text file, is ok.

  • ANGLE.xcodeproj/project.pbxproj: Add a new shell script phase that

creates a dummy file.

11:20 AM Changeset in webkit [253332] by Alan Coon
  • 7 edits in branches/safari-608.5.0.2-branch/Source

Versioning.

10:51 AM Changeset in webkit [253331] by youenn@apple.com
  • 158 edits in trunk

Mark some WPT test folders as DumpJSConsoleLogInStdErr
https://bugs.webkit.org/show_bug.cgi?id=204793

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

Updated tests with removed console log lines.

  • web-platform-tests/cors/304-expected.txt:
  • web-platform-tests/cors/basic-expected.txt:
  • web-platform-tests/cors/client-hint-request-headers-expected.txt:
  • web-platform-tests/cors/cors-safelisted-request-header.any-expected.txt:
  • web-platform-tests/cors/cors-safelisted-request-header.any.worker-expected.txt:
  • web-platform-tests/cors/origin-expected.txt:
  • web-platform-tests/cors/preflight-failure-expected.txt:
  • web-platform-tests/cors/redirect-origin-expected.txt:
  • web-platform-tests/cors/redirect-preflight-2-expected.txt:
  • web-platform-tests/cors/remote-origin-expected.txt:
  • web-platform-tests/cors/simple-requests-expected.txt:
  • web-platform-tests/cors/status-async-expected.txt:
  • web-platform-tests/cors/status-expected.txt:
  • web-platform-tests/fetch/api/abort/general.any-expected.txt:
  • web-platform-tests/fetch/api/basic/integrity.sub.any-expected.txt:
  • web-platform-tests/fetch/api/basic/mode-same-origin.any.worker-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-blob.sub.any-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-data.any-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-others.sub.any-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-basic.any-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-basic.any.worker-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-cookies.any-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-multiple-origins.sub.any-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-multiple-origins.sub.any.worker-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-origin.any.worker-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-preflight-star.any-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-preflight-star.any.worker-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-preflight-status.any.worker-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-preflight.any.worker-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-redirect-credentials.any-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-redirect-credentials.any.worker-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-redirect-preflight.any.worker-expected.txt:
  • web-platform-tests/fetch/api/cors/sandboxed-iframe-expected.txt:
  • web-platform-tests/fetch/api/policies/csp-blocked-expected.txt:
  • web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-location.any-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-location.any.worker-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-mode.any-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-mode.any.worker-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-schemes-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-to-dataurl.any-expected.txt:
  • web-platform-tests/fetch/api/redirect/redirect-to-dataurl.any.worker-expected.txt:
  • web-platform-tests/fetch/api/request/request-bad-port-expected.txt:
  • web-platform-tests/fetch/api/request/request-cache-only-if-cached-expected.txt:
  • web-platform-tests/fetch/api/request/request-keepalive-quota-expected.txt:
  • web-platform-tests/fetch/api/response/response-stream-with-broken-then.any-expected.txt:
  • web-platform-tests/fetch/cross-origin-resource-policy/fetch-in-iframe-expected.txt:
  • web-platform-tests/fetch/cross-origin-resource-policy/fetch.any-expected.txt:
  • web-platform-tests/fetch/cross-origin-resource-policy/fetch.any.worker-expected.txt:
  • web-platform-tests/fetch/cross-origin-resource-policy/iframe-loads-expected.txt:
  • web-platform-tests/fetch/cross-origin-resource-policy/image-loads-expected.txt:
  • web-platform-tests/fetch/cross-origin-resource-policy/scheme-restriction.any-expected.txt:
  • web-platform-tests/fetch/cross-origin-resource-policy/scheme-restriction.any.worker-expected.txt:
  • web-platform-tests/fetch/cross-origin-resource-policy/scheme-restriction.https.window-expected.txt:
  • web-platform-tests/fetch/cross-origin-resource-policy/script-loads-expected.txt:
  • web-platform-tests/fetch/data-urls/base64.any-expected.txt:
  • web-platform-tests/fetch/data-urls/processing.any-expected.txt:
  • web-platform-tests/fetch/images/canvas-remote-read-remote-image-redirect-expected.txt:
  • web-platform-tests/fetch/security/redirect-to-url-with-credentials.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/claim-fetch-with-appcache.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/controller-with-no-fetch-event-handler.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/embed-and-object-are-not-intercepted.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-image-cache.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-image.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-csp.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-error.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-event-network-error.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-event-redirect.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-event-referrer-policy.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-event-respond-with-argument.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-event-respond-with-response-body-with-invalid-chunk.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-inscope.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-outscope.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-request-css-cross-origin.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/fetch-request-fallback.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/invalid-header.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/opaque-response-preloaded.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/ready.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/redirected-response.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/update-recovery.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/update.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/webvtt-cross-origin.https-expected.txt:
  • web-platform-tests/service-workers/service-worker/worker-client-id.https-expected.txt:
  • web-platform-tests/service-workers/stub-3.1-service-worker-obj-expected.txt:
  • web-platform-tests/service-workers/stub-3.2-navigator-service-worker-expected.txt:
  • web-platform-tests/service-workers/stub-4.1-service-worker-global-scope-expected.txt:
  • web-platform-tests/service-workers/stub-4.4-request-objects-expected.txt:
  • web-platform-tests/service-workers/stub-4.5-response-objects-expected.txt:
  • web-platform-tests/service-workers/stub-4.6.3-cache-storage-expected.txt:
  • web-platform-tests/service-workers/stub-4.7.4.1-fetch-event-section-expected.txt:
  • web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-answer-expected.txt:
  • web-platform-tests/webrtc/RTCPeerConnection-setLocalDescription-offer-expected.txt:
  • web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl-expected.txt:
  • web-platform-tests/xhr/access-control-basic-denied-expected.txt:
  • web-platform-tests/xhr/access-control-basic-non-cors-safelisted-content-type-expected.txt:
  • web-platform-tests/xhr/access-control-basic-preflight-denied-expected.txt:
  • web-platform-tests/xhr/access-control-preflight-request-invalid-status-301-expected.txt:
  • web-platform-tests/xhr/access-control-preflight-request-invalid-status-400-expected.txt:
  • web-platform-tests/xhr/access-control-preflight-request-invalid-status-501-expected.txt:
  • web-platform-tests/xhr/access-control-recursive-failed-request-expected.txt:
  • web-platform-tests/xhr/access-control-sandboxed-iframe-denied-expected.txt:
  • web-platform-tests/xhr/access-control-sandboxed-iframe-denied-without-wildcard-expected.txt:
  • web-platform-tests/xhr/getresponseheader-error-state-expected.txt:
  • web-platform-tests/xhr/open-method-responsetype-set-sync-expected.txt:
  • web-platform-tests/xhr/open-url-redirected-sharedworker-origin-expected.txt:
  • web-platform-tests/xhr/responsetype.any-expected.txt:
  • web-platform-tests/xhr/security-consideration.sub-expected.txt:
  • web-platform-tests/xhr/send-authentication-basic-cors-expected.txt:
  • web-platform-tests/xhr/send-data-arraybuffer-expected.txt:
  • web-platform-tests/xhr/send-network-error-async-events.sub-expected.txt:
  • web-platform-tests/xhr/send-non-same-origin-expected.txt:
  • web-platform-tests/xhr/setrequestheader-content-type-expected.txt:
  • web-platform-tests/xhr/setrequestheader-header-forbidden-expected.txt:
  • web-platform-tests/xhr/timeout-cors-async-expected.txt:
  • web-platform-tests/xhr/timeout-sync-expected.txt:
  • web-platform-tests/xhr/xmlhttprequest-timeout-synconmain-expected.txt:

Tools:

Make DTR and WTR set the default DumpJSConsoleLogInStdErr to true for some WPT sub-folders.
This is easier done there instead of TestExpectations as TestExpectations can be overriden in more specific expectations.

  • DumpRenderTree/TestOptions.cpp:

(pathContains):
(shouldDumpJSConsoleLogInStdErr):
(TestOptions::TestOptions):

  • WebKitTestRunner/TestController.cpp:

(WTR::updateTestOptionsFromTestHeader):

  • WebKitTestRunner/TestOptions.cpp:

(WTR::shouldDumpJSConsoleLogInStdErr):
(WTR::TestOptions::TestOptions):

LayoutTests:

Remove no longer needed DumpJSConsoleLogInStdErr expectations.

10:38 AM Changeset in webkit [253330] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r253167): Elements: class list toggle doesn't stay sticky to the bottom of the sidebar
https://bugs.webkit.org/show_bug.cgi?id=205033

Reviewed by Brian Burg.

  • UserInterface/Views/GeneralStyleDetailsSidebarPanel.css:

(.sidebar > .panel.details.css-style > .content):
Ensure that the main content of the sidebar panel takes up as much space as possible.

10:35 AM Changeset in webkit [253329] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught Exception: this._objectTree.resetPropertyPath is not a function. (In 'this._objectTree.resetPropertyPath()', 'this._objectTree.resetPropertyPath' is undefined)
https://bugs.webkit.org/show_bug.cgi?id=205026

Reviewed by Brian Burg.

  • UserInterface/Views/ConsoleMessageView.js:

(WI.ConsoleMessageView.prototype.clearSessionState):
The _objectTree can also be an WI.ErrorObjectView, which doesn't have a property path.

9:15 AM Changeset in webkit [253328] by youenn@apple.com
  • 2 edits in trunk/Tools

Disable video capture in UIProcess for WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=205054

Reviewed by Eric Carlson.

  • WebKitTestRunner/TestOptions.h:

Some tests are still flaky as noted in bug 205053 and this option is still experimental.

9:02 AM Changeset in webkit [253327] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Regression(r253277) ASSERTION FAILED: !parameters.request.httpBody() in NetworkConnectionToWebProcess::preconnectTo()
https://bugs.webkit.org/show_bug.cgi?id=205030

Reviewed by Antti Koivisto.

Instead of using the full request as preconnect request, create a simple one that contains only the destination URL.
This avoids sending a request body unnecessarily over IPC, which was the cause of the assertion.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadRequest):

8:57 AM Changeset in webkit [253326] by Antti Koivisto
  • 28 edits in trunk

Source/WebCore:
Remove behavior that makes <br> boxes 0-height in quirks mode
https://bugs.webkit.org/show_bug.cgi?id=205004

Reviewed by Zalan Bujtas.

Implementation of the <br> quirk includes zeroing its height. This has no layout or rendering effects,
it exists purely to maintain render tree dump output for tests.

This patch removes this behavior but maintains the render tree dump output on the RenderTreeAsText
level (thus avoiding giant test rebasing), and makes it easier to get the same output from all paths.

  • rendering/InlineBox.cpp:

(WebCore::InlineBox::logicalHeight const):
(WebCore::InlineBox::baselinePosition const):
(WebCore::InlineBox::lineHeight const):

Remove the hack from line boxes.

  • rendering/RenderLineBreak.cpp:

(WebCore::RenderLineBreak::boundingBoxForRenderTreeDump const):

Add special bounding box code for this case.
This can be removed in future with a test rebase.

  • rendering/RenderLineBreak.h:
  • rendering/RenderTreeAsText.cpp:

(WebCore::RenderTreeAsText::writeRenderObject):

  • rendering/SimpleLineLayoutResolver.cpp:

(WebCore::SimpleLineLayout::RunResolver::Run::rect const):

Remove the hack from simple lines.

(WebCore::SimpleLineLayout::RunResolver::RunResolver):

  • rendering/SimpleLineLayoutResolver.h:

(WebCore::SimpleLineLayout::RunResolver::Run::baselineOffset const):
(WebCore::SimpleLineLayout::RunResolver::Iterator::atBegin const):

  • rendering/line/LineLayoutTraversal.h:

(WebCore::LineLayoutTraversal::Box::baselineOffset const):
(WebCore::LineLayoutTraversal::Box::isHorizontal const):
(WebCore::LineLayoutTraversal::Box::useLineBreakBoxRenderTreeDumpQuirk const):

  • rendering/line/LineLayoutTraversalComplexPath.h:

(WebCore::LineLayoutTraversal::ComplexPath::isHorizontal const):
(WebCore::LineLayoutTraversal::ComplexPath::baselineOffset const):
(WebCore::LineLayoutTraversal::ComplexPath::useLineBreakBoxRenderTreeDumpQuirk const):

  • rendering/line/LineLayoutTraversalDisplayRunPath.h:

(WebCore::LineLayoutTraversal::DisplayRunPath::baselineOffset const):
(WebCore::LineLayoutTraversal::DisplayRunPath::isHorizontal const):
(WebCore::LineLayoutTraversal::DisplayRunPath::useLineBreakBoxRenderTreeDumpQuirk const):
(WebCore::LineLayoutTraversal::DisplayRunPath::isLastOnLine const):
(WebCore::LineLayoutTraversal::DisplayRunPath::lineBox const):

  • rendering/line/LineLayoutTraversalSimplePath.h:

(WebCore::LineLayoutTraversal::SimplePath::baselineOffset const):
(WebCore::LineLayoutTraversal::SimplePath::isHorizontal const):
(WebCore::LineLayoutTraversal::SimplePath::useLineBreakBoxRenderTreeDumpQuirk const):

LayoutTests:
Remove hack that makes <br> boxes 0-height in quirks mode
https://bugs.webkit.org/show_bug.cgi?id=205004

Reviewed by Zalan Bujtas.

A few changes due to aligning simple line path with complex, rounding, and some vertical text details.

  • fast/multicol/pagination-h-horizontal-bt-expected.txt:
  • fast/multicol/pagination-v-horizontal-bt-expected.txt:
  • fast/ruby/position-after-expected.txt:
  • platform/ios/fast/writing-mode/border-styles-vertical-lr-expected.txt:
  • platform/ios/fast/writing-mode/english-bt-text-expected.txt:
  • platform/ios/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:
  • platform/mac/fast/text/international/bidi-layout-across-linebreak-expected.txt:
  • platform/mac/fast/text/svg-font-face-with-kerning-expected.txt:
  • platform/mac/fast/writing-mode/border-styles-vertical-lr-expected.txt:
  • platform/mac/fast/writing-mode/english-bt-text-expected.txt:
  • platform/mac/fast/writing-mode/text-orientation-basic-expected.txt:
  • platform/mac/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:
  • platform/win/fast/text/international/bidi-layout-across-linebreak-expected.txt:
  • platform/win/fast/writing-mode/english-bt-text-expected.txt:
  • platform/win/fast/writing-mode/text-orientation-basic-expected.txt:
  • platform/win/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:
8:13 AM Changeset in webkit [253325] by Chris Dumez
  • 7 edits in trunk/Source/WebKit

Make preconnectTo()'s completionHandler optional
https://bugs.webkit.org/show_bug.cgi?id=205011

Reviewed by Antti Koivisto.

Make preconnectTo()'s completionHandler optional, so that the network process does not unnecessarily
send an IPC back if the client is not interested.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::preconnectTo):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::preconnectTo):

  • WebProcess/Network/WebLoaderStrategy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadRequest):

7:15 AM Changeset in webkit [253324] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Output hyphen strings
https://bugs.webkit.org/show_bug.cgi?id=205058

Reviewed by Zalan Bujtas.

  • rendering/line/LineLayoutTraversalDisplayRunPath.h:

(WebCore::LineLayoutTraversal::DisplayRunPath::hasHyphen const):

6:38 AM Changeset in webkit [253323] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Fix fast/text/simple-line-layout-hyphenation-constrains.html
https://bugs.webkit.org/show_bug.cgi?id=205048
<rdar://problem/57780425>

Reviewed by Antti Koivisto.

Remove this hack for now and come up with a more sensible fix later if it breaks some tests.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::tryBreakingTextRun const):

6:34 AM Changeset in webkit [253322] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Fix fast/text/basic/005.html
https://bugs.webkit.org/show_bug.cgi?id=205047
<rdar://problem/57780017>

Reviewed by Antti Koivisto.

Remove the code that triggers the assert on negative word-spacing.
Trimming is safe with negative values (and any negative trimmed width special handing should be in LineBreaker).

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::TrimmableContent::append):

1:41 AM Changeset in webkit [253321] by ysuzuki@apple.com
  • 11 edits in trunk/Source

[JSC] Put JSArray in IsoSubspace
https://bugs.webkit.org/show_bug.cgi?id=205049

Reviewed by Mark Lam.

Source/JavaScriptCore:

Put JSArray in IsoSubspace.

  • runtime/ArrayPrototype.h:
  • runtime/JSArray.h:

(JSC::JSArray::subspaceFor):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
  • tools/JSDollarVM.cpp:

Source/WebCore:

RuntimeArray is inheriting JSArray. We should have separate IsoSubspace for this.

  • bindings/js/WebCoreJSClientData.cpp:

(WebCore::JSVMClientData::JSVMClientData):

  • bindings/js/WebCoreJSClientData.h:

(WebCore::JSVMClientData::runtimeArraySpace):

  • bridge/runtime_array.cpp:

(JSC::RuntimeArray::subspaceForImpl):

  • bridge/runtime_array.h:

(JSC::RuntimeArray::create): Deleted.
(JSC::RuntimeArray::getLength const): Deleted.
(JSC::RuntimeArray::getConcreteArray const): Deleted.
(JSC::RuntimeArray::createPrototype): Deleted.
(JSC::RuntimeArray::createStructure): Deleted.

Dec 9, 2019:

9:02 PM Changeset in webkit [253320] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix the x86_64 probe so that we can get a full stack trace with libunwind and lldb.
https://bugs.webkit.org/show_bug.cgi?id=205050

Reviewed by Michael Saboff.

Before this patch, the stack trace from inside a probe function is cut off at ctiMasmProbeTrampoline:

(lldb) bt

  • thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xbbadbeef)

...
frame #4: 0x0000000100824607 JavaScriptCore`WTF::Function<void (JSC::Probe::Context&)>::operator(this=0x000000010b88bd00, in=0x00007ffeefbfd400)(JSC::Probe::Context&) const at Function.h:79:35
frame #5: 0x0000000100823996 JavaScriptCore`JSC::stdFunctionCallback(context=0x00007ffeefbfd400) at MacroAssembler.cpp:53:5
frame #6: 0x000000010082701e JavaScriptCore`JSC::Probe::executeProbe(state=0x00007ffeefbfd480) at ProbeContext.cpp:51:5
frame #7: 0x000000010082614b JavaScriptCore`ctiMasmProbeTrampoline + 299

(lldb)

After this patch, we'll now get the full stack trace from inside the probe function:

(lldb) bt

  • thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0xbbadbeef)

...
frame #4: 0x0000000100826d17 JavaScriptCore`WTF::Function<void (JSC::Probe::Context&)>::operator(this=0x0000000106b878f8, in=0x00007ffeefbfd400)(JSC::Probe::Context&) const at Function.h:79:35
frame #5: 0x0000000100826106 JavaScriptCore`JSC::stdFunctionCallback(context=0x00007ffeefbfd400) at MacroAssembler.cpp:53:5
frame #6: 0x000000010082986e JavaScriptCore`JSC::Probe::executeProbe(state=0x00007ffeefbfd480) at ProbeContext.cpp:51:5
frame #7: 0x00000001008289a2 JavaScriptCore`ctiMasmProbeTrampoline + 338
frame #8: 0x0000466db28025be
frame #9: 0x0000000100754ffc JavaScriptCore`llint_entry at LowLevelInterpreter.asm:994
frame #10: 0x0000000100738173 JavaScriptCore`vmEntryToJavaScript at LowLevelInterpreter64.asm:307
frame #11: 0x0000000101489307 JavaScriptCore`JSC::JITCode::execute(this=0x0000000106ba1520, vm=0x0000000106d00000, protoCallFrame=0x00007ffeefbfd9b8) at JITCodeInlines.h:38:38
frame #12: 0x0000000101488982 JavaScriptCore`JSC::Interpreter::executeProgram(this=0x0000000106bfd1f8, source=0x00007ffeefbff090, (null)=0x000000010d0e0000, thisObj=0x000000010d0e8020) at Interpreter.cpp:847:51
frame #13: 0x00000001017d1f9c JavaScriptCore`JSC::evaluate(globalObject=0x000000010d0e0000, source=0x00007ffeefbff090, thisValue=JSValue @ 0x00007ffeefbfef60, returnedException=0x00007ffeefbff0b0) at Completion.cpp:146:38
frame #14: 0x000000010005838f jsc`runWithOptions(globalObject=0x000000010d0e0000, options=0x00007ffeefbff620, success=0x00007ffeefbff48b) at jsc.cpp:2670:35
frame #15: 0x000000010002a0da jsc`jscmain(this=0x00007ffeefbff5a0, vm=0x0000000106d00000, globalObject=0x000000010d0e0000, success=0x00007ffeefbff48b)::$_6::operator()(JSC::VM&, GlobalObject*, bool&) const at jsc.cpp:3157:13
frame #16: 0x0000000100006eff jsc`int runJSC<jscmain(int, char)::$_6>(options=0x00007ffeefbff620, isWorker=false, func=0x00007ffeefbff5a0)::$_6 const&) at jsc.cpp:3003:9
frame #17: 0x0000000100005988 jsc`jscmain(argc=10, argv=0x00007ffeefbff6c8) at jsc.cpp:3150:18
frame #18: 0x000000010000575e jsc`main(argc=10, argv=0x00007ffeefbff6c8) at jsc.cpp:2498:15
frame #19: 0x00007fff6cfc4da9 libdyld.dylib`start + 1
frame #20: 0x00007fff6cfc4da9 libdyld.dylib`start + 1

(lldb)

The difference is that the x86_64 ctiMasmProbeTrampoline now uses the standard
function prologue, and keeps %rbp pointing to trampoline function's semblance of
a frame that libunwind can understand while it calls the probe function.

  • assembler/MacroAssemblerX86Common.cpp:
8:07 PM Changeset in webkit [253319] by ysuzuki@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

[JSC] Put CustomGetterSetter and DOMAttributeGetterSetter in IsoSubspace
https://bugs.webkit.org/show_bug.cgi?id=205044

Reviewed by Sam Weinig.

Put CustomGetterSetter and DOMAttributeGetterSetter in IsoSubspace.

  • runtime/CustomGetterSetter.h:

(JSC::CustomGetterSetter::subspaceFor):

  • runtime/DOMAttributeGetterSetter.h:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
7:57 PM Changeset in webkit [253318] by ysuzuki@apple.com
  • 8 edits
    2 deletes in trunk/Source/JavaScriptCore

[JSC] Remove NativeStdFunctionCell
https://bugs.webkit.org/show_bug.cgi?id=205045

Reviewed by Sam Weinig.

NativeStdFunctionCell is introduced because we were not able to make derived classes of JSFunction destructible.
But now we can do that by using IsoSubspace. And we already have IsoSubspace for JSNativeStdFunction. So we do
not need to have NativeStdFunctionCell cell. This patch removes it. And making JSNativeStdFunction destructible.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • inspector/InjectedScriptBase.cpp:

(Inspector::InjectedScriptBase::makeAsyncCall):

  • runtime/JSNativeStdFunction.cpp:

(JSC::JSNativeStdFunction::JSNativeStdFunction):
(JSC::JSNativeStdFunction::visitChildren):
(JSC::JSNativeStdFunction::finishCreation):
(JSC::runStdFunction):
(JSC::JSNativeStdFunction::create):

  • runtime/JSNativeStdFunction.h:
  • runtime/NativeStdFunctionCell.cpp: Removed.
  • runtime/NativeStdFunctionCell.h: Removed.
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
6:39 PM Changeset in webkit [253317] by Kocsen Chung
  • 2 edits
    1 add in branches/safari-608-branch/Tools/TestWebKitAPI

Apply patch. rdar://problem/57363565

6:10 PM Changeset in webkit [253316] by eric.carlson@apple.com
  • 10 edits in trunk/Source

Rename media in the GPU process preference
https://bugs.webkit.org/show_bug.cgi?id=205013
<rdar://problem/57755319>

Reviewed by Tim Horton.

Source/WebCore:

  • page/Settings.yaml:

Source/WebKit:

  • Shared/WebPreferences.yaml:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

Source/WebKitLegacy/mac:

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences useGPUProcessForMedia]):
(-[WebPreferences setUseGPUProcessForMedia:]):
(-[WebPreferences outOfProcessMediaEnabled]): Deleted.
(-[WebPreferences setOutOfProcessMediaEnabled:]): Deleted.

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

5:54 PM Changeset in webkit [253315] by Fujii Hironori
  • 2 edits in trunk/Source/WTF

[MSVC] writeNumberToBufferUnsigned is unsafe for bool type
https://bugs.webkit.org/show_bug.cgi?id=204873

Reviewed by Darin Adler.

MSVC reports warning for using / operator for bool type.

warning C4804: '/': unsafe use of type 'bool' in operation

And, 'bool' isn't expected to be serialized as '0' or '1'. 'bool' isn't supported.

  • wtf/text/IntegerToStringConversion.h: Added a static_assert to ensure UnsignedIntegerType isn't bool.
5:54 PM Changeset in webkit [253314] by Tadeu Zagallo
  • 11 edits
    2 deletes in trunk/Source/JavaScriptCore

[WebAssembly] Remove WasmValidate
https://bugs.webkit.org/show_bug.cgi?id=205037

Reviewed by Saam Barati.

It's currently only used when JSC_useWasmLLInt is false and it creates an additional instantiation
of Wasm::FunctionParser, which adds about 100kb to the binary size. This does not introduce any
behavior changes with the default options, but it means that we'll generate bytecode when calling
WebAssembly.validate/new WebAssembly.Module even when the WasmLLInt is disabled.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • wasm/WasmBBQPlan.cpp:

(JSC::Wasm::BBQPlan::didReceiveFunctionData):

  • wasm/WasmEntryPlan.cpp:
  • wasm/WasmLLIntPlan.cpp:
  • wasm/WasmModule.cpp:

(JSC::Wasm::makeValidationResult):
(JSC::Wasm::makeValidationCallback):
(JSC::Wasm::Module::validateSync):
(JSC::Wasm::Module::validateAsync):

  • wasm/WasmModule.h:
  • wasm/WasmOMGForOSREntryPlan.cpp:

(JSC::Wasm::OMGForOSREntryPlan::work):

  • wasm/WasmOMGPlan.cpp:

(JSC::Wasm::OMGPlan::work):

  • wasm/WasmPlan.cpp:
  • wasm/WasmValidate.cpp: Removed.
  • wasm/WasmValidate.h: Removed.
5:50 PM Changeset in webkit [253313] by Fujii Hironori
  • 3 edits in trunk/Source/WebCore

[WinCairo] Add support of Unicode surrogate pair for simple texts
https://bugs.webkit.org/show_bug.cgi?id=205003

Reviewed by Don Olmstead.

FontCache::systemFallbackForCharacters of Windows port was working
only for BMP because it's using GetFontUnicodeRanges API which
supports only BMP. Use GetCharacterPlacement API to get glyphs for
non-BMP.

GlyphPage::fill of WinCairo port was working only for BMP because
it's using GetGlyphIndices API which supports only BMP. Use
GetCharacterPlacement API to get glyphs for non-BMP.

This change can be tested by pixel tests, but WinCairo port
doesn't include -expected.png files yet. Tested manually.

  • platform/graphics/win/FontCacheWin.cpp:

(WebCore::currentFontContainsCharacterNonBMP): Added.
(WebCore::currentFontContainsCharacter): Changed to take a string
instead of a 16bit character.
(WebCore::FontCache::systemFallbackForCharacters):

  • platform/graphics/win/GlyphPageTreeNodeCairoWin.cpp:

(WebCore::GlyphPage::fill): Use GetCharacterPlacement for non-BMP.

5:48 PM Changeset in webkit [253312] by Patrick Griffis
  • 7 edits
    1 copy
    35 adds in trunk/LayoutTests

Import secure cookie tests from WPT
https://bugs.webkit.org/show_bug.cgi?id=204193

Reviewed by Carlos Alberto Lopez Perez.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • web-platform-tests/cookies/resources/cookie-helper.sub.js: Added.

(credFetch):
(assert_dom_cookie):
(assert_cookie):
(resetSameSiteCookies):
(resetSecureCookies):

  • web-platform-tests/cookies/resources/drop.py: Added.

(main):

  • web-platform-tests/cookies/resources/dropSameSite.py: Added.

(main):

  • web-platform-tests/cookies/resources/dropSecure.py: Added.

(main):

  • web-platform-tests/cookies/resources/echo-cookie.html: Added.
  • web-platform-tests/cookies/resources/echo-json.py: Added.

(main):

  • web-platform-tests/cookies/resources/helpers.py: Added.

(setNoCacheAndCORSHeaders):
(makeCookieHeader):
(makeCookieHeader.makeAV):
(makeDropCookie):
(readParameter):
(readCookies):

  • web-platform-tests/cookies/resources/imgIfMatch.py: Added.

(main):

  • web-platform-tests/cookies/resources/list.py: Added.

(main):

  • web-platform-tests/cookies/resources/postToParent.py: Added.

(main):

  • web-platform-tests/cookies/resources/redirectWithCORSHeaders.py: Added.

(main):

  • web-platform-tests/cookies/resources/set-cookie.py: Added.

(main):

  • web-platform-tests/cookies/resources/set.py: Added.

(main):

  • web-platform-tests/cookies/resources/setSameSite.py: Added.

(main):

  • web-platform-tests/cookies/resources/setSecure.py: Added.

(main):

  • web-platform-tests/cookies/resources/testharness-helpers.js: Added.

(executeNextTest):
(executeTestsSerially):

  • web-platform-tests/cookies/secure/set-from-dom.https.sub-expected.txt: Added.
  • web-platform-tests/cookies/secure/set-from-dom.https.sub.html: Added.
  • web-platform-tests/cookies/secure/set-from-dom.sub-expected.txt: Added.
  • web-platform-tests/cookies/secure/set-from-dom.sub.html: Added.
  • web-platform-tests/cookies/secure/set-from-http.https.sub-expected.txt: Added.
  • web-platform-tests/cookies/secure/set-from-http.https.sub.html: Added.
  • web-platform-tests/cookies/secure/set-from-http.https.sub.html.headers: Added.
  • web-platform-tests/cookies/secure/set-from-http.sub-expected.txt: Added.
  • web-platform-tests/cookies/secure/set-from-http.sub.html: Added.
  • web-platform-tests/cookies/secure/set-from-http.sub.html.headers: Added.
  • web-platform-tests/cookies/secure/set-from-ws.sub-expected.txt: Added.
  • web-platform-tests/cookies/secure/set-from-ws.sub.html: Added.
  • web-platform-tests/cookies/secure/set-from-wss.https.sub-expected.txt: Added.
  • web-platform-tests/cookies/secure/set-from-wss.https.sub.html: Added.

LayoutTests:

Mark newly imported test as failing.
Pending fix for WPE/GTK in webkit.org/b/169356

  • platform/gtk/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/wpe/TestExpectations:
  • platform/ios-wk2/imported/w3c/web-platform-tests/content-security-policy/reporting/report-same-origin-with-cookies-expected.txt: Added.
5:12 PM Changeset in webkit [253311] by Jonathan Bedard
  • 2 edits in trunk/Tools

test-webkitpy: Remove --<configuration> flags from CI
https://bugs.webkit.org/show_bug.cgi?id=205016

Reviewed by Stephanie Lewis.

  • BuildSlaveSupport/build.webkit.org-config/steps.py:

(RunPythonTests): Remove --debug/--release flags to test-webkitpy.

4:57 PM Changeset in webkit [253310] by Simon Fraser
  • 3 edits in trunk/LayoutTests

compositing/video/video-border-radius-clipping.html is a flaky Image Failure
https://bugs.webkit.org/show_bug.cgi?id=204951
rdar://problem/57703078

Unreviewed test gardening. Make the test seek so we have a higher chance
of getting a video frame. It's apparently impossible to know when we have
a frame for ref testing.

  • compositing/video/video-border-radius-clipping-expected.html:
  • compositing/video/video-border-radius-clipping.html:
4:53 PM Changeset in webkit [253309] by Megan Gardner
  • 10 edits
    2 adds in trunk

Fill HighlightRangeGroup and HighlightMap with values from JavaScript
https://bugs.webkit.org/show_bug.cgi?id=204934
Source/WebCore:

rdar://problem/57686335

Reviewed by Simon Fraser.

Fillout HighlightMap and HighlightRangeGroup with the information that we're passed from
the JavaScript side. Make sure that the javascript objects are filled out correctly.

Test: highlight/highlight-map-and-group.html

  • Modules/highlight/HighlightMap.cpp:

(WebCore::HighlightMap::synchronizeBackingMap):
(WebCore::HighlightMap::setFromMapLike):
(WebCore::HighlightMap::clear):
(WebCore::HighlightMap::remove):
(WebCore::HighlightMap::getGroupForStyle):
(WebCore::HighlightMap::addHighlightGroup): Deleted.
(WebCore::HighlightMap::namedItem const): Deleted.
(WebCore::HighlightMap::setNamedItem): Deleted.
(WebCore::HighlightMap::deleteNamedProperty): Deleted.

  • Modules/highlight/HighlightMap.h:

(WebCore::HighlightMap::backingMap):
(WebCore::HighlightMap::synchronizeBackingMap): Deleted.
(WebCore::HighlightMap::clear): Deleted.

  • Modules/highlight/HighlightMap.idl:
  • Modules/highlight/HighlightRangeGroup.cpp:

(WebCore::HighlightRangeGroup::HighlightRangeGroup):
(WebCore::HighlightRangeGroup::initializeSetLike):
(WebCore::HighlightRangeGroup::removeFromSetLike):
(WebCore::HighlightRangeGroup::clearFromSetLike):
(WebCore::HighlightRangeGroup::addToSetLike):
(WebCore::HighlightRangeGroup::addRange): Deleted.
(WebCore::HighlightRangeGroup::removeRange): Deleted.
(WebCore::HighlightRangeGroup::Iterator::Iterator): Deleted.
(WebCore::HighlightRangeGroup::Iterator::next): Deleted.

  • Modules/highlight/HighlightRangeGroup.h:

(WebCore::HighlightRangeGroup::ranges const):
(): Deleted.
(WebCore::HighlightRangeGroup::createIterator): Deleted.

  • Modules/highlight/HighlightRangeGroup.idl:
  • dom/StaticRange.cpp:

(WebCore::StaticRange::operator== const):

  • dom/StaticRange.h:

LayoutTests:

Reviewed by Simon Fraser.

  • highlight/highlight-map-and-group-expected.txt: Added.
  • highlight/highlight-map-and-group.html: Added.
4:47 PM Changeset in webkit [253308] by Truitt Savell
  • 29 edits
    4 deletes in trunk

Unreviewed, rolling out r253299.

Casued 30+ imported/ test failures on Mac wk2

Reverted changeset:

"Throttling requestAnimationFrame should be controlled by
RenderingUpdateScheduler"
https://bugs.webkit.org/show_bug.cgi?id=204713
https://trac.webkit.org/changeset/253299

4:43 PM Changeset in webkit [253307] by Alan Coon
  • 8 edits in trunk/Source

Versioning.

4:38 PM Changeset in webkit [253306] by Alan Coon
  • 3 edits
    1 add in branches/safari-609.1.12-branch

Cherry-pick r253280. rdar://problem/57733405

[WebAssembly] Fix LLIntGenerator's checkConsistency contract
https://bugs.webkit.org/show_bug.cgi?id=204998
<rdar://problem/57733405>

Reviewed by Mark Lam.

JSTests:

  • wasm/regress/stack-consistency.js: Added.

Source/JavaScriptCore:

We check the consistency of the WebAssembly parser's expression stack every time the LLIntGenerator calls
push to allocate a new stack value. However, if we call push more than once (e.g. in a loop), the stack
is no longer consistent, since those values have not yet been placed in the parser's expression stack, so
the generator and parser's stacks are out of sync. Instead, whenever we need to push multiple values, we
should first manually call checkConsistency before any pushes, and all pushes after that should be replaced
with push(NoConsistencyCheck).

  • wasm/WasmLLIntGenerator.cpp: (JSC::Wasm::LLIntGenerator::callInformationForCaller): (JSC::Wasm::LLIntGenerator::addArguments): (JSC::Wasm::LLIntGenerator::addLocal):

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

4:08 PM Changeset in webkit [253305] by Alan Coon
  • 1 copy in branches/safari-609.1.12-branch

New branch.

3:39 PM Changeset in webkit [253304] by Chris Dumez
  • 8 edits in trunk/Source/WebKit

Regression(r249329) ViewGestureController::requestRenderTreeSizeNotificationIfNeeded() sometimes uses wrong webPageID for IPC
https://bugs.webkit.org/show_bug.cgi?id=205012

Reviewed by Tim Horton.

  • UIProcess/InspectorTargetProxy.cpp:

(WebKit::InspectorTargetProxy::connect):
(WebKit::InspectorTargetProxy::disconnect):
(WebKit::InspectorTargetProxy::sendMessageToTargetBackend):

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::~ProvisionalPageProxy):
(WebKit::ProvisionalPageProxy::initializeWebPage):
(WebKit::ProvisionalPageProxy::goToBackForwardItem):
(WebKit::ProvisionalPageProxy::messageSenderConnection const):
(WebKit::ProvisionalPageProxy::messageSenderDestinationID const):

  • UIProcess/ProvisionalPageProxy.h:
  • UIProcess/SuspendedPageProxy.cpp:

(WebKit::SuspendedPageProxy::SuspendedPageProxy):
(WebKit::SuspendedPageProxy::unsuspend):
(WebKit::SuspendedPageProxy::close):
(WebKit::SuspendedPageProxy::messageSenderConnection const):
(WebKit::SuspendedPageProxy::messageSenderDestinationID const):

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

(WebKit::WebPageProxy::continueNavigationInNewProcess):
Have SuspendedPageProxy & ProvisionalPageProxy subclass IPC::MessageSender so that we can call send()
on them without having to pass in a PageIdentifier. Passing a PageIdentifier was error-prone.

  • UIProcess/ViewGestureController.cpp:

(WebKit::ViewGestureController::requestRenderTreeSizeNotificationIfNeeded):
When there was a provisonal page proxy, we would properly send the IPC to the provisional page's process
but would use the wrong PageIdentifier for the IPC. We would use the identifier of the committed WebPage
instead of the one of the provisional WebPage.

3:23 PM Changeset in webkit [253303] by Tadeu Zagallo
  • 3 edits
    1 add in trunk

REGRESSION(r253140): WebAssembly validation should check for unmatched else before calling addElse/addElseToUnreachable
https://bugs.webkit.org/show_bug.cgi?id=205022
<rdar://problem/57748159>

Reviewed by Saam Barati.

JSTests:

  • wasm/regress/unmatched-else.js: Added.

(catch):

Source/JavaScriptCore:

When moving the validation code into the parser in r253140, I missed the validation check of whether
an if block was at the top of the control stack before calling addElse/addElseToUnreachable.

  • wasm/WasmFunctionParser.h:

(JSC::Wasm::FunctionParser<Context>::parseExpression):
(JSC::Wasm::FunctionParser<Context>::parseUnreachableExpression):

2:53 PM Changeset in webkit [253302] by Wenson Hsieh
  • 14 edits in trunk

Finish encoding/decoding support for DisplayList::SetState
https://bugs.webkit.org/show_bug.cgi?id=205018

Reviewed by Tim Horton.

Source/WebCore:

Finishes encoding and decoding support for the SetState display list item. See below for more details.

  • platform/graphics/Gradient.h:

(WebCore::Gradient::ColorStop::encode const):
(WebCore::Gradient::ColorStop::decode):
(WebCore::Gradient::LinearData::encode const):
(WebCore::Gradient::LinearData::decode):
(WebCore::Gradient::RadialData::encode const):
(WebCore::Gradient::RadialData::decode):
(WebCore::Gradient::ConicData::encode const):
(WebCore::Gradient::ConicData::decode):
(WebCore::Gradient::encode const):
(WebCore::Gradient::decode):

Introduce encoding and decoding support for WebCore::Gradient, and all of its constituent data members.

  • platform/graphics/GraphicsContext.h:

Remove ShadowColorChange, which was unused; instead, shadow color changes are indicated by the ShadowChange
flag, which also encompasses shadow offset and blur.

  • platform/graphics/Image.h:

Move DisplayList::ImageHandle to ImageHandle in Image.h, so that it can be referenced in the encode/decode
methods of WebCore::Pattern.

  • platform/graphics/Pattern.h:

(WebCore::Pattern::encode const):
(WebCore::Pattern::decode):

Introduce encoding and decoding support for WebCore::Pattern.

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::FillRectWithGradient::FillRectWithGradient):

Implement encode and decode for FillRectWithGradient, now that we're able to encode and decode Gradients.

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::SetState::encode const):
(WebCore::DisplayList::SetState::decode):

Encode the remaining data members of a GraphicsContextStateChange's state. These are: strokeGradient,
strokePattern, fillGradient, fillPattern, shadowOffset, shadowBlur, shadowColor (which was not previously being
encoded due to ShadowColorChange never being set), strokeThickness, textDrawingMode, strokeStyle, fillRule,
compositeOperator, blendMode, imageInterpolationQuality, shouldAntialias, shouldSmoothFonts,
shouldSubpixelQuantizeFonts and shadowsIgnoreTransforms.

(WebCore::DisplayList::FillRectWithGradient::encode const):
(WebCore::DisplayList::FillRectWithGradient::decode):
(WebCore::DisplayList::Item::encode const):
(WebCore::DisplayList::Item::decode):
(WebCore::DisplayList::FillRectWithGradient::FillRectWithGradient): Deleted.

Source/WebKit:

Replaces WebCore::DisplayList::ImageHandle with just WebCore::ImageHandle. See WebCore ChangeLog for more
details.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<ImageHandle>::encode):
(IPC::ArgumentCoder<ImageHandle>::decode):
(IPC::ArgumentCoder<DisplayList::ImageHandle>::encode): Deleted.
(IPC::ArgumentCoder<DisplayList::ImageHandle>::decode): Deleted.

  • Shared/WebCoreArgumentCoders.h:

LayoutTests:

Rebaseline several display list layout tests.

  • displaylists/layer-dispay-list-expected.txt:
  • platform/mac-wk1/displaylists/extent-includes-shadow-expected.txt:
  • platform/mac-wk1/displaylists/extent-includes-transforms-expected.txt:
2:19 PM Changeset in webkit [253301] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Add support for word-break: break-word (and overflow-wrap)
https://bugs.webkit.org/show_bug.cgi?id=205024
<rdar://problem/57766087>

Reviewed by Antti Koivisto.

isTextSplitAtArbitraryPositionAllowed() returns true if the text content can just split anywhere.
word-break: break-word behaves like that unless the line already has breaking opportunity.
See https://www.w3.org/TR/css-text-3/#word-break-property

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::isTextContentWrappingAllowed):
(WebCore::Layout::isContentSplitAllowed):
(WebCore::Layout::isTextSplitAtArbitraryPositionAllowed):
(WebCore::Layout::LineBreaker::breakingContextForInlineContent):
(WebCore::Layout::LineBreaker::wordBreakingBehavior const):
(WebCore::Layout::LineBreaker::tryBreakingTextRun const):
(WebCore::Layout::isContentWrappingAllowed): Deleted.

  • layout/inlineformatting/InlineLineBreaker.h:
1:42 PM Changeset in webkit [253300] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Stop active DOM objects in removedLastRef
https://bugs.webkit.org/show_bug.cgi?id=204975

Reviewed by Antti Koivisto.

Always stop active DOM objects before reaching the destructor.

  • dom/Document.cpp:

(WebCore::Document::~Document):
(WebCore::Document::removedLastRef):
(WebCore::Document::commonTeardown):
(WebCore::Document::prepareForDestruction):

1:12 PM Changeset in webkit [253299] by commit-queue@webkit.org
  • 29 edits
    4 adds in trunk

Throttling requestAnimationFrame should be controlled by RenderingUpdateScheduler
https://bugs.webkit.org/show_bug.cgi?id=204713

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-12-09
Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/animation/request-animation-frame-throttling-outside-viewport.html

requestAnimationFrame is throttled by a timer although its callback are
serviced by the page RenderingUpdate. This led to excessive rAF firing
which makes it more than the preferred frame per seconds.

The solution is to have two throttling types:

1) Page throttling (or full throttling) which slows down all the steps of

RenderingUpdate for the main document and all the sub-documents.

2) Document throttling (or partial throttling) which only slows down the

rAF of a certain document.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::animationInterval const):
(WebCore::DocumentTimeline::updateThrottlingState): Deleted.

  • animation/DocumentTimeline.h:

There is no need to have DocumentTimeline throttling. It is throttled
when the page RenderingUpdate is throttled.

  • dom/Document.cpp:

(WebCore::Document::requestAnimationFrame):
(WebCore::Document::updateLastHandledUserGestureTimestamp):
LowPowerMode throttling is now handled by the page. So remove its handling
in the Document side.

  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::ScriptedAnimationController):
(WebCore::ScriptedAnimationController::page const):
(WebCore::ScriptedAnimationController::interval const):
(WebCore::ScriptedAnimationController::isThrottled const):
(WebCore::ScriptedAnimationController::registerCallback):
(WebCore::ScriptedAnimationController::cancelCallback):
(WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks):
(WebCore::ScriptedAnimationController::scheduleAnimation):
(WebCore::throttlingReasonToString): Deleted.
(WebCore::throttlingReasonsToString): Deleted.
(WebCore::ScriptedAnimationController::addThrottlingReason): Deleted.
(WebCore::ScriptedAnimationController::removeThrottlingReason): Deleted.
(WebCore::ScriptedAnimationController::animationTimerFired): Deleted.

  • dom/ScriptedAnimationController.h:

(WebCore::ScriptedAnimationController::addThrottlingReason):
(WebCore::ScriptedAnimationController::removeThrottlingReason):
Get rid of the rAF throttling timer. Service the rAF callback only when
the period from the current time stamp till the last service time stamp
is greater than the preferred rAF interval .

  • page/FrameView.cpp:

(WebCore::FrameView::updateScriptedAnimationsAndTimersThrottlingState):
ThrottlingReason is now defined outside ScriptedAnimationController.

  • page/Page.cpp:

(WebCore::Page::suspendScriptedAnimations):
(WebCore::Page::resumeScriptedAnimations):
Use forEachDocument().

(WebCore::Page::preferredRenderingUpdateInterval const):
Calculate the preferred RenderingUpdate interval from the throttling
reasons.

(WebCore::Page::setIsVisuallyIdleInternal):
(WebCore::Page::handleLowModePowerChange):
Call adjustRenderingUpdateFrequency() when isLowPowerModeEnabled or
IsVisuallyIdle is toggled.

(WebCore::updateScriptedAnimationsThrottlingReason): Deleted.

  • page/Page.h:

(WebCore::Page::isRenderingUpdateThrottled const):

  • page/RenderingUpdateScheduler.cpp:

(WebCore::RenderingUpdateScheduler::adjustFramesPerSecond):
(WebCore::RenderingUpdateScheduler::adjustRenderingUpdateFrequency):
Change the preferredFramesPerSecond of the DisplayRefreshMonitor if the
throttling is not aggressive e.g. 10_s. Otherwise use the timer.

(WebCore::RenderingUpdateScheduler::scheduleTimedRenderingUpdate):
Call adjustFramesPerSecond() when DisplayRefreshMonitor is created.

(WebCore::RenderingUpdateScheduler::startTimer):

  • page/RenderingUpdateScheduler.h:
  • platform/graphics/AnimationFrameRate.h: Added.

(WebCore::preferredFrameInterval):
(WebCore::preferredFramesPerSecond):

  • platform/graphics/DisplayRefreshMonitor.h:

(WebCore::DisplayRefreshMonitor::setPreferredFramesPerSecond):

  • platform/graphics/DisplayRefreshMonitorManager.cpp:

(WebCore::DisplayRefreshMonitorManager::monitorForClient):
Rename createMonitorForClient() to monitorForClient() since it may return
a cached DisplayRefreshMonitor.

(WebCore::DisplayRefreshMonitorManager::setPreferredFramesPerSecond):
(WebCore::DisplayRefreshMonitorManager::scheduleAnimation):
(WebCore::DisplayRefreshMonitorManager::displayDidRefresh):
No need to call registerClient(). This function was just ensuring the
DisplayRefreshMonitor is created. scheduleAnimation() does the same thing.

(WebCore::DisplayRefreshMonitorManager::createMonitorForClient): Deleted.
(WebCore::DisplayRefreshMonitorManager::registerClient): Deleted.

  • platform/graphics/DisplayRefreshMonitorManager.h:

(WebCore::DisplayRefreshMonitorManager::DisplayRefreshMonitorManager): Deleted.

  • platform/graphics/GraphicsLayerUpdater.cpp:

(WebCore::GraphicsLayerUpdater::GraphicsLayerUpdater):

  • platform/graphics/ios/DisplayRefreshMonitorIOS.mm:

(-[WebDisplayLinkHandler setPreferredFramesPerSecond:]):
Set the preferredFramesPerSecond of the CADisplayLink.

Source/WebKit:

Create an IPC message on the DrawingArea to send a message from the
WebProcess to the UIProcess to setPreferredFramesPerSecond of the
DisplayRefreshMonitor.

  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:

(-[WKOneShotDisplayLinkHandler setPreferredFramesPerSecond:]):
(WebKit::RemoteLayerTreeDrawingAreaProxy::setPreferredFramesPerSecond):
Set the preferredFramesPerSecond of the CADisplayLink.

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:

(WebKit::RemoteLayerTreeDisplayRefreshMonitor::setPreferredFramesPerSecond):
Delegate the call to RemoteLayerTreeDrawingArea.

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::setPreferredFramesPerSecond):
Send the IPC message from the WebProcess to the UIProcess.

LayoutTests:

  • fast/animation/request-animation-frame-throttling-outside-viewport-expected.txt: Added.
  • fast/animation/request-animation-frame-throttling-outside-viewport.html: Added.
  • fast/animation/request-animation-frame-throttling-lowPowerMode-expected.txt:
  • fast/animation/request-animation-frame-throttling-lowPowerMode.html:
  • fast/animation/resources/frame-with-animation-2.html: Added.
12:51 PM Changeset in webkit [253298] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

GetByIdVariant::dumpInContext() should not ref UniqueStringImpls.
https://bugs.webkit.org/show_bug.cgi?id=205023
<rdar://problem/57747265>

Reviewed by Saam Barati.

This is because GetByIdVariant::dumpInContext() may be called from the compiler
thread. GetByIdVariant::dumpInContext() inadvertently invoking the String copy
constructor on an Identifier, which in turn, refs the underlying UniqueStringImpl.
This results in a race against the mutator to adjust the refCount.

The fix is to have GetByIdVariant::dumpInContext() print the underlying
StringImpl instead of the Identifier itself.

  • bytecode/GetByIdVariant.cpp:

(JSC::GetByIdVariant::dumpInContext const):

12:05 PM Changeset in webkit [253297] by youenn@apple.com
  • 7 edits
    6 adds in trunk

NetworkResourceLoader should consume its sandbox extensions when starting a fetch through service worker
https://bugs.webkit.org/show_bug.cgi?id=204883
<rdar://problem/57568535>

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Allow http/wpt tests to use LayoutTests/resources files.

  • resources/config.json:

Source/WebKit:

Consume sandbox extensions in network process before sending fetch task to service worker.
This makes sure network process can send proper sandbox extensions to the service worker and it also ensures
it will have the necessary rights to access the file if the fetch task is not handled by service worker.
Test: http/wpt/service-workers/file-upload.html

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::consumeSandboxExtensionsIfNeeded):

  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:

(WebKit::ServiceWorkerFetchTask::startFetch):

LayoutTests:

  • http/tests/resources/create-temp-file-iframe.html: Added.
  • http/tests/resources/delete-temp-file-iframe.html: Added.
  • http/wpt/service-workers/file-upload-check.py: Added.
  • http/wpt/service-workers/file-upload-expected.txt: Added.
  • http/wpt/service-workers/file-upload-worker.js: Added.
  • http/wpt/service-workers/file-upload.html: Added.
11:23 AM Changeset in webkit [253296] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, speculative tvOS build fix after r253231.

  • platform/ios/WebCoreMotionManager.mm:

(-[WebCoreMotionManager sendMotionData:withHeading:]):

10:37 AM Changeset in webkit [253295] by Truitt Savell
  • 2 edits in trunk/LayoutTests

(r252889) webrtc/peerconnection-page-cache.html is crashing on iOS Debug
https://bugs.webkit.org/show_bug.cgi?id=205017

Unreviewed test gardening.

  • platform/ios/TestExpectations:
10:34 AM Changeset in webkit [253294] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] fix fast/text/simple-lines-multiple-renderers-break.html
https://bugs.webkit.org/show_bug.cgi?id=205014
<rdar://problem/57756348>

Reviewed by Antti Koivisto.

When dealing with series of runs (<span>text</span><span>content</span>) a partial content does not
necessarily mean partial runs. The content can actually be split right at a run boundary.
In such cases we have a partial trailing content but not a partial trailing run.

This patch also covers the case when the overflown run can't be split and
we attempt to find a previous breakable run (in the list of candidate runs).
Since it's guaranteed (with the FIXME of the extremely long hyphen) that all the previous runs fit the line,
we just pass in an infinite available width to LineBreaker::tryBreakingTextRun indicating that we only look for the last breakable position.

e.g. <span style="word-break: break-all">breakable</span><span>and</span><span>longandunbreakablecontent</span>
[breakable][and][longandunbreakablecontent] <- we try to commit this continuous list of runs
[longandunbreakablecontent] <- does not fit so let's go back to the previous runs to see if any of them can be split -> [breakableand].
result:
breakable
andlongandunbreakablecontent

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::wordBreakingBehavior const):
(WebCore::Layout::LineBreaker::tryBreakingTextRun const):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::processUncommittedContent):

  • layout/inlineformatting/LineLayoutContext.h:
10:34 AM Changeset in webkit [253293] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix the macCatalyst build after r253267

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]):

10:00 AM Changeset in webkit [253292] by achristensen@apple.com
  • 9 edits in trunk

Re-disable TLS1.0 and TLS1.1 by default
https://bugs.webkit.org/show_bug.cgi?id=204922
<rdar://problem/57677752>

Reviewed by Youenn Fablet.

Source/WebKit:

Covered by updated API tests.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::willPerformHTTPRedirection):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

Source/WebKitLegacy/mac:

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):

Tools:

  • TestWebKitAPI/TCPServer.cpp:

(TestWebKitAPI::TCPServer::respondWithOK):

  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm:

(TestWebKitAPI::TEST):
(TestWebKitAPI::getWebSocketEventWebKitLegacy):

9:49 AM Changeset in webkit [253291] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix debug assertion for ApplePay API tests on iOS after r253277.

Disable server preconnect if the load will be handled by the LegacyCustomProtocolManager.

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::preconnectTo):

9:12 AM Changeset in webkit [253290] by Darin Adler
  • 31 edits
    1 delete in trunk/Source

Streamline PODIntervalTree code and remove ValueToString
https://bugs.webkit.org/show_bug.cgi?id=199782

Reviewed by Anders Carlsson.

Source/WebCore:

  • dom/Element.cpp: Updated includes.
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::ignoreTrackDisplayUpdateRequests const): Moved this
function out of line so we don't have to include PODIntervalTree.h in the header.
But also, it's only used inside this file. Also updated for m_cueData.
(WebCore::HTMLMediaElement::updateActiveTextTrackCues): More of the same.
(WebCore::HTMLMediaElement::textTrackAddCue): Ditto.
(WebCore::HTMLMediaElement::textTrackRemoveCue): Ditto.
(WebCore::HTMLMediaElement::currentlyActiveCues const): Ditto.

  • html/HTMLMediaElement.h: Changed to not include PODIntervalTree.h, which in turn

includes PODRedBlackTree.h, to significantly cut down how many times we have to
compile those headers. Moved some functions out of line. Made m_cueData to hold the
two cue-related objects so they don't have to be defined in the header. Also
removed ValueToString specializations.

  • html/track/TextTrackCue.cpp:

(WebCore::operator<<): Added debug-only overload of TextStream operator.
(WebCore::TextTrackCue::debugString const): Deleted.

  • html/track/TextTrackCue.h: Updated for the above.
  • html/track/VTTCue.h: Added comments about the incorrect implementation of

isType for VTTCue. Tweaked formatting a bit as well.

  • platform/LayoutUnit.h: Removed ValueToString specialization.
  • platform/PODInterval.h: Use #pragma once. Removed inaccurate comments

saying this works only with POD. Use TextStream instead of ValueToString.
Added overloads to the constructor so we can do move semantics instead of
copy semantics, slightly better for WeakPtr. Removed the toString function
and added an overload of operator<< with TextStream. Use "{ }" instead of
"0" as the default value for user data.

  • platform/PODIntervalTree.h: Removed unneeded includes and unusual default

argument types for the templates. Changed setNeedsFullOrderingComparisons
and node updating to use template arguments instead of virtual functions
and runtime setters. This allowed removal of the constructor and the init
function since the defaults take care of both. Removed the overload of
the allOverlaps function that uses an out argument. Removed unneeded use
of WTF_MAKE_NONCOPYABLE. Use "{ }" instead of 0 for the default value
for user data. Changed the createInterval function to use move semantics.
Changed the nextIntervalAfter function to just take a point, not require
and interval and use its high point. The PODIntervalTree::updateNode
function is replaced with the PODIntervalNodeUpdater::update function.
Removed the ValueToString use and the overriding as well and replaced
with TextStream use.

  • platform/PODRedBlackTree.h: Updated comments to reflect the fact

that this is not specific to POD and uses TextStream. Also that the
needsFullOrderingComparisons technique is now a template argument.
Use pragma once. Added FIXME about a few major improvements we should
make.
(WebCore::PODRedBlackTree::~PODRedBlackTree): Made non-virtual since
we use template arguments for polymorphism and don't need virtual
functions too.
(WebCore::PODRedBlackTree::clear): Rewrote to use a non-recursive
algorithm to delete the tree nodes.
(WebCore::PODRedBlackTree::add): Added an overload that takes an
rvalue reference for move semantics.
(WebCore::PODRedBlackTree::visitInorder const): Deleted.
(WebCore::PODRedBlackTree::size const): Deleted.
(WebCore::PODRedBlackTree::isEmpty const): Replaced the inefficiently
implemented size function with this much faster function. Could have
also made a more efficient size function, but no client needs it.
(WebCore::PODRedBlackTree::setNeedsFullOrderingComparisons): Deleted.
(WebCore::PODRedBlackTree::checkInvariants const): Made non-virtual
since there is no need for polymorphism.
(WebCore::PODRedBlackTree::Node::Node): Use rvalue reference and
move semantics.
(WebCore::PODRedBlackTree::Node::copyFrom): Deleted.
(WebCore::PODRedBlackTree::Node::moveDataFrom): Use move instead of
copy. Also removed the gratuitous use of virtual.
(WebCore::PODRedBlackTree::updateNode): Made non-virtual and instead
call through the NodeUpdaterType (actually more like "traits").
(WebCore::PODRedBlackTree::treeSearch const): Use template argument
instead of data member.
(WebCore::PODRedBlackTree::treeSuccessor): Made a static member function.
(WebCore::PODRedBlackTree::treeMinimum): Ditto.
(WebCore::PODRedBlackTree::treeSuccessorInPostOrder): Added. Useful
when deleting the tree so we visit children before deleting the parent.
(WebCore::PODRedBlackTree::deleteNode): Use moveDataFrom when moving
the data from a node that we are about to delete.
(WebCore::PODRedBlackTree::visitInorderImpl const): Deleted.
(WebCore::PODRedBlackTree::markFree): Deleted.
(WebCore::PODRedBlackTree::Counter): Deleted.
(WebCore::PODRedBlackTree::dumpFromNode const): Use TextStream.

  • platform/graphics/FloatPolygon.cpp:

(WebCore::FloatPolygon::FloatPolygon): Tweaked coding style a bit.
(WebCore::FloatPolygon::overlappingEdges const): Changed to use a return
value instead of an out argument. Also tweaked coding style a bit.
(WebCore::FloatPolygonEdge::debugString const): Deleted.
(WebCore::ooperator>>): Implemented TextStream overload.

  • platform/graphics/FloatPolygon.h: Updated for above, removed

ValueToString specialization.

  • rendering/FloatingObjects.cpp:

(WebCore::FloatingObject::debugString const): Deleted.
(WebCore::operator<<): Implemented TextStream overload.

  • rendering/FloatingObjects.h: Ditto. Also removed include of

PODIntervalTree.h and used a forward declaration instead.

  • rendering/RenderBlock.cpp: Updated includes.
  • rendering/RenderFragmentContainer.cpp:

(WebCore::RenderFragmentContainer::debugString const): Deleted.
(WebCore::operator<<): Implemented TextStream overload.

  • rendering/RenderFragmentContainer.h: Ditto.
  • rendering/RenderFragmentedFlow.cpp:

(WebCore::RenderFragmentedFlow::FragmentSearchAdapter::FragmentSearchAdapter):
Moved this class here from the header, moving the one function body that was
already here up in the file.
(WebCore::RenderFragmentedFlow::fragmentAtBlockOffset const): Refactored and
tweaked code sequence a bit, did not change logic.
(WebCore::RenderFragmentedFlow::updateFragmentsFragmentedFlowPortionRect):
Tweaked code style a bit.

  • rendering/RenderFragmentedFlow.h: Moved FragmentSearchAdapter out of the

header, and tweaked coding style a bit. Removed ValueToString specialization.

  • rendering/shapes/PolygonShape.cpp:

(WebCore::PolygonShape::getExcludedInterval const): Updated to use the
return value from the overlappingEdges function rather than an out argument.

  • rendering/updating/RenderTreeBuilder.cpp: Updated includes.
  • rendering/updating/RenderTreeBuilderFirstLetter.h: Updated forward declarations.
  • rendering/updating/RenderTreeBuilderMultiColumn.cpp: Updated includes.
  • rendering/updating/RenderTreePosition.h: Removed includes of

RenderFragmentedFlow.h, RenderText.h, and RenderView.h, since none are
needed by this header.

  • rendering/updating/RenderTreeUpdater.cpp: Updated includes.

Source/WTF:

  • WTF.xcodeproj/project.pbxproj: Remove ValueToString.h.
  • wtf/CMakeLists.txt: Ditto.
  • wtf/MediaTime.cpp:

(WTF::operator<<): Implement debug-only TextStream serialization
based on toJSONString.

  • wtf/MediaTime.h: Ditto.
  • wtf/text/ValueToString.h: Removed.
8:41 AM Changeset in webkit [253289] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Do not create PartialContent for a single character run when it does not fit.
https://bugs.webkit.org/show_bug.cgi?id=205010
<rdar://problem/57752705>

Reviewed by Antti Koivisto.

Use ContentWrappingRule::Keep instead of ContentWrappingRule::Split when dealing with single character overflown runs on empty lines.
<div style="width: 0px; word-break: break-all">text</div> <- produces single character runs.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::breakingContextForInlineContent):

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::left const):
(WebCore::Layout::InlineTextItem::right const):

7:36 AM Changeset in webkit [253288] by youenn@apple.com
  • 20 edits
    2 adds in trunk

Add an option to capture audio in GPU process
https://bugs.webkit.org/show_bug.cgi?id=205007

Reviewed by Eric Carlson.

Source/WebCore:

Add JS console logging of error when trying to create a MediaStream.
Test: fast/mediastream/captureAudioInGPUProcess.html

  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::allow):

  • platform/mediastream/RealtimeMediaSourceCenter.cpp:

(WebCore::RealtimeMediaSourceCenter::createMediaStream):

  • platform/mediastream/RealtimeMediaSourceCenter.h:

Source/WebKit:

Add a flag to make audio capture in GPU process.
In WebProcess, if trying to capture through GPUProcess, send back an error since this is not implemented.

  • Shared/WebPreferences.yaml:
  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/API/APIProcessPoolConfiguration.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetCaptureAudioInGPUProcessEnabled):
(WKPreferencesGetCaptureAudioInGPUProcessEnabled):

  • UIProcess/API/C/WKPreferencesRef.h:
  • UIProcess/WebPreferences.cpp:

(WebKit::WebPreferences::updateBoolValueForInternalDebugFeatureKey):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::initializeNewWebProcess):
(WebKit::WebProcessPool::createWebPage):

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::initialize):
(WebKit::UserMediaCaptureManager::AudioFactory::createAudioCaptureSource):

  • WebProcess/cocoa/UserMediaCaptureManager.h:

(WebKit::UserMediaCaptureManager::AudioFactory::setShouldCaptureInGPUProcess):

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::updateTestOptionsFromTestHeader):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions const):

LayoutTests:

  • fast/mediastream/captureAudioInGPUProcess-expected.txt: Added.
  • fast/mediastream/captureAudioInGPUProcess.html: Added.
7:28 AM Changeset in webkit [253287] by Antti Koivisto
  • 6 edits in trunk/Source/WebCore

[LFC][Integration] Hit testing
https://bugs.webkit.org/show_bug.cgi?id=205008

Reviewed by Zalan Bujtas.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::paint):
(WebCore::LayoutIntegration::LineLayout::hitTest):

Hit test LFC.

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::LayoutTreeContent::addLayoutBoxForRenderer):

Add Layout::Box -> RenderObject map.

  • layout/layouttree/LayoutTreeBuilder.h:

(WebCore::Layout::LayoutTreeContent::rendererForLayoutBox const):
(WebCore::Layout::LayoutTreeContent::addLayoutBoxForRenderer): Deleted.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::hitTestInlineChildren):

Call into LFC hit test function.

6:46 AM Changeset in webkit [253286] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC] Fix fast/text/word-break.html
https://bugs.webkit.org/show_bug.cgi?id=204999
<rdar://problem/57736608>

Reviewed by Antti Koivisto.

Keep at least one character on the line when even the first character overflows and the line is empty.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::breakingContextForInlineContent):
(WebCore::Layout::LineBreaker::Content::firstTextRunIndex const):

  • layout/inlineformatting/InlineLineBreaker.h:
6:24 AM Changeset in webkit [253285] by youenn@apple.com
  • 5 edits in trunk

fast/mediastream/mediastreamtrack-video-clone.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=205006

Reviewed by Eric Carlson.

Source/WebCore:

Covered by test no longer flaky.

  • platform/mediastream/RealtimeVideoSource.cpp:

(WebCore::RealtimeVideoSource::clone):
When cloning the source, clone its size in addition to its settings.

LayoutTests:

  • fast/mediastream/mediastreamtrack-video-clone-expected.txt:
  • fast/mediastream/mediastreamtrack-video-clone.html:

Add br to spot any potential issue with video elements to text dump.

1:18 AM Changeset in webkit [253284] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

[GStreamer] Crashes in MediaPlayerPrivateGStreamer::ensureGstGLContext
https://bugs.webkit.org/show_bug.cgi?id=204848

Reviewed by Michael Catanzaro.

Make sure the GL video sink uses a valid WebKit shared GL context.

  • platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:

(ensureGstGLContext):
(webKitGLVideoSinkProbePlatform):

12:17 AM Changeset in webkit [253283] by Wenson Hsieh
  • 6 edits in trunk/Source/WebCore

Add encoding and decoding support for more DisplayListItems
https://bugs.webkit.org/show_bug.cgi?id=205001

Reviewed by Tim Horton.

Adds boilerplate code to encode and decode the following display list items: SetLineCap, SetLineDash,
SetLineJoin, SetMiterLimit, ClearShadow, Clip, ClipOut, ClipOutToPath, ClipPath, BeginTransparencyLayer,
EndTransparencyLayer, DrawLine, DrawLinesForText, DrawDotsForDocumentMarker, DrawEllipse, DrawFocusRingPath,
DrawFocusRingRects, FillRectWithRoundedHole, FillEllipse, StrokeRect, StrokePath, StrokeEllipse,
ApplyStrokePattern, ApplyFillPattern, ApplyDeviceScaleFactor, DrawTiledImage, DrawTiledScaledImage, and
DrawPattern.

  • platform/graphics/GraphicsContext.h:

(WebCore::DocumentMarkerLineStyle::encode const):
(WebCore::DocumentMarkerLineStyle::decode):

  • platform/graphics/GraphicsTypes.h:
  • platform/graphics/WindRule.h:
  • platform/graphics/displaylists/DisplayListItems.cpp:

Additionally make a few other WebCore classes and enums encodable and decodable.

(WebCore::DisplayList::SetLineCap::SetLineCap):
(WebCore::DisplayList::SetLineDash::SetLineDash):
(WebCore::DisplayList::SetLineJoin::SetLineJoin):
(WebCore::DisplayList::SetMiterLimit::SetMiterLimit):
(WebCore::DisplayList::ClearShadow::ClearShadow):
(WebCore::DisplayList::Clip::Clip):
(WebCore::DisplayList::ClipOut::ClipOut):
(WebCore::DisplayList::ClipOutToPath::ClipOutToPath):
(WebCore::DisplayList::ClipPath::ClipPath):
(WebCore::DisplayList::DrawLine::DrawLine):
(WebCore::DisplayList::DrawLinesForText::DrawLinesForText):
(WebCore::DisplayList::DrawDotsForDocumentMarker::DrawDotsForDocumentMarker):
(WebCore::DisplayList::DrawEllipse::DrawEllipse):
(WebCore::DisplayList::DrawFocusRingPath::DrawFocusRingPath):
(WebCore::DisplayList::DrawFocusRingRects::DrawFocusRingRects):
(WebCore::DisplayList::FillRectWithRoundedHole::FillRectWithRoundedHole):
(WebCore::DisplayList::FillEllipse::FillEllipse):
(WebCore::DisplayList::StrokeRect::StrokeRect):
(WebCore::DisplayList::StrokeEllipse::StrokeEllipse):
(WebCore::DisplayList::StrokePath::StrokePath):

Also remove m_blockLocation from StrokePath (this member variable was unused, and seems to have been copied over
from other drawing items).

(WebCore::DisplayList::BeginTransparencyLayer::BeginTransparencyLayer):
(WebCore::DisplayList::EndTransparencyLayer::EndTransparencyLayer):
(WebCore::DisplayList::ApplyStrokePattern::ApplyStrokePattern):
(WebCore::DisplayList::ApplyFillPattern::ApplyFillPattern):
(WebCore::DisplayList::ApplyDeviceScaleFactor::ApplyDeviceScaleFactor):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::SetLineCap::encode const):
(WebCore::DisplayList::SetLineCap::decode):
(WebCore::DisplayList::SetLineDash::encode const):
(WebCore::DisplayList::SetLineDash::decode):
(WebCore::DisplayList::SetLineJoin::encode const):
(WebCore::DisplayList::SetLineJoin::decode):
(WebCore::DisplayList::SetMiterLimit::encode const):
(WebCore::DisplayList::SetMiterLimit::decode):
(WebCore::DisplayList::ClearShadow::encode const):
(WebCore::DisplayList::ClearShadow::decode):
(WebCore::DisplayList::Clip::encode const):
(WebCore::DisplayList::Clip::decode):
(WebCore::DisplayList::ClipOut::encode const):
(WebCore::DisplayList::ClipOut::decode):
(WebCore::DisplayList::ClipOutToPath::encode const):
(WebCore::DisplayList::ClipOutToPath::decode):
(WebCore::DisplayList::ClipPath::encode const):
(WebCore::DisplayList::ClipPath::decode):
(WebCore::DisplayList::DrawTiledImage::encode const):
(WebCore::DisplayList::DrawTiledImage::decode):
(WebCore::DisplayList::DrawTiledScaledImage::encode const):
(WebCore::DisplayList::DrawTiledScaledImage::decode):
(WebCore::DisplayList::DrawPattern::DrawPattern):
(WebCore::DisplayList::DrawPattern::encode const):
(WebCore::DisplayList::DrawPattern::decode):
(WebCore::DisplayList::BeginTransparencyLayer::encode const):
(WebCore::DisplayList::BeginTransparencyLayer::decode):
(WebCore::DisplayList::EndTransparencyLayer::encode const):
(WebCore::DisplayList::EndTransparencyLayer::decode):
(WebCore::DisplayList::DrawLine::encode const):
(WebCore::DisplayList::DrawLine::decode):
(WebCore::DisplayList::DrawLinesForText::encode const):
(WebCore::DisplayList::DrawLinesForText::decode):
(WebCore::DisplayList::DrawDotsForDocumentMarker::encode const):
(WebCore::DisplayList::DrawDotsForDocumentMarker::decode):
(WebCore::DisplayList::DrawEllipse::encode const):
(WebCore::DisplayList::DrawEllipse::decode):
(WebCore::DisplayList::DrawFocusRingPath::encode const):
(WebCore::DisplayList::DrawFocusRingPath::decode):
(WebCore::DisplayList::DrawFocusRingRects::encode const):
(WebCore::DisplayList::DrawFocusRingRects::decode):
(WebCore::DisplayList::FillRectWithRoundedHole::encode const):
(WebCore::DisplayList::FillRectWithRoundedHole::decode):
(WebCore::DisplayList::FillEllipse::encode const):
(WebCore::DisplayList::FillEllipse::decode):
(WebCore::DisplayList::StrokeRect::encode const):
(WebCore::DisplayList::StrokeRect::decode):
(WebCore::DisplayList::StrokePath::encode const):
(WebCore::DisplayList::StrokePath::decode):
(WebCore::DisplayList::StrokeEllipse::encode const):
(WebCore::DisplayList::StrokeEllipse::decode):
(WebCore::DisplayList::ApplyStrokePattern::encode const):
(WebCore::DisplayList::ApplyStrokePattern::decode):
(WebCore::DisplayList::ApplyFillPattern::encode const):
(WebCore::DisplayList::ApplyFillPattern::decode):
(WebCore::DisplayList::ApplyDeviceScaleFactor::encode const):
(WebCore::DisplayList::ApplyDeviceScaleFactor::decode):
(WebCore::DisplayList::Item::encode const):
(WebCore::DisplayList::Item::decode):
(WebCore::DisplayList::SetLineCap::SetLineCap): Deleted.
(WebCore::DisplayList::SetLineDash::SetLineDash): Deleted.
(WebCore::DisplayList::SetLineJoin::SetLineJoin): Deleted.
(WebCore::DisplayList::SetMiterLimit::SetMiterLimit): Deleted.
(WebCore::DisplayList::ClearShadow::ClearShadow): Deleted.
(WebCore::DisplayList::Clip::Clip): Deleted.
(WebCore::DisplayList::ClipOut::ClipOut): Deleted.
(WebCore::DisplayList::ClipOutToPath::ClipOutToPath): Deleted.
(WebCore::DisplayList::ClipPath::ClipPath): Deleted.
(WebCore::DisplayList::BeginTransparencyLayer::BeginTransparencyLayer): Deleted.
(WebCore::DisplayList::EndTransparencyLayer::EndTransparencyLayer): Deleted.
(WebCore::DisplayList::DrawLine::DrawLine): Deleted.
(WebCore::DisplayList::DrawLinesForText::DrawLinesForText): Deleted.
(WebCore::DisplayList::DrawDotsForDocumentMarker::DrawDotsForDocumentMarker): Deleted.
(WebCore::DisplayList::DrawEllipse::DrawEllipse): Deleted.
(WebCore::DisplayList::DrawFocusRingPath::DrawFocusRingPath): Deleted.
(WebCore::DisplayList::DrawFocusRingRects::DrawFocusRingRects): Deleted.
(WebCore::DisplayList::FillRectWithRoundedHole::FillRectWithRoundedHole): Deleted.
(WebCore::DisplayList::FillEllipse::FillEllipse): Deleted.
(WebCore::DisplayList::StrokeRect::StrokeRect): Deleted.
(WebCore::DisplayList::StrokePath::StrokePath): Deleted.
(WebCore::DisplayList::StrokeEllipse::StrokeEllipse): Deleted.
(WebCore::DisplayList::ApplyStrokePattern::ApplyStrokePattern): Deleted.
(WebCore::DisplayList::ApplyFillPattern::ApplyFillPattern): Deleted.
(WebCore::DisplayList::ApplyDeviceScaleFactor::ApplyDeviceScaleFactor): Deleted.

Dec 8, 2019:

11:25 PM Changeset in webkit [253282] by timothy_horton@apple.com
  • 5 edits in trunk/Tools

REGRESSION: Crash under UIScriptControllerIOS::simulateAccessibilitySettingsChangeNotification
https://bugs.webkit.org/show_bug.cgi?id=205002

Reviewed by Wenson Hsieh.

Keep a strong reference to the UIScriptController while running async tasks.
UIScriptContext will be nulled out if the view was torn down, but this way
we keep the UIScriptController itself and can find the null UIScriptContext
reliably.

  • DumpRenderTree/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::doAsyncTask):
(WTR::UIScriptControllerIOS::zoomToScale):

  • DumpRenderTree/mac/UIScriptControllerMac.mm:

(WTR::UIScriptControllerMac::doAsyncTask):
(WTR::UIScriptControllerMac::activateDataListSuggestion):
(WTR::UIScriptControllerMac::removeViewFromWindow):
(WTR::UIScriptControllerMac::addViewToWindow):

  • WebKitTestRunner/ios/UIScriptControllerIOS.mm:

(WTR::UIScriptControllerIOS::doAfterPresentationUpdate):
(WTR::UIScriptControllerIOS::doAfterNextStablePresentationUpdate):
(WTR::UIScriptControllerIOS::ensurePositionInformationIsUpToDateAt):
(WTR::UIScriptControllerIOS::doAfterVisibleContentRectUpdate):
(WTR::UIScriptControllerIOS::zoomToScale):
(WTR::UIScriptControllerIOS::retrieveSpeakSelectionContent):
(WTR::UIScriptControllerIOS::simulateAccessibilitySettingsChangeNotification):
(WTR::UIScriptControllerIOS::touchDownAtPoint):
(WTR::UIScriptControllerIOS::liftUpAtPoint):
(WTR::UIScriptControllerIOS::twoFingerSingleTapAtPoint):
(WTR::UIScriptControllerIOS::doubleTapAtPoint):
(WTR::UIScriptControllerIOS::stylusDownAtPoint):
(WTR::UIScriptControllerIOS::stylusMoveToPoint):
(WTR::UIScriptControllerIOS::stylusUpAtPoint):
(WTR::UIScriptControllerIOS::stylusTapAtPointWithModifiers):
(WTR::UIScriptControllerIOS::dragFromPointToPoint):
(WTR::UIScriptControllerIOS::longPressAtPoint):
(WTR::UIScriptControllerIOS::typeCharacterUsingHardwareKeyboard):
(WTR::UIScriptControllerIOS::dismissFilePicker):
(WTR::UIScriptControllerIOS::applyAutocorrection):
(WTR::UIScriptControllerIOS::simulateRotation):
(WTR::UIScriptControllerIOS::simulateRotationLikeSafari):
(WTR::UIScriptControllerIOS::setDidStartFormControlInteractionCallback):
(WTR::UIScriptControllerIOS::setDidEndFormControlInteractionCallback):
(WTR::UIScriptControllerIOS::setDidShowContextMenuCallback):
(WTR::UIScriptControllerIOS::setDidDismissContextMenuCallback):
(WTR::UIScriptControllerIOS::setWillBeginZoomingCallback):
(WTR::UIScriptControllerIOS::setDidEndZoomingCallback):
(WTR::UIScriptControllerIOS::setDidShowKeyboardCallback):
(WTR::UIScriptControllerIOS::setDidHideKeyboardCallback):
(WTR::UIScriptControllerIOS::setWillPresentPopoverCallback):
(WTR::UIScriptControllerIOS::setDidDismissPopoverCallback):
(WTR::UIScriptControllerIOS::setDidEndScrollingCallback):
(WTR::UIScriptControllerIOS::activateDataListSuggestion):
(WTR::UIScriptControllerIOS::doAfterDoubleTapDelay):

  • WebKitTestRunner/mac/UIScriptControllerMac.mm:

(WTR::UIScriptControllerMac::zoomToScale):
(WTR::UIScriptControllerMac::simulateAccessibilitySettingsChangeNotification):
(WTR::UIScriptControllerMac::chooseMenuAction):
(WTR::UIScriptControllerMac::activateAtPoint):

5:52 PM Changeset in webkit [253281] by yousuke.kimoto@sony.com
  • 5 edits in trunk/Source/JavaScriptCore

[WinCairo] Refine initialization and error handling in RemoteInspectorSocket
https://bugs.webkit.org/show_bug.cgi?id=204338

Reviewed by Fujii Hironori.

RemoteInspectorSocket socket error handling is not enough,
which should be refined to avoid error cases.

  • inspector/remote/socket/RemoteInspectorSocket.h: Modifed return value checks to hanlde error cases.
  • inspector/remote/socket/RemoteInspectorSocketEndpoint.cpp: Refined check error handling.

(Inspector::RemoteInspectorSocketEndpoint::createListener):

  • inspector/remote/socket/posix/RemoteInspectorSocketPOSIX.cpp: Ditto

(Inspector::Socket::connect):
(Inspector::Socket::listen):
(Inspector::Socket::setup):
(Inspector::Socket::isListening):
(Inspector::Socket::getPort):
(Inspector::Socket::preparePolling):

  • inspector/remote/socket/win/RemoteInspectorSocketWin.cpp: Ditto

(Inspector::Socket::Socket::create):
(Inspector::Socket::setOpt):
(Inspector::Socket::bindAndListen):
(Inspector::Socket::connect):
(Inspector::Socket::accept):
(Inspector::Socket::createPair):
(Inspector::Socket::setup):
(Inspector::Socket::isListening):
(Inspector::Socket::getPort):
(Inspector::Socket::read):
(Inspector::Socket::write):
(Inspector::Socket::preparePolling): Initialized 'poll' with zero

5:35 PM Changeset in webkit [253280] by Tadeu Zagallo
  • 3 edits
    1 add in trunk

[WebAssembly] Fix LLIntGenerator's checkConsistency contract
https://bugs.webkit.org/show_bug.cgi?id=204998
<rdar://problem/57733405>

Reviewed by Mark Lam.

JSTests:

  • wasm/regress/stack-consistency.js: Added.

Source/JavaScriptCore:

We check the consistency of the WebAssembly parser's expression stack every time the LLIntGenerator calls
push to allocate a new stack value. However, if we call push more than once (e.g. in a loop), the stack
is no longer consistent, since those values have not yet been placed in the parser's expression stack, so
the generator and parser's stacks are out of sync. Instead, whenever we need to push multiple values, we
should first manually call checkConsistency before any pushes, and all pushes after that should be replaced
with push(NoConsistencyCheck).

  • wasm/WasmLLIntGenerator.cpp:

(JSC::Wasm::LLIntGenerator::callInformationForCaller):
(JSC::Wasm::LLIntGenerator::addArguments):
(JSC::Wasm::LLIntGenerator::addLocal):

3:27 PM Changeset in webkit [253279] by rniwa@webkit.org
  • 11 edits in trunk/Source/WebCore

There should be one MicrotaskQueue per EventLoop
https://bugs.webkit.org/show_bug.cgi?id=204492
<rdar://problem/57420645>

Reviewed by Antti Koivisto.

This patch makes microtask queue and the microtasks for mutation observers and custom elements
specific to each event loop so that only similar origin windows share the same microtask queue
and mutation observer's compound microtask or custom element's backup element queue.

As a result, we can remove the workaround we added in r247222.

Because microtasks for mutation observers and custom elements are shared across similar origin
window agents, we can't use any one document's task group to schedule these. Instead, we create
a new "perpetual" task group in WindowEventLoop which is never suspended or stopped. It's the
responsibility of mutation observer and custom elements' code to deal with suspened or stopped
documents as it has been the case.

See also: https://dom.spec.whatwg.org/#queue-a-mutation-observer-compound-microtask

https://html.spec.whatwg.org/multipage/custom-elements.html#backup-element-queue

Test: editing/pasteboard/paste-does-not-fire-promises-while-sanitizing-web-content.html

  • dom/CustomElementReactionQueue.cpp:

(WebCore::CustomElementQueue::add): Renamed from CustomElementReactionQueue::ElementQueue to
allow forward declaration in EventLoop.h.
(WebCore::CustomElementQueue::invokeAll): Ditto.
(WebCore::CustomElementQueue::processQueue): Ditto.
(WebCore::CustomElementReactionQueue::enqueueElementOnAppropriateElementQueue):
(WebCore::CustomElementReactionQueue::processBackupQueue):
(WebCore::CustomElementReactionQueue::ensureBackupQueue): Deleted. Moved to WindowEventLoop.
(WebCore::CustomElementReactionQueue::backupElementQueue): Ditto.

  • dom/CustomElementReactionQueue.h:

(WebCore::CustomElementQueue): Renamed from CustomElementReactionQueue::ElementQueue to allow
forward declaration in EventLoop.h.

  • dom/Document.cpp:

(WebCore::Document::finishedParsing): Removed the workaround added in r247222.
(WebCore::Document::eventLoop):
(WebCore::Document::windowEventLoop): Added.

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

(WebCore::activeMutationObservers): Deleted. Moved to WindowEventLoop.
(WebCore::suspendedMutationObservers): Ditto.
(WebCore::signalSlotList): Ditto.
(WebCore::MutationObserver::queueMutationObserverCompoundMicrotask): Ditto.
(WebCore::MutationObserver::enqueueMutationRecord):
(WebCore::MutationObserver::enqueueSlotChangeEvent):
(WebCore::MutationObserver::setHasTransientRegistration):
(WebCore::MutationObserver::notifyMutationObservers): Now takes WindowEventLoop since various
lists and hash maps are specific to each WindowEventLoop.

  • dom/MutationObserver.h:
  • dom/WindowEventLoop.cpp:

(WebCore::WindowEventLoop::WindowEventLoop): Create m_perpetualTaskGroupForSimilarOriginWindowAgents.
(WebCore::WindowEventLoop::microtaskQueue):
(WebCore::WindowEventLoop::queueMutationObserverCompoundMicrotask):
(WebCore::WindowEventLoop::backupElementQueue):

  • dom/WindowEventLoop.h:
  • editing/markup.cpp:

(WebCore::createPageForSanitizingWebContent): Removed the workaround added in r247222.

  • page/Page.h:

(WebCore::Page::setIsForSanitizingWebContent): Ditto.
(WebCore::Page::isForSanitizingWebContent const): Ditto.

1:31 PM Changeset in webkit [253278] by Wenson Hsieh
  • 5 edits in trunk/Source

Move WebCore::Path encoders and decoders into WebCore from WebCoreArgumentCoders
https://bugs.webkit.org/show_bug.cgi?id=204993

Reviewed by Tim Horton.

Source/WebCore:

Move encoding and decoding logic from WebCoreArgumentCoders into WebCore. The ability to encode or decode Paths
is needed in order to encode or decode DisplayListItems that contain Paths; since these encoders live in
WebCore, the encoders for Paths should live there as well.

No change in behavior.

  • platform/graphics/Path.cpp:
  • platform/graphics/Path.h:

Also fixes up the indentation of the Path class in this header, such that the class declaration isn't indented
one level past the namespace.

(WebCore::Path::isNull const):
(WebCore::Path::platformPath const):
(WebCore::Path::circleControlPoint):
(WebCore::Path::encode const):
(WebCore::Path::decode):

Source/WebKit:

Remove Encoder/Decoder support for WebCore::Path.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::pathEncodeApplierFunction): Deleted.
(IPC::ArgumentCoder<Path>::encode): Deleted.
(IPC::ArgumentCoder<Path>::decode): Deleted.

  • Shared/WebCoreArgumentCoders.h:
1:30 PM Changeset in webkit [253277] by Chris Dumez
  • 17 edits in trunk

Preconnect to server as early as possible in WebPage::LoadRequest
https://bugs.webkit.org/show_bug.cgi?id=204992

Reviewed by Antti Koivisto.

Preconnect to server as early as possible in WebPage::LoadRequest. This avoids delaying the
connection to the server until after the policy check and is a ~1.3% progression on PLT5 on
both macOS and iOS.

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::preconnectTo):

  • WebProcess/Network/WebLoaderStrategy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::loadRequest):

11:10 AM Changeset in webkit [253276] by youenn@apple.com
  • 16 edits in trunk/Source/WebCore

Do not use DOMGuarded for maplike
https://bugs.webkit.org/show_bug.cgi?id=204879

Reviewed by Darin Adler.

Update maplike according setlike model where we support syncing at creation of the JS wrapper
and syncing whenever setlike/maplike methods are called.
Removing DOMGuardedObject makes implementation more lightweight, there is less things to implement on DOM side
and it allows collecting the private map to free memory if needed.

Covered by existing tests and rebased binding tests.

  • Modules/highlight/HighlightMap.cpp:

(WebCore::HighlightMap::initializeMapLike):

  • Modules/highlight/HighlightMap.h:

(WebCore::HighlightMap::synchronizeBackingMap): Deleted.
(WebCore::HighlightMap::backingMap): Deleted.

  • Modules/mediastream/RTCStatsReport.h:

(WebCore::RTCStatsReport::create):
(WebCore::RTCStatsReport::initializeMapLike):
(WebCore::RTCStatsReport::RTCStatsReport):
(WebCore::RTCStatsReport::synchronizeBackingMap): Deleted.
(WebCore::RTCStatsReport::backingMap): Deleted.
(WebCore::RTCStatsReport::addStats): Deleted.

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::createStatsCollector):

  • Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.cpp:

(WebCore::LibWebRTCStatsCollector::~LibWebRTCStatsCollector):
(WebCore::initializeRTCStatsReportBackingMap):
(WebCore::LibWebRTCStatsCollector::OnStatsDelivered):

  • Modules/mediastream/libwebrtc/LibWebRTCStatsCollector.h:
  • bindings/js/JSDOMMapLike.cpp:

(WebCore::getBackingMap):
(WebCore::clearBackingMap):
(WebCore::setToBackingMap):
(WebCore::forwardAttributeGetterToBackingMap):
(WebCore::forwardFunctionCallToBackingMap):
(WebCore::forwardForEachCallToBackingMap):
(WebCore::initializeBackingMap): Deleted.
(WebCore::createBackingMap): Deleted.

  • bindings/js/JSDOMMapLike.h:

(WebCore::DOMMapAdapter::DOMMapAdapter):
(WebCore::DOMMapAdapter::set):
(WebCore::DOMMapAdapter::clear):
(WebCore::getAndInitializeBackingMap):
(WebCore::forwardSizeToMapLike):
(WebCore::forwardEntriesToMapLike):
(WebCore::forwardKeysToMapLike):
(WebCore::forwardValuesToMapLike):
(WebCore::forwardClearToMapLike):
(WebCore::forwardForEachToMapLike):
(WebCore::forwardGetToMapLike):
(WebCore::forwardHasToMapLike):
(WebCore::forwardSetToMapLike):
(WebCore::forwardDeleteToMapLike):
(): Deleted.
(WebCore::DOMMapLike::set): Deleted.
(WebCore::synchronizeBackingMap): Deleted.

  • bindings/js/JSDOMSetLike.cpp:
  • bindings/js/JSDOMSetLike.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

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

(WebCore::JSMapLike::finishCreation):

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

(WebCore::JSReadOnlyMapLike::finishCreation):

  • testing/InternalsMapLike.cpp:

(WebCore::InternalsMapLike::initializeMapLike):
(WebCore::InternalsMapLike::synchronizeBackingMap): Deleted.

  • testing/InternalsMapLike.h:

(WebCore::InternalsMapLike::backingMap): Deleted.

11:10 AM Changeset in webkit [253275] by youenn@apple.com
  • 17 edits in trunk

Support different resolutions for video tracks captured from UIProcess
https://bugs.webkit.org/show_bug.cgi?id=204945

Reviewed by Eric Carlson.

Source/WebCore:

Remove whether the a source is remote or not.
Previously we were doing the distinction as resizing would happen in WebProcess and not in UIProcess.
We are now moving away from doing resizing in WebProcess.
Covered by existing tests.

  • platform/mediastream/RealtimeMediaSource.h:
  • platform/mediastream/RealtimeMediaSourceFactory.h:
  • platform/mediastream/RealtimeVideoCaptureSource.cpp:

(WebCore::RealtimeVideoCaptureSource::adaptVideoSample):
For remote tracks, we also update the size for observers.

  • platform/mediastream/RealtimeVideoSource.cpp:

(WebCore::m_source):
(WebCore::RealtimeVideoSource::sourceSettingsChanged):
Update computation of size based on rotation.
This makes sure we have resizing done right.

  • platform/mediastream/RealtimeVideoSource.h:
  • platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:

(WebCore::DisplayCaptureSourceCocoa::emitFrame):

Source/WebKit:

Change video capture in uiprocess to an experimental flag.
Add support for remote video source cloning by sending some IPC to UIProcess and cloning the source there.
This triggers IPC for both cloning and cloned sources but this allows to do resizing in UIProcess instead of WebProcess.
We thus disable video capture resizing in WebProcess.

  • Shared/WebPreferences.yaml:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::SourceProxy::start):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::stop):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::requestToEnd):
(WebKit::UserMediaCaptureManagerProxy::SourceProxy::preventSourceFromStopping):
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
(WebKit::UserMediaCaptureManagerProxy::startProducingData):
(WebKit::UserMediaCaptureManagerProxy::stopProducingData):
(WebKit::UserMediaCaptureManagerProxy::clone):
(WebKit::UserMediaCaptureManagerProxy::requestToEnd):

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

(WebKit::UserMediaCaptureManager::Source::sourceID const):
(WebKit::UserMediaCaptureManager::Source::settings const):
(WebKit::UserMediaCaptureManager::Source::remoteVideoSampleAvailable):
(WebKit::UserMediaCaptureManager::Source::requestToEnd):
(WebKit::UserMediaCaptureManager::Source::stopBeingObserved):
(WebKit::UserMediaCaptureManager::cloneSource):
(WebKit::UserMediaCaptureManager::cloneVideoSource):
(WebKit::UserMediaCaptureManager::requestToEnd):
(WebKit::UserMediaCaptureManager::VideoFactory::setVideoCapturePageState):

  • WebProcess/cocoa/UserMediaCaptureManager.h:

LayoutTests:

  • fast/mediastream/mediastreamtrack-video-clone-expected.txt:
  • fast/mediastream/mediastreamtrack-video-clone.html:
8:41 AM Changeset in webkit [253274] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Tighten Mac sandbox by removing microphone access
https://bugs.webkit.org/show_bug.cgi?id=204939

Reviewed by Brent Fulgham.

No change of behavior, we do audio capture in UIProcess.

  • WebProcess/com.apple.WebProcess.sb.in:
8:29 AM Changeset in webkit [253273] by Caio Lima
  • 3 edits in trunk/JSTests

[ARMv7] Skip flaky stress tests
https://bugs.webkit.org/show_bug.cgi?id=204996

Unreviewed gardening.

  • stress/incremental-marking-should-not-dead-lock-in-new-property-transition.js:
  • stress/sampling-profiler-should-not-sample-beyond-stack-bounds.js:
8:14 AM Changeset in webkit [253272] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Add logging to NetworkRTCMonitor
https://bugs.webkit.org/show_bug.cgi?id=204850
<rdar://problem/57618773>

Reviewed by Eric Carlson.

Add logging and send IPC message back to WebProcess even if monitoring is stopped.
No observable change of behavior.

  • NetworkProcess/webrtc/NetworkRTCMonitor.cpp:

(WebKit::NetworkRTCMonitor::startUpdatingIfNeeded):
(WebKit::NetworkRTCMonitor::stopUpdating):
(WebKit::NetworkRTCMonitor::onNetworksChanged):

7:58 AM Changeset in webkit [253271] by youenn@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

Add more logging to physical socket server when a socket file descriptor is invalid
https://bugs.webkit.org/show_bug.cgi?id=204948

Reviewed by Darin Adler.

  • Source/webrtc/rtc_base/physical_socket_server.cc:
7:30 AM Changeset in webkit [253270] by Antti Koivisto
  • 5 edits in trunk/Source/WebCore

[LFC][Integration] Collect overflow from lines
https://bugs.webkit.org/show_bug.cgi?id=204994

Reviewed by Zalan Bujtas.

  • layout/displaytree/DisplayLineBox.h:

(WebCore::Display::LineBox::logicalRect const):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::computeVisualOverflow):
(WebCore::LayoutIntegration::LineLayout::collectOverflow):

  • layout/integration/LayoutIntegrationLineLayout.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::addOverflowFromInlineChildren):

Connect to LFC layout.

7:10 AM Changeset in webkit [253269] by Alan Bujtas
  • 10 edits in trunk/Source/WebCore

[LFC][IFC] Switch over to float based types in inline layout
https://bugs.webkit.org/show_bug.cgi?id=204995
<rdar://problem/57733349>

Reviewed by Antti Koivisto.

Due to the relatively significant difference between float and LayoutUnit's precision, IFC
is unable to produce matching layout under the same constraints.
Let's switch over to float based types until after either CLL switches over to LayoutUnit
or LayoutUnit gains high enough precision.

See webkit.org/b/204986 for more info.

  • layout/LayoutUnits.h:

(WebCore::Layout::maxInlineLayoutUnit):

  • layout/Verification.cpp:

(WebCore::Layout::areEssentiallyEqual):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineHeightConstraints const):

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::wordBreakingBehavior const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::alignContentHorizontally const):
(WebCore::Layout::LineBuilder::adjustBaselineAndLineHeight):
(WebCore::Layout::LineBuilder::halfLeadingMetrics):
(WebCore::Layout::LineBuilder::TrimmableContent::append):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::inlineItemWidth):

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::width):
(WebCore::Layout::TextUtil::fixedPitchWidth):
(WebCore::Layout::TextUtil::split):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::firstLineBaseline const):
(WebCore::LayoutIntegration::LineLayout::lastLineBaseline const):
(WebCore::LayoutIntegration::LineLayout::paint):

Dec 7, 2019:

9:59 PM Changeset in webkit [253268] by commit-queue@webkit.org
  • 42 edits in trunk

Make ColorSpace an enum class
https://bugs.webkit.org/show_bug.cgi?id=204970

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-12-07
Reviewed by Sam Weinig.

Source/WebCore:

So it can be encoded and decoded through the IPC messages.

  • css/parser/CSSPropertyParserHelpers.cpp:

(WebCore::CSSPropertyParserHelpers::parseColorFunctionParameters):

  • html/CustomPaintCanvas.cpp:

(WebCore::CustomPaintCanvas::copiedImage const):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::createImageBuffer const):

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::drawTextInternal):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::drawImage):

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::drawPattern):

  • platform/graphics/Color.cpp:

(WebCore::operator<<):

  • platform/graphics/Color.h:

(WebCore::Color::Color):

  • platform/graphics/ColorSpace.h:

(): Deleted.

  • platform/graphics/CustomPaintImage.cpp:

(WebCore::CustomPaintImage::drawPattern):

  • platform/graphics/ExtendedColor.cpp:

(WebCore::ExtendedColor::create):
(WebCore::ExtendedColor::cssText const):

  • platform/graphics/ExtendedColor.h:
  • platform/graphics/GradientImage.cpp:

(WebCore::GradientImage::drawPattern):

  • platform/graphics/ImageBuffer.cpp:

(WebCore::ImageBuffer::transformColorSpace):

  • platform/graphics/ImageBuffer.h:
  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::createCompatibleBuffer):

  • platform/graphics/cg/ColorCG.cpp:

(WebCore::leakCGColor):

  • platform/graphics/cg/GraphicsContextCG.h:

(WebCore::cachedCGColorSpace):

  • platform/graphics/filters/FEFlood.h:
  • platform/graphics/filters/FELighting.cpp:

(WebCore::FELighting::drawLighting):

  • platform/graphics/filters/FETile.cpp:

(WebCore::FETile::platformApplySoftware):

  • platform/graphics/filters/FilterEffect.h:
  • platform/graphics/filters/SourceGraphic.h:

(WebCore::SourceGraphic::SourceGraphic):

  • platform/graphics/win/ImageBufferDirect2D.cpp:

(WebCore::ImageBuffer::createCompatibleBuffer):

  • platform/mac/ThemeMac.mm:

(WebCore::ThemeMac::drawCellOrFocusRingWithViewIntoContext):

  • rendering/CSSFilter.cpp:

(WebCore::CSSFilter::buildReferenceFilter):
(WebCore::CSSFilter::build):
(WebCore::CSSFilter::apply):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintFillLayerExtended):

  • rendering/RenderLayerBacking.cpp:

(WebCore::patternForTouchAction):

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::paintProgressBar):

  • rendering/svg/RenderSVGResourceClipper.cpp:

(WebCore::RenderSVGResourceClipper::applyClippingToContext):

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::buildPrimitives const):
(WebCore::RenderSVGResourceFilter::applyResource):
(WebCore::RenderSVGResourceFilter::postApplyResource):

  • rendering/svg/RenderSVGResourceGradient.cpp:

(WebCore::createMaskAndSwapContextForTextGradient):

  • rendering/svg/RenderSVGResourceMasker.cpp:

(WebCore::RenderSVGResourceMasker::applyResource):
(WebCore::RenderSVGResourceMasker::drawContentIntoMaskImage):

  • rendering/svg/RenderSVGResourcePattern.cpp:

(WebCore::RenderSVGResourcePattern::createTileImage const):

  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::bufferForeground):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::drawPatternForContainer):

  • svg/graphics/filters/SVGFEImage.cpp:

(WebCore::FEImage::platformApplySoftware):

Source/WebKit:

  • Shared/WebCoreArgumentCoders.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/ExtendedColor.cpp:

(TestWebKitAPI::TEST):
(TestWebKitAPI::makeColor):

7:57 PM Changeset in webkit [253267] by Wenson Hsieh
  • 24 edits
    4 adds in trunk

[iOS] WKWebView touch event gesture recognition should not block the application process main thread when possible
https://bugs.webkit.org/show_bug.cgi?id=204664
<rdar://problem/38670692>

Reviewed by Tim Horton.

Source/WebKit:

Adds a mechanism that allows some sync touch events on iOS to be sent asynchronously. To do this, we use the
deferring gesture mechanism introduced in trac.webkit.org/r253005 to defer all gestures under WKContentView (and
WebKit-owned scroll views) when a touch starts, such that they will not recognize until we know that the page
has either prevented default or not (assuming that the touch was over an active listener). See below for more
details.

Tests: fast/events/touch/ios/prevent-default-on-touch-start-with-slow-event-listener.html

fast/events/touch/ios/scroll-on-touch-start-with-slow-event-listener.html

  • UIProcess/GenericCallback.h:
  • UIProcess/PageClient.h:
  • UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:

(-[WKChildScrollView gestureRecognizer:shouldRequireFailureOfGestureRecognizer:]):
(-[WKChildScrollView gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer:]):

Implement gesture recognizer delegate hooks to add dynamic failure requirements between a child scroll view's
gestures and the new deferring gesture recognizers on WKContentView. This allows pan gestures over a scrollable
container to hold off on recognizing while the deferring gesture recognizer has not failed yet.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::handlePreventableTouchEvent):
(WebKit::WebPageProxy::handleUnpreventableTouchEvent):

Rename handleTouchEventSynchronously and handleTouchEventAsynchronously to handlePreventableTouchEvent and
handleUnpreventableTouchEvent, respectively. Instead of always sending touchstart events that may prevent native
gestures synchronously, we may now go through the same EventDispatcher::TouchEvent codepath used when
dispatching touch events in passive tracking regions. However, in the case of preventable touchstarts, we
additionally store a completion callback that is invoked after the touch event has been handled by the page; we
then either un-defer or prevent native gestures here (depending on whether the page prevented default) by
calling PageClient::doneDeferringNativeGestures.

Non-touchstart events are still dispatched synchronously, to ensure that calling preventDefault() on touchmove
and touchend continue to prevent default gestures from recognizing.

(WebKit::WebPageProxy::boolCallback):
(WebKit::WebPageProxy::handleTouchEventSynchronously): Deleted.
(WebKit::WebPageProxy::handleTouchEventAsynchronously): Deleted.

See above.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::isHandlingPreventableTouchStart const):

This is used in WKContentView to determine whether deferring gestures need to remain active after the touch
ends. See below for more detail.

  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::doneDeferringNativeGestures):

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

(-[UIGestureRecognizer _wk_cancel]):
(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):

Add and remove the new deferring gesture recognizers here.

(-[WKContentView _webTouchEventsRecognized:]):
(-[WKContentView _webTouchEvent:preventsNativeGestures:]):
(-[WKContentView _doneDeferringNativeGestures:]):
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKContentView ensurePositionInformationIsUpToDate:]):

Drive-by fix: add a missing hasRunningProcess check that causes a flaky assertion under
AuxiliaryProcessProxy::connection() in layout tests.

(-[WKContentView gestureRecognizer:shouldRequireFailureOfGestureRecognizer:]):
(-[WKContentView gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer:]):

Add dynamic failure requirements between WKContentView's gestures (including all text interaction, context menu,
and drag and drop gestures) and the new deferring gesture recognizers.

(-[WKContentView _didStartProvisionalLoadForMainFrame]):

Force the two-finger double tap gesture recognizer to reset when loading a new page. Without this, the layout
test fast/events/ios/click-event-while-editing-node.html will rarely fail when run after a test that dispatches
a two-finger tap, such as fast/events/ios/click-event-two-finger-single-tap-meta-key.html. This is because the
new deferring gestures will temporarily unite multi-finger tap gestures with one-finger double tap gestures in
the same subgraph when performing a tap gesture with more than one finger. This means that there's a 300 ms
delay before a normal single tap can be recognized again, which (without forcing the two-finger double tap to
reset) would cause a subsequent test that loads in under 300 ms and attempts to send a tap to fail.

(-[WKContentView deferringGestureRecognizer:shouldDeferGesturesAfterBeginningTouchesWithEvent:]):

Avoid deferring native gestures if the scroll view is decelerating; this matches behavior of the web touch event
gesture recognizer.

(-[WKContentView deferringGestureRecognizer:shouldDeferGesturesAfterEndingTouchesWithEvent:]):

Normally, after -touchesEnded:withEvent:, we stop deferring native gesture recognizers by failing the deferring
gestures. However, if we're still waiting for a response from the web process, then let
-_doneDeferringNativeGestures: handle this instead.

(-[WKContentView deferringGestureRecognizer:shouldDeferOtherGestureRecognizer:]):
(-[WKContentView deferringGestureRecognizer:shouldDeferGesturesWithEvent:]): Deleted.

Renamed to -shouldDeferGesturesAfterBeginningTouchesWithEvent:.

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

(-[WKDeferringGestureRecognizer touchesBegan:withEvent:]):
(-[WKDeferringGestureRecognizer touchesEnded:withEvent:]):

Override this and add a new delegate hook to determine whether we want the deferring gesture recognizer to
immediately fail when touches end. It's important to override this and transition to failure state in this case,
since not doing so could mean that the deferring gestures stay in Possible state forever; this may lead to the
gesture subgraph containing these deferring gestures being unable to reset, since it's waiting for the deferring
gesture to either fail or end.

  • UIProcess/ios/WKScrollView.mm:

(-[WKScrollView gestureRecognizer:shouldRequireFailureOfGestureRecognizer:]):
(-[WKScrollView gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer:]):

Defer more scroll view gestures.

  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::touchEvent):

Add an optional CallbackID parameter to this IPC message. If a callback ID is given, then we avoid coalescing
the touch event. To implement this, we additionally refactor the queued touch events map to contain lists of
<WebTouchEvent, Optional<CallbackID>> pairs; if a queued touch event has a corresponding CallbackID, then we
fire the callback corresponding to the ID, indicating whether the touch event was handled by the page.

  • WebProcess/WebPage/EventDispatcher.h:
  • WebProcess/WebPage/EventDispatcher.messages.in:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::dispatchAsynchronousTouchEvents):

LayoutTests:

  • fast/events/touch/ios/prevent-default-on-touch-start-with-slow-event-listener-expected.txt: Added.
  • fast/events/touch/ios/prevent-default-on-touch-start-with-slow-event-listener.html: Added.
  • fast/events/touch/ios/scroll-on-touch-start-with-slow-event-listener-expected.txt: Added.
  • fast/events/touch/ios/scroll-on-touch-start-with-slow-event-listener.html: Added.

Add new layout tests to cover behaviors when panning over active touchstart handlers that spin for an extended
length of time (in this case, 400 milliseconds) in overflow scrolling containers. A touchstart handler that
prevents default should still block scrolling, and a touchstart handler that does not should still allow the
user to scroll.

  • fast/events/touch/ios/show-modal-alert-during-touch-start.html:
  • http/tests/adClickAttribution/anchor-tag-attributes-validation-expected.txt:
  • http/tests/security/anchor-download-block-crossorigin-expected.txt:

Rebaseline these tests by changing some line numbers.

  • resources/ui-helper.js:

(window.UIHelper.sendEventStream.return.new.Promise):
(window.UIHelper.sendEventStream):

Add a new UIHelper method to send a JSON object as an event stream.

(UIHelper.EventStreamBuilder.prototype._reset):
(UIHelper.EventStreamBuilder.prototype.begin):
(UIHelper.EventStreamBuilder.prototype.move):
(UIHelper.EventStreamBuilder.prototype.end):
(UIHelper.EventStreamBuilder.prototype.takeResult):

Add a new helper class to make it easier to construct event streams, for the purposes of sending to
UIScriptController::sendEventStream.

7:00 PM Changeset in webkit [253266] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][IFC] Convert InlineLayoutUnit/Point/Rect to LayoutUnit/Point/Rect when crossing inline/block boundary
https://bugs.webkit.org/show_bug.cgi?id=204991
<rdar://problem/57730383>

Reviewed by Sam Weinig.

Float -> LayoutUnit requires explicit conversion due to precision loss. Use these functions when
feeding inline box geometry information back to block layout.

Implicit floor will do for now (might need to call round though).

This is in preparation for using float based types in IFC. See webkit.org/b/204986 for more info.

  • layout/LayoutUnits.h:

(WebCore::Layout::toLayoutUnit):
(WebCore::Layout::toLayoutPoint):
(WebCore::Layout::toLayoutRect):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):

  • layout/displaytree/DisplayInlineContent.cpp:

(WebCore::Display:: const):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::constraintsForLine):
(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::paint):

4:41 PM Changeset in webkit [253265] by rniwa@webkit.org
  • 13 edits
    9 adds in trunk

Unique origin's window must get its own event loop
https://bugs.webkit.org/show_bug.cgi?id=204978

Reviewed by Antti Koivisto.

Source/WebCore:

This patch fixes the bug that unique origin documents and documents of the same registrable domains
with different schemes / protocols were sharing the same event loop. Note that we continue to share
the event loop across file URI documents.

We now use the agent cluster key to looking up the event loop to better match the HTML5 spec:
https://html.spec.whatwg.org/multipage/webappapis.html#obtain-agent-cluster-key

Tests: fast/eventloop/data-uri-document-has-its-own-event-loop.html

fast/eventloop/queue-task-across-frames-in-file-uri.html
http/tests/eventloop/documents-with-different-protocols-do-not-share-event-loop.html

  • dom/Document.cpp:

(WebCore::Document::eventLoop):

  • dom/EventLoop.h:

(WebCore::EventLoopTaskGroup::hasSameEventLoopAs): Added for testing purposes.

  • dom/WindowEventLoop.cpp:

(WebCore::agentClusterKeyOrNullIfUnique): Added.
(WebCore::WindowEventLoop::eventLoopForSecurityOrigin): Replaced ensureForRegistrableDomain.
(WebCore::WindowEventLoop::create): Added.
(WebCore::WindowEventLoop::WindowEventLoop):
(WebCore::WindowEventLoop::~WindowEventLoop):

  • dom/WindowEventLoop.h:
  • testing/Internals.cpp:

(WebCore::Internals::hasSameEventLoopAs): Added for testing purposes.

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

LayoutTests:

Added tests to make sure data URI documents continue to use the same event loop but documents of
unique origin and of different schemes will use distinct event loops using newly added internals
method (hasSameEventLoopAs). Also added assertions to the existing tests using this new method.

  • fast/eventloop: Added.
  • fast/eventloop/data-uri-document-has-its-own-event-loop-expected.txt: Added.
  • fast/eventloop/data-uri-document-has-its-own-event-loop.html: Added.
  • fast/eventloop/queue-task-across-frames-in-file-uri-expected.txt: Added.
  • fast/eventloop/queue-task-across-frames-in-file-uri.html: Added.
  • fast/eventloop/resources: Added.
  • fast/eventloop/resources/eventloop-helper.html: Added.
  • http/tests/eventloop/documents-with-different-protocols-do-not-share-event-loop-expected.txt: Added.
  • http/tests/eventloop/documents-with-different-protocols-do-not-share-event-loop.html: Added.
  • http/tests/eventloop/queue-task-across-cross-site-frames-expected.txt:
  • http/tests/eventloop/queue-task-across-cross-site-frames.html:
  • http/tests/eventloop/queue-task-across-frames-expected.txt:
  • http/tests/eventloop/queue-task-across-frames.html:
2:57 PM Changeset in webkit [253264] by mark.lam@apple.com
  • 3 edits
    1 add in trunk

Object.prototype.isPrototypeOf() should check if the passed in value is a non-object first.
https://bugs.webkit.org/show_bug.cgi?id=204971
<rdar://problem/57730080>

Reviewed by Saam Barati.

JSTests:

  • stress/object-prototype-isPrototypeOf-should-check-for-non-object-first.js: Added.

Source/JavaScriptCore:

The spec says Object.prototype.isPrototypeOf() should do checks in the following
order:

  1. If Type(V) is not Object, return false.
  2. Let O be ? ToObject(this value).

...
We were previously checking (2) before (1). This patch fixes this order.

Ref: http://www.ecma-international.org/ecma-262/10.0/index.html#sec-object.prototype.isprototypeof

  • runtime/ObjectPrototype.cpp:

(JSC::objectProtoFuncIsPrototypeOf):

2:25 PM Changeset in webkit [253263] by sbarati@apple.com
  • 13 edits
    1 add
    1 delete in trunk/Source/JavaScriptCore

Unreviewed. Roll out r253201. It was not a progression on any benchmarks, and was 8% slower on JetStream 2 ML.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/BytecodeList.rb:
  • bytecode/GetByValHistory.h: Added.

(JSC::GetByValHistory::observeNonUID):
(JSC::GetByValHistory::observe):
(JSC::GetByValHistory::count const):
(JSC::GetByValHistory::filter const):
(JSC::GetByValHistory::update):

  • bytecode/PointerHistory.h: Removed.
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseGetById):
(JSC::DFG::ByteCodeParser::parseBlock):

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

(JSC::DFG::SpeculativeJIT::compileGetById):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileGetById):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):

  • generator/DSL.rb:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id_direct):
(JSC::JIT::emitSlow_op_get_by_id_direct):
(JSC::JIT::emit_op_get_by_id):
(JSC::JIT::emitSlow_op_get_by_id):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/OptionsList.h:
2:20 PM Changeset in webkit [253262] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][IFC] Display::LineBox should adopt to InlineLayoutUnit
https://bugs.webkit.org/show_bug.cgi?id=204990
<rdar://problem/57730105>

Reviewed by Sam Weinig.

This is in preparation for using float based types in IFC. See webkit.org/b/204986 for more info.

  • layout/displaytree/DisplayLineBox.h:

(WebCore::Display::LineBox::logicalTopLeft const):
(WebCore::Display::LineBox::setLogicalTopLeft):

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::logicalTopLeft const):
(WebCore::Display::Run::logicalLeft const):
(WebCore::Display::Run::logicalRight const):
(WebCore::Display::Run::logicalTop const):
(WebCore::Display::Run::logicalBottom const):
(WebCore::Display::Run::logicalWidth const):
(WebCore::Display::Run::logicalHeight const):
(WebCore::Display::Run::setLogicalWidth):
(WebCore::Display::Run::setLogicalTop):
(WebCore::Display::Run::setLogicalLeft):
(WebCore::Display::Run::moveVertically):
(WebCore::Display::Run::moveHorizontally):
(WebCore::Display::Run::expandVertically):
(WebCore::Display::Run::expandHorizontally):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::constraintsForLine):

  • layout/inlineformatting/InlineFormattingContext.h:
12:34 PM Changeset in webkit [253261] by Andres Gonzalez
  • 22 edits in trunk

Implementation of additional attribute caching in the IsolatedTree.
https://bugs.webkit.org/show_bug.cgi?id=204918

Reviewed by Chris Fleizach.

Source/WebCore:

No new tests, no new functionality. Updated several tests to fixed
expected output.

  • Implementation of around 200 methods in the AXIsolatedObject class.
  • The pending method implementations have an ASSERT_NOT_REACHED.
  • Support for dispatching to the main thread some

WebAccessibilityObjectWrapper methods that cannot be run in the
secondary thread.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::createIsolatedTreeHierarchy):
(WebCore::AXObjectCache::generateIsolatedTree):

  • accessibility/AXObjectCache.h:
  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::ariaLabeledByText const):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::actionVerb const):
(WebCore::AccessibilityObject::datetimeAttributeValue const):
(WebCore::AccessibilityObject::linkRelValue const):
(WebCore::AccessibilityObject::isInlineText const):
(WebCore::AccessibilityObject::identifierAttribute const):
(WebCore::AccessibilityObject::documentURI const):
(WebCore::AccessibilityObject::documentEncoding const):
(WebCore::AccessibilityObject::sessionID const):
(WebCore::AccessibilityObject::tagName const):

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityText::AccessibilityText):
(WebCore::AccessibilityObject::actionVerb const):

  • accessibility/AccessibilityObjectInterface.h: Base implementation for

several isXXX methods that rely on the object roleValue.
(WebCore::AXCoreObject::isImageMap const):
(WebCore::AXCoreObject::isWebArea const):
(WebCore::AXCoreObject::isCheckbox const):
(WebCore::AXCoreObject::isRadioButton const):
(WebCore::AXCoreObject::isListBox const):
(WebCore::AXCoreObject::isSpinButton const):
(WebCore::AXCoreObject::isSwitch const):
(WebCore::AXCoreObject::isToggleButton const):
(WebCore::AXCoreObject::isTabList const):
(WebCore::AXCoreObject::isTabItem const):
(WebCore::AXCoreObject::isRadioGroup const):
(WebCore::AXCoreObject::isComboBox const):
(WebCore::AXCoreObject::isTree const):
(WebCore::AXCoreObject::isTreeGrid const):
(WebCore::AXCoreObject::isTreeItem const):
(WebCore::AXCoreObject::isScrollbar const):
(WebCore::AXCoreObject::isListItem const):
(WebCore::AXCoreObject::isCheckboxOrRadio const):
(WebCore::AXCoreObject::isScrollView const):
(WebCore::AXCoreObject::isCanvas const):
(WebCore::AXCoreObject::isPopUpButton const):
(WebCore::AXCoreObject::isColorWell const):
(WebCore::AXCoreObject::isSplitter const):
(WebCore::AXCoreObject::isToolbar const):
(WebCore::AXCoreObject::isSummary const):

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::accessKey const):
(WebCore::AccessibilityRenderObject::actionVerb const):

  • accessibility/AccessibilityRenderObject.h:
  • accessibility/AccessibilitySpinButton.h:
  • accessibility/isolatedtree/AXIsolatedTree.cpp:

(WebCore::AXIsolatedTree::setRootNode):
(WebCore::AXIsolatedTree::setRoot): Renamed setRootNode.

  • accessibility/isolatedtree/AXIsolatedTree.h:
  • accessibility/isolatedtree/AXIsolatedTreeNode.cpp: Implementation of

around 200 methods in the AXIsolatedObject class. The methods that are
pending, have a stub implemetation with an ASSERT_NOT_REACHED.
(WebCore::AXIsolatedObject::AXIsolatedObject):
(WebCore::AXIsolatedObject::create):
(WebCore::AXIsolatedObject::initializeAttributeData):
(WebCore::AXIsolatedObject::setMathscripts):
(WebCore::AXIsolatedObject::setObjectVectorProperty):
(WebCore::AXIsolatedObject::isDetached const):
(WebCore::AXIsolatedObject::isDetachedFromParent):
(WebCore::AXIsolatedObject::accessibilityText const):
(WebCore::AXIsolatedObject::classList const):
(WebCore::AXIsolatedObject::sessionID const):
(WebCore::AXIsolatedObject::documentURI const):
(WebCore::AXIsolatedObject::preventKeyboardDOMEventDispatch const):
(WebCore::AXIsolatedObject::documentEncoding const):
(WebCore::AXIsolatedObject::insertMathPairs):
(WebCore::AXIsolatedObject::mathPrescripts):
(WebCore::AXIsolatedObject::mathPostscripts):
(WebCore::AXIsolatedObject::scrollBar):
(WebCore::AXIsolatedObject::colorValue const):
(WebCore::AXIsolatedObject::intPointAttributeValue const):
(WebCore::AXIsolatedObject::vectorAttributeValue const):
(WebCore::AXIsolatedObject::optionSetAttributeValue const):
(WebCore::AXIsolatedObject::uint64AttributeValue const):
(WebCore::AXIsolatedObject::urlAttributeValue const):
(WebCore::AXIsolatedObject::colorAttributeValue const):
(WebCore::AXIsolatedObject::floatAttributeValue const):
(WebCore::AXIsolatedObject::fillChildrenVectorForProperty const):
(WebCore::AXIsolatedObject::replaceTextInRange):
(WebCore::AXIsolatedObject::insertText):
(WebCore::AXIsolatedObject::press):
(WebCore::AXIsolatedObject::performDefaultAction):
(WebCore::AXIsolatedObject::isAccessibilityObject const):
(WebCore::AXIsolatedObject::isAccessibilityNodeObject const):
(WebCore::AXIsolatedObject::isAccessibilityRenderObject const):
(WebCore::AXIsolatedObject::isAccessibilityScrollbar const):
(WebCore::AXIsolatedObject::isAccessibilityScrollView const):
(WebCore::AXIsolatedObject::isAccessibilitySVGRoot const):
(WebCore::AXIsolatedObject::isAccessibilitySVGElement const):
(WebCore::AXIsolatedObject::containsText const):
(WebCore::AXIsolatedObject::isAttachmentElement const):
(WebCore::AXIsolatedObject::isNativeImage const):
(WebCore::AXIsolatedObject::isImageButton const):
(WebCore::AXIsolatedObject::isContainedByPasswordField const):
(WebCore::AXIsolatedObject::passwordFieldOrContainingPasswordField):
(WebCore::AXIsolatedObject::isNativeTextControl const):
(WebCore::AXIsolatedObject::isNativeListBox const):
(WebCore::AXIsolatedObject::isListBoxOption const):
(WebCore::AXIsolatedObject::isSliderThumb const):
(WebCore::AXIsolatedObject::isInputSlider const):
(WebCore::AXIsolatedObject::isLabel const):
(WebCore::AXIsolatedObject::isDataTable const):
(WebCore::AXIsolatedObject::isImageMapLink const):
(WebCore::AXIsolatedObject::isNativeSpinButton const):
(WebCore::AXIsolatedObject::isSpinButtonPart const):
(WebCore::AXIsolatedObject::isMockObject const):
(WebCore::AXIsolatedObject::isMediaObject const):
(WebCore::AXIsolatedObject::isARIATextControl const):
(WebCore::AXIsolatedObject::isNonNativeTextControl const):
(WebCore::AXIsolatedObject::isBlockquote const):
(WebCore::AXIsolatedObject::isLandmark const):
(WebCore::AXIsolatedObject::isFigureElement const):
(WebCore::AXIsolatedObject::isKeyboardFocusable const):
(WebCore::AXIsolatedObject::isHovered const):
(WebCore::AXIsolatedObject::isIndeterminate const):
(WebCore::AXIsolatedObject::isLoaded const):
(WebCore::AXIsolatedObject::isOnScreen const):
(WebCore::AXIsolatedObject::isOffScreen const):
(WebCore::AXIsolatedObject::isPressed const):
(WebCore::AXIsolatedObject::isUnvisited const):
(WebCore::AXIsolatedObject::isLinked const):
(WebCore::AXIsolatedObject::isVisible const):
(WebCore::AXIsolatedObject::isCollapsed const):
(WebCore::AXIsolatedObject::isSelectedOptionActive const):
(WebCore::AXIsolatedObject::hasBoldFont const):
(WebCore::AXIsolatedObject::hasItalicFont const):
(WebCore::AXIsolatedObject::hasMisspelling const):
(WebCore::AXIsolatedObject::hasPlainText const):
(WebCore::AXIsolatedObject::hasSameFont const):
(WebCore::AXIsolatedObject::hasSameFontColor const):
(WebCore::AXIsolatedObject::hasSameStyle const):
(WebCore::AXIsolatedObject::isStaticText const):
(WebCore::AXIsolatedObject::hasUnderline const):
(WebCore::AXIsolatedObject::hasHighlighting const):
(WebCore::AXIsolatedObject::element const):
(WebCore::AXIsolatedObject::node const):
(WebCore::AXIsolatedObject::renderer const):
(WebCore::AXIsolatedObject::defaultObjectInclusion const):
(WebCore::AXIsolatedObject::accessibilityIsIgnoredByDefault const):
(WebCore::AXIsolatedObject::stepValueForRange const):
(WebCore::AXIsolatedObject::selectedListItem):
(WebCore::AXIsolatedObject::ariaActiveDescendantReferencingElements const):
(WebCore::AXIsolatedObject::ariaControlsReferencingElements const):
(WebCore::AXIsolatedObject::ariaDescribedByElements const):
(WebCore::AXIsolatedObject::ariaDescribedByReferencingElements const):
(WebCore::AXIsolatedObject::ariaDetailsReferencingElements const):
(WebCore::AXIsolatedObject::ariaErrorMessageReferencingElements const):
(WebCore::AXIsolatedObject::ariaFlowToReferencingElements const):
(WebCore::AXIsolatedObject::ariaLabelledByElements const):
(WebCore::AXIsolatedObject::ariaLabelledByReferencingElements const):
(WebCore::AXIsolatedObject::ariaOwnsReferencingElements const):
(WebCore::AXIsolatedObject::hasDatalist const):
(WebCore::AXIsolatedObject::supportsHasPopup const):
(WebCore::AXIsolatedObject::supportsPressed const):
(WebCore::AXIsolatedObject::supportsChecked const):
(WebCore::AXIsolatedObject::ignoredFromModalPresence const):
(WebCore::AXIsolatedObject::isModalDescendant const):
(WebCore::AXIsolatedObject::isModalNode const):
(WebCore::AXIsolatedObject::elementAccessibilityHitTest const):
(WebCore::AXIsolatedObject::firstChild const):
(WebCore::AXIsolatedObject::lastChild const):
(WebCore::AXIsolatedObject::previousSibling const):
(WebCore::AXIsolatedObject::nextSibling const):
(WebCore::AXIsolatedObject::nextSiblingUnignored const):
(WebCore::AXIsolatedObject::previousSiblingUnignored const):
(WebCore::AXIsolatedObject::parentObjectIfExists const):
(WebCore::AXIsolatedObject::isDescendantOfBarrenParent const):
(WebCore::AXIsolatedObject::isDescendantOfRole const):
(WebCore::AXIsolatedObject::observableObject const):
(WebCore::AXIsolatedObject::correspondingLabelForControlElement const):
(WebCore::AXIsolatedObject::correspondingControlForLabelElement const):
(WebCore::AXIsolatedObject::isPresentationalChildOfAriaRole const):
(WebCore::AXIsolatedObject::ariaRoleHasPresentationalChildren const):
(WebCore::AXIsolatedObject::inheritsPresentationalRole const):
(WebCore::AXIsolatedObject::setAccessibleName):
(WebCore::AXIsolatedObject::hasAttributesRequiredForInclusion const):
(WebCore::AXIsolatedObject::accessibilityDescription const):
(WebCore::AXIsolatedObject::title const):
(WebCore::AXIsolatedObject::helpText const):
(WebCore::AXIsolatedObject::isARIAStaticText const):
(WebCore::AXIsolatedObject::stringValue const):
(WebCore::AXIsolatedObject::text const):
(WebCore::AXIsolatedObject::ariaLabeledByAttribute const):
(WebCore::AXIsolatedObject::ariaDescribedByAttribute const):
(WebCore::AXIsolatedObject::accessibleNameDerivesFromContent const):
(WebCore::AXIsolatedObject::elementsFromAttribute const):
(WebCore::AXIsolatedObject::axObjectCache const):
(WebCore::AXIsolatedObject::anchorElement const):
(WebCore::AXIsolatedObject::actionElement const):
(WebCore::AXIsolatedObject::elementPath const):
(WebCore::AXIsolatedObject::supportsPath const):
(WebCore::AXIsolatedObject::textIteratorBehaviorForTextRange const):
(WebCore::AXIsolatedObject::widget const):
(WebCore::AXIsolatedObject::widgetForAttachmentView const):
(WebCore::AXIsolatedObject::page const):
(WebCore::AXIsolatedObject::document const):
(WebCore::AXIsolatedObject::documentFrameView const):
(WebCore::AXIsolatedObject::frame const):
(WebCore::AXIsolatedObject::mainFrame const):
(WebCore::AXIsolatedObject::topDocument const):
(WebCore::AXIsolatedObject::scrollViewAncestor const):
(WebCore::AXIsolatedObject::childrenChanged):
(WebCore::AXIsolatedObject::textChanged):
(WebCore::AXIsolatedObject::updateAccessibilityRole):
(WebCore::AXIsolatedObject::addChildren):
(WebCore::AXIsolatedObject::addChild):
(WebCore::AXIsolatedObject::insertChild):
(WebCore::AXIsolatedObject::shouldIgnoreAttributeRole const):
(WebCore::AXIsolatedObject::canHaveChildren const):
(WebCore::AXIsolatedObject::hasChildren const):
(WebCore::AXIsolatedObject::setNeedsToUpdateChildren):
(WebCore::AXIsolatedObject::setNeedsToUpdateSubtree):
(WebCore::AXIsolatedObject::clearChildren):
(WebCore::AXIsolatedObject::needsToUpdateChildren const):
(WebCore::AXIsolatedObject::detachFromParent):
(WebCore::AXIsolatedObject::shouldFocusActiveDescendant const):
(WebCore::AXIsolatedObject::activeDescendant const):
(WebCore::AXIsolatedObject::handleActiveDescendantChanged):
(WebCore::AXIsolatedObject::handleAriaExpandedChanged):
(WebCore::AXIsolatedObject::isDescendantOfObject const):
(WebCore::AXIsolatedObject::isAncestorOfObject const):
(WebCore::AXIsolatedObject::firstAnonymousBlockChild const):
(WebCore::AXIsolatedObject::hasAttribute const):
(WebCore::AXIsolatedObject::getAttribute const):
(WebCore::AXIsolatedObject::hasTagName const):
(WebCore::AXIsolatedObject::stringValueForMSAA const):
(WebCore::AXIsolatedObject::stringRoleForMSAA const):
(WebCore::AXIsolatedObject::nameForMSAA const):
(WebCore::AXIsolatedObject::descriptionForMSAA const):
(WebCore::AXIsolatedObject::roleValueForMSAA const):
(WebCore::AXIsolatedObject::passwordFieldValue const):
(WebCore::AXIsolatedObject::liveRegionAncestor const):
(WebCore::AXIsolatedObject::hasContentEditableAttributeSet const):
(WebCore::AXIsolatedObject::supportsReadOnly const):
(WebCore::AXIsolatedObject::supportsAutoComplete const):
(WebCore::AXIsolatedObject::supportsARIAAttributes const):
(WebCore::AXIsolatedObject::scrollByPage const):
(WebCore::AXIsolatedObject::scrollPosition const):
(WebCore::AXIsolatedObject::scrollContentsSize const):
(WebCore::AXIsolatedObject::scrollVisibleContentRect const):
(WebCore::AXIsolatedObject::scrollToMakeVisible const):
(WebCore::AXIsolatedObject::lastKnownIsIgnoredValue):
(WebCore::AXIsolatedObject::setLastKnownIsIgnoredValue):
(WebCore::AXIsolatedObject::notifyIfIgnoredValueChanged):
(WebCore::AXIsolatedObject::isMathScriptObject const):
(WebCore::AXIsolatedObject::isMathMultiscriptObject const):
(WebCore::AXIsolatedObject::isAXHidden const):
(WebCore::AXIsolatedObject::isDOMHidden const):
(WebCore::AXIsolatedObject::isHidden const):
(WebCore::AXIsolatedObject::overrideAttachmentParent):
(WebCore::AXIsolatedObject::accessibilityIgnoreAttachment const):
(WebCore::AXIsolatedObject::accessibilityPlatformIncludesObject const):
(WebCore::AXIsolatedObject::hasApplePDFAnnotationAttribute const):
(WebCore::AXIsolatedObject::ancestorAccessibilityScrollView const):
(WebCore::AXIsolatedObject::setIsIgnoredFromParentData):
(WebCore::AXIsolatedObject::clearIsIgnoredFromParentData):
(WebCore::AXIsolatedObject::setIsIgnoredFromParentDataForChild):

  • accessibility/isolatedtree/AXIsolatedTreeNode.h:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm: Added

dispatching to the main thread some of the methods that cannot be run
in the secondary thread.
(performAccessibilityFunctionOnMainThread):
(retrieveAccessibilityValueFromMainThread):
(-[WebAccessibilityObjectWrapper attachmentView]):
(-[WebAccessibilityObjectWrapper screenToContents:]):
(-[WebAccessibilityObjectWrapper renderWidgetChildren]):
(-[WebAccessibilityObjectWrapper remoteAccessibilityParentObject]):
(-[WebAccessibilityObjectWrapper associatedPluginParent]):
(-[WebAccessibilityObjectWrapper subrole]):
(-[WebAccessibilityObjectWrapper scrollViewParent]):
(-[WebAccessibilityObjectWrapper windowElement:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WebAccessibilityObjectWrapper accessibilityShowContextMenu]):
(-[WebAccessibilityObjectWrapper _accessibilityShowContextMenu]):
(-[WebAccessibilityObjectWrapper _convertToNSRange:]):
(-[WebAccessibilityObjectWrapper _textMarkerForIndex:]):

LayoutTests:

The AXStart/EndTextMarker attributes were being computed for
AccessibilityObjects that had a renderer object. With this change,
AXStart/EndTextMarker are computed for all AccessibilityObjects. Thus
the expected output for the following tests changed from null value for
these attributes to valid object values.

  • accessibility/image-map2-expected.txt:
  • accessibility/mac/document-links-expected.txt:
  • accessibility/table-attributes-expected.txt:
  • accessibility/table-sections-expected.txt:
12:16 PM Changeset in webkit [253260] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Remove invalid assertion in FTL's allocateJSArray().
https://bugs.webkit.org/show_bug.cgi?id=204987
<rdar://problem/57280725>

Reviewed by Saam Barati.

The assertion (in the compiler thread) does not take into account that the mutator
may be in the process of transiting to HavingABadTime. As a result, the assertion
may fail intermittently. This patch fixes this issue by removing this bad
assertion.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::allocateJSArray):

11:53 AM Changeset in webkit [253259] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC][IFC] Initialize InlineLayoutUnit variables to 0
https://bugs.webkit.org/show_bug.cgi?id=204989

Reviewed by Antti Koivisto.

This is in preparation for using float based types in IFC. See webkit.org/b/204986 for more info.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::wordBreakingBehavior const):

  • layout/inlineformatting/InlineLineBreaker.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::LineBuilder::alignContentVertically):
(WebCore::Layout::LineBuilder::justifyRuns const):
(WebCore::Layout::LineBuilder::TrimmableContent::append):
(WebCore::Layout::LineBuilder::TrimmableContent::trim):
(WebCore::Layout::LineBuilder::TrimmableContent::trimTrailingRun):

  • layout/inlineformatting/InlineLineBuilder.h:
  • layout/inlineformatting/text/TextUtil.h:
11:04 AM Changeset in webkit [253258] by Alan Bujtas
  • 7 edits
    1 add in trunk/Source/WebCore

[LFC][IFC] Introduce InlineRect
https://bugs.webkit.org/show_bug.cgi?id=204988
<rdar://problem/57729049>

Reviewed by Antti Koivisto.

This is in preparation for using float based types in IFC. See webkit.org/b/204986 for more info.

  • WebCore.xcodeproj/project.pbxproj:
  • layout/LayoutUnits.h:
  • layout/displaytree/DisplayInlineRect.h: Added.

(WebCore::Display::InlineRect::expandHorizontally):
(WebCore::Display::InlineRect::expandVertically):
(WebCore::Display::InlineRect::invalidateTop):
(WebCore::Display::InlineRect::invalidateLeft):
(WebCore::Display::InlineRect::invalidateWidth):
(WebCore::Display::InlineRect::invalidateHeight):
(WebCore::Display::InlineRect::hasValidPosition const):
(WebCore::Display::InlineRect::hasValidSize const):
(WebCore::Display::InlineRect::hasValidGeometry const):
(WebCore::Display::InlineRect::InlineRect):
(WebCore::Display::InlineRect::invalidatePosition):
(WebCore::Display::InlineRect::setHasValidPosition):
(WebCore::Display::InlineRect::setHasValidSize):
(WebCore::Display::InlineRect::top const):
(WebCore::Display::InlineRect::left const):
(WebCore::Display::InlineRect::bottom const):
(WebCore::Display::InlineRect::right const):
(WebCore::Display::InlineRect::topLeft const):
(WebCore::Display::InlineRect::size const):
(WebCore::Display::InlineRect::width const):
(WebCore::Display::InlineRect::height const):
(WebCore::Display::InlineRect::setTopLeft):
(WebCore::Display::InlineRect::setTop):
(WebCore::Display::InlineRect::setLeft):
(WebCore::Display::InlineRect::setWidth):
(WebCore::Display::InlineRect::setHeight):
(WebCore::Display::InlineRect::moveHorizontally):
(WebCore::Display::InlineRect::moveVertically):
(WebCore::Display::InlineRect::expand):
(WebCore::Display::InlineRect::operator InlineLayoutRect const):

  • layout/displaytree/DisplayLineBox.h:

(WebCore::Display::LineBox::LineBox):

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::logicalRect const):
(WebCore::Display::Run::setLogicalLeft):
(WebCore::Display::Run::Run):
(WebCore::Display::Run::setLogicalRight): Deleted.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::ContinousContent::close):
(WebCore::Layout::LineBuilder::Run::Run):
(WebCore::Layout::LineBuilder::initialize):

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::Run::logicalRect const):

10:56 AM Changeset in webkit [253257] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Build fix for: The compiler thread should not adjust Identifier refCounts.
https://bugs.webkit.org/show_bug.cgi?id=204919
<rdar://problem/57426861>

Not reviewed.

  • bytecode/GetByStatus.cpp:

(JSC::GetByStatus::computeFor):

10:46 AM Changeset in webkit [253256] by david_quesada@apple.com
  • 6 edits in trunk/Source/WebKit

REGRESSION(r253231): Debug assertion failures under ~WebDeviceOrientationUpdateProvider(Proxy)
https://bugs.webkit.org/show_bug.cgi?id=204977
rdar://problem/57724251

Reviewed by Per Arne Vollan.

In the UI process, have the WebPageProxy swap out its WebDeviceOrientationUpdateProviderProxy whenever
it connects to a new process, instead of creating one on construction and holding onto it for the rest
of the WebPageProxy lifetime. The …UpdateProviderProxy assumes that its page will have the same ID
at the time of registering as a message receiver and later unregistering, but the page ID could change
if the WebPageProxy swaps web processes. Using a new instance per web page ID ensures that the
updater is always able to successfully remove itself as a message receiver when deallocating.

In the Web process, ~WebDeviceOrientationUpdateProvider() should remove itself as a message receiver
specifically for its page ID, rather than as a global message receiver.

No new tests -- existing tests (at least the ProcessSwap API tests) revealed the regression.

  • UIProcess/WebPageProxy.cpp:

(WebKit::m_tryCloseTimeoutTimer):
(WebKit::WebPageProxy::didAttachToRunningProcess):
(WebKit::WebPageProxy::resetState):
(WebKit::m_webDeviceOrientationUpdateProviderProxy): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WebDeviceOrientationUpdateProviderProxy.h:
  • WebProcess/WebCoreSupport/WebDeviceOrientationUpdateProvider.cpp:

(WebKit::WebDeviceOrientationUpdateProvider::WebDeviceOrientationUpdateProvider):
(WebKit::WebDeviceOrientationUpdateProvider::~WebDeviceOrientationUpdateProvider):

  • WebProcess/WebCoreSupport/WebDeviceOrientationUpdateProvider.h:
10:18 AM Changeset in webkit [253255] by Alan Bujtas
  • 15 edits in trunk/Source/WebCore

[LFC][IFC] Introduce InlineLayoutUnit
https://bugs.webkit.org/show_bug.cgi?id=204986
<rdar://problem/57728333>

Reviewed by Antti Koivisto.

While IFC uses LayoutUnit type solely to compute inline geometry, complex line layout (CLL) has
adopted several different types over time (int, float and LayoutUnit). These types all have different precisions.
In order to match CLL's output (inline tree geometry) IFC needs to use a type that has
roughly the same precision as what CLL uses.
LayoutUnit currently does not have high enough precision (1/64) to produce matching results.
This patch introduces InlineLayoutUnit. It is going to be mapped to 'float' for now (in a subsequent patch).
It helps to keep one uniform type across the IFC codebase and we could also just re-map it to something
more appropriate in the future.

  • layout/LayoutUnits.h:
  • layout/displaytree/DisplayLineBox.h:

(WebCore::Display::LineBox::Baseline::height const):
(WebCore::Display::LineBox::logicalLeft const):
(WebCore::Display::LineBox::logicalRight const):
(WebCore::Display::LineBox::logicalTop const):
(WebCore::Display::LineBox::logicalBottom const):
(WebCore::Display::LineBox::logicalWidth const):
(WebCore::Display::LineBox::logicalHeight const):
(WebCore::Display::LineBox::setLogicalHeight):
(WebCore::Display::LineBox::setLogicalWidth):
(WebCore::Display::LineBox::moveHorizontally):
(WebCore::Display::LineBox::expandHorizontally):
(WebCore::Display::LineBox::shrinkHorizontally):
(WebCore::Display::LineBox::expandVertically):
(WebCore::Display::LineBox::shrinkVertically):
(WebCore::Display::LineBox::LineBox):
(WebCore::Display::LineBox::setLogicalHeightIfGreater):
(WebCore::Display::LineBox::setBaselineOffsetIfGreater):
(WebCore::Display::LineBox::setAscentIfGreater):
(WebCore::Display::LineBox::setDescentIfGreater):
(WebCore::Display::LineBox::baselineOffset const):
(WebCore::Display::LineBox::Baseline::Baseline):
(WebCore::Display::LineBox::Baseline::setAscent):
(WebCore::Display::LineBox::Baseline::setDescent):
(WebCore::Display::LineBox::Baseline::ascent const):
(WebCore::Display::LineBox::Baseline::descent const):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):
(WebCore::Layout::InlineFormattingContext::constraintsForLine):

  • layout/inlineformatting/InlineFormattingContext.h:
  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineHeightConstraints const):

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::shouldWrapFloatBox):
(WebCore::Layout::LineBreaker::wordBreakingBehavior const):
(WebCore::Layout::LineBreaker::tryBreakingTextRun const):
(WebCore::Layout::LineBreaker::Content::append):

  • layout/inlineformatting/InlineLineBreaker.h:

(WebCore::Layout::LineBreaker::Content::width const):
(WebCore::Layout::LineBreaker::Content::nonTrimmableWidth const):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::Run::setComputedHorizontalExpansion):
(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::LineBuilder::alignContentVertically):
(WebCore::Layout::LineBuilder::justifyRuns const):
(WebCore::Layout::LineBuilder::alignContentHorizontally const):
(WebCore::Layout::LineBuilder::moveLogicalLeft):
(WebCore::Layout::LineBuilder::moveLogicalRight):
(WebCore::Layout::LineBuilder::append):
(WebCore::Layout::LineBuilder::appendNonBreakableSpace):
(WebCore::Layout::LineBuilder::appendInlineContainerStart):
(WebCore::Layout::LineBuilder::appendInlineContainerEnd):
(WebCore::Layout::LineBuilder::appendTextContent):
(WebCore::Layout::LineBuilder::appendNonReplacedInlineBox):
(WebCore::Layout::LineBuilder::appendReplacedInlineBox):
(WebCore::Layout::LineBuilder::runContentHeight const):
(WebCore::Layout::LineBuilder::halfLeadingMetrics):
(WebCore::Layout::LineBuilder::TrimmableContent::append):
(WebCore::Layout::LineBuilder::TrimmableContent::trim):
(WebCore::Layout::LineBuilder::TrimmableContent::trimTrailingRun):
(WebCore::Layout::LineBuilder::InlineItemRun::InlineItemRun):
(WebCore::Layout::LineBuilder::InlineItemRun::trailingLetterSpacing const):

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::availableWidth const):
(WebCore::Layout::LineBuilder::trailingTrimmableWidth const):
(WebCore::Layout::LineBuilder::Run::adjustLogicalTop):
(WebCore::Layout::LineBuilder::Run::moveHorizontally):
(WebCore::Layout::LineBuilder::Run::moveVertically):
(WebCore::Layout::LineBuilder::Run::setLogicalHeight):
(WebCore::Layout::LineBuilder::logicalTop const):
(WebCore::Layout::LineBuilder::logicalBottom const):
(WebCore::Layout::LineBuilder::logicalLeft const):
(WebCore::Layout::LineBuilder::logicalRight const):
(WebCore::Layout::LineBuilder::logicalWidth const):
(WebCore::Layout::LineBuilder::logicalHeight const):
(WebCore::Layout::LineBuilder::contentLogicalWidth const):
(WebCore::Layout::LineBuilder::contentLogicalRight const):
(WebCore::Layout::LineBuilder::baselineOffset const):
(WebCore::Layout::LineBuilder::InlineItemRun::logicalLeft const):
(WebCore::Layout::LineBuilder::InlineItemRun::logicalWidth const):
(WebCore::Layout::LineBuilder::InlineItemRun::moveHorizontally):
(WebCore::Layout::LineBuilder::TrimmableContent::width const):

  • layout/inlineformatting/InlineTextItem.cpp:

(WebCore::Layout::InlineTextItem::createAndAppendTextItems):
(WebCore::Layout::InlineTextItem::createWhitespaceItem):
(WebCore::Layout::InlineTextItem::createNonWhitespaceItem):
(WebCore::Layout::InlineTextItem::InlineTextItem):

  • layout/inlineformatting/InlineTextItem.h:

(WebCore::Layout::InlineTextItem::width const):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::inlineItemWidth):

  • layout/inlineformatting/text/TextUtil.cpp:

(WebCore::Layout::TextUtil::width):
(WebCore::Layout::TextUtil::fixedPitchWidth):
(WebCore::Layout::TextUtil::split):

  • layout/inlineformatting/text/TextUtil.h:
7:21 AM Changeset in webkit [253254] by Antti Koivisto
  • 10 edits
    1 move
    1 add in trunk/Source/WebCore

[LFC][IFC] Move LineBox to Display namespace
https://bugs.webkit.org/show_bug.cgi?id=204984

Reviewed by Zalan Bujtas.

It is a display type, like Display::Run.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/displaytree/DisplayInlineContent.cpp: Added.

Also added a cpp for Display::InlineContent.

(WebCore::Display:: const):

  • layout/displaytree/DisplayInlineContent.h:

(WebCore::Display::InlineContent::lineBoxForRun const):
(WebCore::Display:: const): Deleted.

  • layout/displaytree/DisplayLineBox.h: Renamed from Source/WebCore/layout/inlineformatting/InlineLineBox.h.

(WebCore::Display::LineBox::LineBox):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineHeightConstraints const):

  • layout/inlineformatting/InlineFormattingState.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::LineBuilder::halfLeadingMetrics):

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::lineBox const):

  • layout/inlineformatting/LineLayoutContext.h:
6:49 AM Changeset in webkit [253253] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Add support for breaking at previous breaking opportunities when the overflown content is unbreakable
https://bugs.webkit.org/show_bug.cgi?id=204985
<rdar://problem/57727436>

Reviewed by Antti Koivisto.

<span>first</span><span style="word-break: break-all">second</span><span>third</span

In case of multiple runs in one commit content [firstsecondthrid], if the overflown run [thrid] does not have
a breaking opportunity, we need to backtrack the last breakable run [second] and break right there. ->

"firstsecond
third"

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::isContentWrappingAllowed):
(WebCore::Layout::LineBreaker::breakingContextForInlineContent):
(WebCore::Layout::LineBreaker::wordBreakingBehavior const):

6:02 AM Changeset in webkit [253252] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC] Fix css1/formatting_model/floating_elements.html
https://bugs.webkit.org/show_bug.cgi?id=204983
<rdar://problem/57727197>

Reviewed by Antti Koivisto.

Adjacent non-whitespace inline items are guaranteed to be on commit boundary when they both belong
to the same layout box (<div>text-content</div> [text-][content] vs <div>textcontent</div> [textcontent]).

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::Content::isAtContentBoundary):

5:56 AM Changeset in webkit [253251] by Antti Koivisto
  • 5 edits in trunk/Source/WebCore

[LFC][Integration] Layout test assert and crash fixes
https://bugs.webkit.org/show_bug.cgi?id=204982

Reviewed by Zalan Bujtas.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::firstLineBaseline const):
(WebCore::LayoutIntegration::LineLayout::lastLineBaseline const):
(WebCore::LayoutIntegration::LineLayout::textBoxesFor const):

Don't 0-initialize Optional.

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createLayoutBox):

Remember to add line break renderer to the renderer->layout box map.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::markLinesDirtyInBlockRange):

Invalidate layout path with LFC.

(WebCore::RenderBlockFlow::firstLineBaseline const):
(WebCore::RenderBlockFlow::inlineBlockBaseline const):

Call LFC baseline functions.

5:46 AM Changeset in webkit [253250] by jh718.park@samsung.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed. Remove the build warning below since r250009.
warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

This patch typecasts the "maybe signed" one as unsigned, which is the
same what the compilers would do, but making the typecast explicit
so that the warning go away.

  • b3/air/testair.cpp:
5:30 AM Changeset in webkit [253249] by timothy_horton@apple.com
  • 29 edits in trunk/Source

Implement encoding for DrawImage and DrawRoundedRect display list items
https://bugs.webkit.org/show_bug.cgi?id=204881

Reviewed by Simon Fraser.

Source/WebCore:

Make InterpolationQuality an enum class.
Make ImagePaintingOptions and all of its children encodable.
Make DrawImage and DrawRoundedRect encodable.
Add ImageHandle, which right now just wraps WebCore::Image, but
later could carry identifiers. This allows us to implement image encoding
in WebKit code, which can then use ShareableBitmap to A) decode the image
in the Web Content process and B) use shared memory to transmit the
decoded image data to the GPU process.

  • html/CanvasBase.cpp:
  • html/ImageBitmap.cpp:

(WebCore::interpolationQualityForResizeQuality):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::smoothingToInterpolationQuality):
(WebCore::CanvasRenderingContext2DBase::setImageSmoothingEnabled):

  • platform/graphics/DecodingOptions.h:
  • platform/graphics/GraphicsContext.h:

(WebCore::InterpolationQualityMaintainer::InterpolationQualityMaintainer):

  • platform/graphics/GraphicsTypes.h:
  • platform/graphics/ImageOrientation.h:
  • platform/graphics/ImagePaintingOptions.h:

(WebCore::ImagePaintingOptions::ImagePaintingOptions):
(WebCore::ImagePaintingOptions::encode const):
(WebCore::ImagePaintingOptions::decode):

  • platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

(WebCore::MediaPlayerPrivateAVFoundationCF::paint):

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithImageGenerator):

  • platform/graphics/cairo/CairoOperations.cpp:

(WebCore::Cairo::drawSurface):

  • platform/graphics/cg/GraphicsContext3DCG.cpp:

(WebCore::GraphicsContext3D::paintToCanvas):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::convertInterpolationQuality):
(WebCore::GraphicsContext::setPlatformImageInterpolationQuality):

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::FillRoundedRect::FillRoundedRect):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::DrawImage::encode const):
(WebCore::DisplayList::DrawImage::decode):
(WebCore::DisplayList::FillRoundedRect::create):
(WebCore::DisplayList::FillRoundedRect::encode const):
(WebCore::DisplayList::FillRoundedRect::decode):
(WebCore::DisplayList::Item::encode const):
(WebCore::DisplayList::Item::decode):
(WebCore::DisplayList::FillRoundedRect::FillRoundedRect): Deleted.

  • platform/graphics/ios/IconIOS.mm:

(WebCore::Icon::paint):

  • platform/graphics/texmap/BitmapTexture.cpp:

(WebCore::BitmapTexture::updateContents):

  • platform/graphics/win/GraphicsContextDirect2D.cpp:

(WebCore::GraphicsContext::setPlatformImageInterpolationQuality):

  • platform/ios/wak/WAKView.mm:

(toCGInterpolationQuality):

  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::imageBuffer const):

  • rendering/ImageQualityController.cpp:

(WebCore::ImageQualityController::interpolationQualityFromStyle):
(WebCore::ImageQualityController::chooseInterpolationQuality):

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::paintIntoRect):

Source/WebKit:

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<DisplayList::ImageHandle>::encode):
(IPC::ArgumentCoder<DisplayList::ImageHandle>::decode):

  • Shared/WebCoreArgumentCoders.h:

Source/WebKitLegacy/mac:

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):

3:22 AM Changeset in webkit [253248] by timothy_horton@apple.com
  • 9 edits in trunk/Source/WebCore

macCatalyst: REGRESSION (r251320): WebKit-native media controls do not respond to hover or click
https://bugs.webkit.org/show_bug.cgi?id=204543
<rdar://problem/57208621>

Reviewed by Antoine Quint.

Adopt pointer events for media controls, in order to make them input-device agnostic.

  • Modules/modern-media-controls/controls/auto-hide-controller.js:

(AutoHideController):
(AutoHideController.prototype.set fadesWhileIdle):
(AutoHideController.prototype.handleEvent):
(AutoHideController.prototype._autoHideTimerFired):
Instead of tracking state in a single bit (_disableAutoHiding), keep track
of sets of pointers that are active, for hover and for actual touch/click.

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

(Slider.prototype.handleEvent):
(Slider.prototype._handlePointerdownEvent):
(Slider.prototype._handlePointerupEvent):
(Slider.prototype._handleMousedownEvent): Deleted.
(Slider.prototype._handleTouchstartEvent): Deleted.
(Slider.prototype._handleMouseupEvent): Deleted.
(Slider.prototype._handleTouchendEvent): Deleted.
Adopt pointer events.

  • Modules/modern-media-controls/gesture-recognizers/gesture-recognizer.js:

(GestureRecognizer):
(GestureRecognizer.prototype.get numberOfTouches):
(GestureRecognizer.prototype.locationInElement):
(GestureRecognizer.prototype.locationInClient):
(GestureRecognizer.prototype.touchesBegan):
(GestureRecognizer.prototype.handleEvent):
(GestureRecognizer.prototype._updateBaseListeners):
(GestureRecognizer.prototype._removeTrackingListeners):
(GestureRecognizer.prototype._updateTargetTouches):
(GestureRecognizer.prototype.locationOfTouchInElement): Deleted.
Instead of keeping track of Touches, keep track of the currently-active set of PointerEvents.
We just store events by pointerId, and update them when they change, so we can
later retrieve e.g. points.
Remove locationOfTouchInElement which seems to not be used.

  • html/RangeInputType.cpp:
  • html/RangeInputType.h:
  • html/shadow/SliderThumbElement.cpp:

(WebCore::SliderThumbElement::dragFrom):
(WebCore::SliderThumbElement::defaultEventHandler):

  • html/shadow/SliderThumbElement.h:

Allow range inputs to accept mouse events everywhere.

  • WebCore.xcodeproj/project.pbxproj:

Add some missing files to the project.

2:00 AM Changeset in webkit [253247] by ysuzuki@apple.com
  • 12 edits in trunk/Source/JavaScriptCore

[JSC] Put JSWrapperObject derived classes in IsoSubspace
https://bugs.webkit.org/show_bug.cgi?id=204976

Reviewed by Mark Lam.

Put JSWrapperObject derived classes in IsoSubspace.

  1. StringObject
  2. NumberObject
  3. SymbolObject
  4. BigIntObject
  5. BooleanObject
  • runtime/BigIntObject.h:
  • runtime/BooleanObject.h:

(JSC::BooleanObject::subspaceFor):

  • runtime/BooleanPrototype.h:
  • runtime/JSWrapperObject.h:

(JSC::JSWrapperObject::subspaceFor):

  • runtime/NumberObject.h:

(JSC::NumberObject::subspaceFor):

  • runtime/NumberPrototype.h:
  • runtime/StringObject.h:

(JSC::StringObject::subspaceFor):

  • runtime/StringPrototype.h:
  • runtime/SymbolObject.h:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
1:28 AM Changeset in webkit [253246] by Devin Rousso
  • 8 edits in trunk/Source

Web Inspector: non-regex Local Overrides and Script Blackboxing shouldn't apply to scripts that just contain the URL
https://bugs.webkit.org/show_bug.cgi?id=204954

Reviewed by Joseph Pecoraro.

If isRegex is false, add ^ and $ to the beginning and end of the search string to
ensure that the search string is exactly matched, not just contained within the potentially
intercepted URL.

This doesn't actually change functionality because the Web Inspector frontend wouldn't
replace the network response for these containing matches, as the frontend JavaScript
already correctly performed this logic, and would therefore Network.interceptContinue.

Source/JavaScriptCore:

  • inspector/ContentSearchUtilities.h:
  • inspector/ContentSearchUtilities.cpp:

(Inspector::ContentSearchUtilities::escapeStringForRegularExpressionSource): Added.
(Inspector::ContentSearchUtilities::createRegularExpressionForSearchString): Added.
(Inspector::ContentSearchUtilities::searchInTextByLines):
(Inspector::ContentSearchUtilities::createSearchRegexSource): Deleted.
(Inspector::ContentSearchUtilities::createSearchRegex): Deleted.
Rename functions for clarity.

  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::shouldBlackboxURL const):

Source/WebCore:

  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::shouldIntercept):

  • inspector/agents/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMDebuggerAgent::breakOnURLIfNeeded):

  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::searchInResources):
Use renamed ContentSearchUtilities function.

12:42 AM Changeset in webkit [253245] by basuke.suzuki@sony.com
  • 2 edits in trunk/Source/bmalloc

[bmalloc] Decommit unused region in chunk metadata.
https://bugs.webkit.org/show_bug.cgi?id=204810

Reviewed by Yusuke Suzuki.

There is an unused memory region from just after Chunk object to next page border.
We can decommit those memory to kernel at the initialization of Chunk.

  • bmalloc/Heap.cpp:

(bmalloc::Heap::allocateSmallChunk):

Dec 6, 2019:

11:50 PM Changeset in webkit [253244] by zandobersek@gmail.com
  • 6 edits in trunk/Source

[GTK][WPE] Use bmalloc's memory footprint API for JSC heap growth management
https://bugs.webkit.org/show_bug.cgi?id=204576

Reviewed by Saam Barati.

Source/JavaScriptCore:

Use the new USE(BMALLOC_MEMORY_FOOTPRINT_API) build guard to enable
bmalloc-based JSC heap growth management on iOS family ports as well
as additionally the Linux-based ports, if the configuration allows it
(i.e. system malloc enforcement kept disabled).

  • heap/Heap.cpp:

(JSC::Heap::overCriticalMemoryThreshold):
(JSC::Heap::updateAllocationLimits):
(JSC::Heap::collectIfNecessaryOrDefer):

  • heap/Heap.h:

Initialize the two member variables and fix a typo in one of them.

  • runtime/Options.cpp:

(JSC::overrideDefaults):
Also guard two default overrides with the new flag.

Source/WTF:

Add the new USE_BMALLOC_MEMORY_FOOTPRINT_API, enabled for the iOS-family
ports and the Linux ports, as long as system malloc enforcement is
disabled and bmalloc is subsequently built and used. The flag is used in
JavaScriptCore to enable usage of bmalloc's memory footprint API for
JSC heap growth control.

  • wtf/Platform.h:
10:07 PM Changeset in webkit [253243] by mark.lam@apple.com
  • 14 edits
    1 add in trunk

The compiler thread should not adjust Identifier refCounts.
https://bugs.webkit.org/show_bug.cgi?id=204919
<rdar://problem/57426861>

Reviewed by Saam Barati.

JSTests:

  • stress/compiler-thread-should-not-ref-identifiers.js: Added.

Source/JavaScriptCore:

  1. Previously, in the compiler thread, we would get a Symbol uid via Symbol::privateName().uid(). Symbol::privateName() returns a copy of its PrivateName, which in turn results in ref'ing the underlying SymbolImpl. This results in a race between the mutator and compiler threads to adjust the SymbolImpl's refCount, which may result in corruption.

This patch fixes this by adding Symbol::uid() which return the underlying
SymbolImpl without ref'ing it.

  1. Previously, in the compiler thread, we also create Box<Identifier> via its copy constructor. The original Box<Identifier> is instantiated in the mutator. The Box<Identifier> refs its internal Data, which is ThreadSafeRefCounted and shared by all Box<Identifier> for the same underlying Identifier. This ensures that the compiler thread does not ref the underlying Identifier.

However, when the Box<Identifier> is destructed, it will also check if it holds
the last ref to its internal Data. If so, it will destruct its Data, and the
Identifier that it embeds. This results in the compiler thread trying to deref
the StringImpl referenced by the Identifier in a race against the mutator.

This patch fixes this by ensuring that for any Box<Identifier> instance used
by the compiler thread, we will register another instance in the DFG::Plan
m_identifiersKeptAliveForCleanUp list, and let the mutator destruct that
Box<Identifier> later in the mutator. This ensures that the compiler thread
will never see the last reference to a Box<Identifier>'s internal Data and
avoid the race.

  1. This patch also fixes the DFG::Worklist code to ensure that a DFG::Plan is always destructed in the mutator, even if the Plan was cancelled.

This, in turn, enables us to assert that the Plan is never destructed in the
compiler thread.

  • bytecode/GetByStatus.cpp:

(JSC::GetByStatus::computeFor):
(JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/GetByStatus.h:
  • debugger/Debugger.cpp:

(JSC::Debugger::detach):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseGetById):
(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::~Plan):
(JSC::DFG::Plan::computeCompileTimes const):
(JSC::DFG::Plan::cancel):

  • dfg/DFGPlan.h:

(JSC::DFG::Plan::unnukedVM const):
(JSC::DFG::Plan::keepAliveIdentifier):
(JSC::DFG::Plan::nuke):
(JSC::DFG::Plan::unnuke):

  • dfg/DFGSafepoint.cpp:

(JSC::DFG::Safepoint::cancel):

  • dfg/DFGWorklist.cpp:

(JSC::DFG::Worklist::deleteCancelledPlansForVM):
(JSC::DFG::Worklist::removeAllReadyPlansForVM):
(JSC::DFG::Worklist::removeDeadPlans):
(JSC::DFG::Worklist::removeNonCompilingPlansForVM):

  • dfg/DFGWorklist.h:
  • runtime/Symbol.h:
10:06 PM Changeset in webkit [253242] by Devin Rousso
  • 67 edits in trunk

Web Inspector: Uncaught Exception: Missing node for given nodeId
https://bugs.webkit.org/show_bug.cgi?id=204519

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

When a DOM node is removed from the main DOM tree, the InspectorDOMAgent invalidates the
DOM.NodeId that was previously assigned to that DOM node, meaning that any future commands
sent by the frontend with that DOM.NodeId will fail.

Add logic to mark WI.DOMNode as being destroyed when this happens so the frontend can
decide to not invoke any commands with that DOM.NodeId.

Many functions have also switched to expecting a WI.DOMNode instead of a DOM.NodeId or
have been moved to WI.DOMNode.prototype in order to also be able to use destroyed.

This issue will eventually be mitigated by <https://webkit.org/b/189687>.

  • UserInterface/Models/DOMNode.js:

(WI.DOMNode):
(WI.DOMNode.prototype.get destroyed): Added.
(WI.DOMNode.prototype.get attached):
(WI.DOMNode.prototype.markDestroyed): Added.
(WI.DOMNode.prototype.setNodeName):
(WI.DOMNode.prototype.setNodeValue):
(WI.DOMNode.prototype.setAttribute):
(WI.DOMNode.prototype.setAttributeValue):
(WI.DOMNode.prototype.querySelector): Added.
(WI.DOMNode.prototype.querySelectorAll): Added.
(WI.DOMNode.prototype.highlight): Added.
(WI.DOMNode.prototype.getOuterHTML):
(WI.DOMNode.prototype.setOuterHTML):
(WI.DOMNode.prototype.removeNode):
(WI.DOMNode.prototype.getEventListeners):

  • UserInterface/Base/DOMUtilities.js:

(WI.bindInteractionsForNodeToElement):

  • UserInterface/Controllers/DOMManager.js:

(WI.DOMManager.buildHighlightConfig):
(WI.DOMManager.wrapClientCallback):
(WI.DOMManager.prototype._loadNodeAttributes):
(WI.DOMManager.prototype._setDocument):
(WI.DOMManager.prototype._unbind):
(WI.DOMManager.prototype.highlightDOMNodeList):
(WI.DOMManager.prototype.highlightSelector):
(WI.DOMManager.prototype.hideDOMNodeHighlight):
(WI.DOMManager.prototype.highlightDOMNodeForTwoSeconds):
(WI.DOMManager.prototype.set inspectModeEnabled):
(WI.DOMManager.prototype.setInspectedNode):
(WI.DOMManager.prototype.setEventListenerDisabled):
(WI.DOMManager.prototype._wrapClientCallback): Deleted.
(WI.DOMManager.prototype.querySelector): Deleted.
(WI.DOMManager.prototype.querySelectorAll): Deleted.
(WI.DOMManager.prototype.highlightDOMNode): Deleted.
(WI.DOMManager.prototype._buildHighlightConfig): Deleted.

  • UserInterface/Models/AuditTestCaseResult.js:

(WI.AuditTestCaseResult.async fromPayload):

  • UserInterface/Models/MediaTimelineRecord.js:

(WI.MediaTimelineRecord.async fromJSON):

  • UserInterface/Protocol/RemoteObject.js:

(WI.RemoteObject.resolveNode):

  • UserInterface/Views/BoxModelDetailsSectionRow.js:

(WI.BoxModelDetailsSectionRow.prototype._highlightDOMNode):

  • UserInterface/Views/CanvasOverviewContentView.js:

(WI.CanvasOverviewContentView.prototype._contentViewMouseEnter):

  • UserInterface/Views/CanvasTreeElement.js:

(WI.CanvasTreeElement.prototype._handleMouseOver):

  • UserInterface/Views/ContextMenuUtilities.js:

(WI.appendContextMenuItemsForDOMNode):

  • UserInterface/Views/DOMNodeDetailsSidebarPanel.js:

(WI.DOMNodeDetailsSidebarPanel.prototype.layout):

  • UserInterface/Views/DOMTreeContentView.js:

(WI.DOMTreeContentView.prototype._domTreeSelectionDidChange):

  • UserInterface/Views/DOMTreeElement.js:

(WI.DOMTreeElement.prototype.get editable):
(WI.DOMTreeElement.prototype.populateDOMNodeContextMenu):

  • UserInterface/Views/DOMTreeElementPathComponent.js:

(WI.DOMTreeElementPathComponent.prototype.mouseOver):

  • UserInterface/Views/DOMTreeOutline.js:

(WI.DOMTreeOutline.prototype.get editable):
(WI.DOMTreeOutline.prototype.populateContextMenu):
(WI.DOMTreeOutline.prototype._onmousemove):
(WI.DOMTreeOutline.prototype._ondragstart):
(WI.DOMTreeOutline.prototype._ondragover):
(WI.DOMTreeOutline.prototype._ondragleave):
(WI.DOMTreeOutline.prototype._ondragend):
(WI.DOMTreeOutline.prototype._hideElements):

  • UserInterface/Views/FormattedValue.js:

(WI.FormattedValue.createElementForNodePreview):

  • UserInterface/Views/GeneralStyleDetailsSidebarPanel.js:

(WI.GeneralStyleDetailsSidebarPanel.prototype.layout):

  • UserInterface/Views/LayerDetailsSidebarPanel.js:

(WI.LayerDetailsSidebarPanel.prototype._dataGridMouseMove):

  • UserInterface/Views/LayerTreeDetailsSidebarPanel.js:

(WI.LayerTreeDetailsSidebarPanel.prototype.layout):
(WI.LayerTreeDetailsSidebarPanel.prototype._highlightSelectedNode):

  • UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:

(WI.SpreadsheetCSSStyleDeclarationSection.prototype._highlightNodesWithSelector):

LayoutTests:

  • http/tests/inspector/dom/cross-domain-inspected-node-access.html:
  • http/tests/inspector/dom/didFireEvent.html:
  • http/tests/inspector/network/resource-initiatorNode.html:
  • inspector/console/command-line-api.html:
  • inspector/css/add-css-property.html:
  • inspector/css/css-property.html:
  • inspector/css/force-page-appearance.html:
  • inspector/css/generateCSSRuleString.html:
  • inspector/css/matched-style-properties.html:
  • inspector/css/modify-css-property-race.html:
  • inspector/css/modify-css-property.html:
  • inspector/css/modify-inline-style.html:
  • inspector/css/modify-rule-selector.html:
  • inspector/css/overridden-property.html:
  • inspector/css/pseudo-element-matches-for-pseudo-element-node.html:
  • inspector/css/pseudo-element-matches.html:
  • inspector/css/resolve-variable-value.html:
  • inspector/css/selector-dynamic-specificity.html:
  • inspector/css/selector-specificity.html:
  • inspector/css/shadow-scoped-style.html:
  • inspector/css/stylesheet-with-mutations.html:
  • inspector/dom-debugger/attribute-modified-style.html:
  • inspector/dom-debugger/dom-breakpoints.html:
  • inspector/dom/attributeModified.html:
  • inspector/dom/breakpoint-for-event-listener.html:
  • inspector/dom/csp-big5-hash.html:
  • inspector/dom/csp-hash.html:
  • inspector/dom/customElementState.html:
  • inspector/dom/domutilities-csspath.html:
  • inspector/dom/domutilities-path-dump.html:
  • inspector/dom/domutilities-xpath.html:
  • inspector/dom/event-listener-inspected-node.html:
  • inspector/dom/getEventListenersForNode.html:
  • inspector/dom/getOuterHTML.html:
  • inspector/dom/insertAdjacentHTML.html:
  • inspector/dom/pseudo-element-dynamic.html:
  • inspector/dom/pseudo-element-static.html:
  • inspector/dom/setAllowEditingUserAgentShadowTrees.html:
  • inspector/dom/setInspectedNode.html:
  • inspector/dom/setOuterHTML.html:
  • inspector/dom/shadow-and-non-shadow-children.html:
  • inspector/dom/shadowRootType.html:
  • inspector/dom/template-content.html:
  • inspector/model/dom-node.html:
  • inspector/page/hidpi-snapshot-size.html:
10:04 PM Changeset in webkit [253241] by Devin Rousso
  • 16 edits in trunk/Source/WebInspectorUI

Web Inspector: saving a file with the url "/" suggest the name "Untitled"
https://bugs.webkit.org/show_bug.cgi?id=204910

Reviewed by Timothy Hatcher.

  • UserInterface/Base/FileUtilities.js:

(WI.FileUtilities.save):
Allow callers to specify a suggestedName that is used if possible.

  • UserInterface/Views/ContextMenuUtilities.js:

(WI.appendContextMenuItemsForSourceCode):
(WI.appendContextMenuItemsForDOMNode):

  • UserInterface/Views/TextResourceContentView.js:

(WI.TextResourceContentView.prototype.get saveData):

  • UserInterface/Views/ResourceContentView.js:

(WI.ResourceContentView.prototype.get saveData):
If the path of the selected source code is just "/", set the suggestedName to "index" and
use an extension derived from the MIME type (if able).

  • UserInterface/Controllers/AuditManager.js:

(WI.AuditManager.prototype.export):

  • UserInterface/Views/ConsoleMessageView.js:

(WI.ConsoleMessageView.prototype._handleContextMenu):

  • UserInterface/Views/HeapSnapshotContentView.js:

(WI.HeapSnapshotContentView.prototype._exportSnapshot):

  • UserInterface/Views/LogContentView.js:

(WI.LogContentView.prototype.get saveData):
(WI.LogContentView.prototype._handleContextMenuEvent):

  • UserInterface/Views/NetworkTableContentView.js:

(WI.NetworkTableContentView.prototype._exportHAR):

  • UserInterface/Views/RecordingContentView.js:

(WI.RecordingContentView.prototype._exportRecording):
(WI.RecordingContentView.prototype._exportReduction):

  • UserInterface/Views/ScriptContentView.js:

(WI.ScriptContentView.prototype.get saveData):

  • UserInterface/Views/ShaderProgramContentView.js:

(WI.ShaderProgramContentView.prototype.get saveData):

  • UserInterface/Views/TextContentView.js:

(WI.TextContentView.prototype.get saveData):

  • UserInterface/Views/TimelineRecordingContentView.js:

(WI.TimelineRecordingContentView.prototype._exportTimelineRecording):

  • UserInterface/Debug/ProtocolTrace.js:

(WI.ProtocolTrace.prototype.get saveData):
Prefer suggestedName vs WI.FileUtilities.inspectorURLForFilename, which is now always
called inside WI.FileUtilities.save anyways.

9:48 PM Changeset in webkit [253240] by ysuzuki@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] Put JSModuleNamespaceObject in IsoSubspace
https://bugs.webkit.org/show_bug.cgi?id=204973

Reviewed by Mark Lam.

We found that we do not need to embed AbstractModuleRecord vector inside JSModuleNamespaceObject: we can just put it
in ExportEntry. So we can make it non-variable-sized cell. Further, this patch puts it in IsoSubspace.

  • runtime/CellSize.h:

(JSC::isDynamicallySizedType):
(JSC::cellSize):

  • runtime/JSModuleNamespaceObject.cpp:

(JSC::JSModuleNamespaceObject::finishCreation):
(JSC::JSModuleNamespaceObject::visitChildren):
(JSC::JSModuleNamespaceObject::getOwnPropertySlotCommon):

  • runtime/JSModuleNamespaceObject.h:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
9:16 PM Changeset in webkit [253239] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Layout Test http/tests/xmlhttprequest/sync-xhr-in-unload.html is failing
https://bugs.webkit.org/show_bug.cgi?id=204974

Unreviewed test gardening.

  • platform/win/TestExpectations:
8:35 PM Changeset in webkit [253238] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Rename ContentBreak to ContentWrappingRule and ContentBreak::wrap to ContentWrappingRule::push
https://bugs.webkit.org/show_bug.cgi?id=204966
<rdar://problem/57717049>

Reviewed by Sam Weinig.

Use the term "push" instead of "wrap" to move a run to the next line without breaking it.
This is mainly to avoid spec term confusion.
ContentWrappingRule::Keep -> keep the run (or continuous runs) on the current line.
ContentWrappingRule::Split -> keep the run (or continuous runs) partially on the current line (see BreakingContext::PartialTrailingContent).
ContentWrappingRule::Push -> move the run (or continuous runs) completely to the next line.

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::breakingContextForInlineContent):

  • layout/inlineformatting/InlineLineBreaker.h:
  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::processUncommittedContent):

8:20 PM Changeset in webkit [253237] by ysuzuki@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

[JSC] Put ModuleRecords in IsoSubspace
https://bugs.webkit.org/show_bug.cgi?id=204972

Reviewed by Mark Lam.

This patch is putting JSModuleRecord and WebAssemblyModuleRecord in IsoSubspace.

  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::destroy): Deleted.

  • runtime/AbstractModuleRecord.h:

(JSC::AbstractModuleRecord::subspaceFor):

  • runtime/JSModuleRecord.h:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
  • wasm/js/WebAssemblyModuleRecord.h:
7:50 PM Changeset in webkit [253236] by pvollan@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed build fix. Initialize local variable.

  • API/tests/testapi.cpp:

(TestAPI::promiseUnhandledRejection):

6:49 PM Changeset in webkit [253235] by jh718.park@samsung.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed. Change the format string portable by using "%" PRIx64
instead of "%llx" for uint64_t argument.

This patch removes the build warning below since r252978.

warning: format ‘%llx’ expects argument of type ‘long long unsigned int’,
but argument 3 has type ‘JSC::SpeculatedType {aka long unsigned int}’ [-Wformat=]

  • runtime/PredictionFileCreatingFuzzerAgent.cpp:

(JSC::PredictionFileCreatingFuzzerAgent::getPredictionInternal):

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

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

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

Reverted changeset:

"Remove various .order files."
https://bugs.webkit.org/show_bug.cgi?id=204959
https://trac.webkit.org/changeset/253218

4:33 PM Changeset in webkit [253233] by ysuzuki@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

[JSC] JSCallee should be in IsoSubspace
https://bugs.webkit.org/show_bug.cgi?id=204961

Reviewed by Mark Lam.

We should put JSCallee in IsoSubspace. Currently, we are also putting JSToWasmICCallee in IsoSusbapce
since it is a derived class of JSCallee, but I think we can remove this class completely. We are tracking
it in [1].

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

  • debugger/DebuggerScope.h:
  • interpreter/Interpreter.cpp:

(JSC::Interpreter::executeProgram):
(JSC::Interpreter::execute):

  • runtime/JSCallee.h:

(JSC::JSCallee::subspaceFor):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::globalCallee):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
  • wasm/js/JSToWasmICCallee.h:

(JSC::JSToWasmICCallee::function): Deleted.
(JSC::JSToWasmICCallee::JSToWasmICCallee): Deleted.

4:24 PM Changeset in webkit [253232] by Chris Dumez
  • 4 edits in trunk/Source/WebKit

[IPC] MESSAGE_CHECK() parameters for AddPlugInAutoStartOriginHash / PlugInDidReceiveUserInteraction IPCs
https://bugs.webkit.org/show_bug.cgi?id=204962

Reviewed by Ryosuke Niwa.

MESSAGE_CHECK() parameters for AddPlugInAutoStartOriginHash / PlugInDidReceiveUserInteraction IPCs. Those parameters
are used as keys in HashMaps.

  • UIProcess/Plugins/PlugInAutoStartProvider.cpp:

(WebKit::PlugInAutoStartProvider::PlugInAutoStartProvider):
(WebKit::PlugInAutoStartProvider::addAutoStartOriginHash):
(WebKit::PlugInAutoStartProvider::setAutoStartOriginsTableWithItemsPassingTest):
(WebKit::PlugInAutoStartProvider::didReceiveUserInteraction):

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

(WebKit::WebProcessProxy::addPlugInAutoStartOriginHash):
(WebKit::WebProcessProxy::plugInDidReceiveUserInteraction):

4:19 PM Changeset in webkit [253231] by pvollan@apple.com
  • 19 edits
    1 copy
    7 adds in trunk/Source

[iOS] Calls to device orientation API should be done in the UI process
https://bugs.webkit.org/show_bug.cgi?id=204720

Reviewed by Alex Christensen.

Source/WebCore:

The device orientation API on iOS is communicating with locationd. Since mach lookup to this daemon
will be closed, the calls to this API should be moved from the WebContent process to the UI process.
This patch implements forwarding of the device orientation requests to the UI process through a new
class, DeviceOrientationUpdateProvider, which is subclassed by WebDeviceOrientationUpdateProvider in
modern WebKit. This class implements forwarding of the requests to the UI process, and receives
device orientation updates from the UI process. An instance of this class will be shared by all
device orientation clients on a page, and passed as part of the page configuration parameters. On
the UI process side, a new class WebDeviceOrientationUpdateProviderProxy attached to the Web page
proxy is taking care of calling the device orientation API through the existing WebCoreMotionManager
Objective-C class, and send device orientation updates back to the Web process. Also, use a weak
hash set of orientation clients in WebCoreMotionManager.

  • WebCore.xcodeproj/project.pbxproj:
  • dom/DeviceOrientationClient.h:
  • dom/Document.cpp:
  • page/Page.cpp:

(WebCore::m_deviceOrientationUpdateProvider):
(WebCore::m_applicationManifest): Deleted.

  • page/Page.h:

(WebCore::Page::deviceOrientationUpdateProvider const):

  • page/PageConfiguration.h:
  • platform/ios/DeviceOrientationClientIOS.h:
  • platform/ios/DeviceOrientationClientIOS.mm:

(WebCore::DeviceOrientationClientIOS::DeviceOrientationClientIOS):
(WebCore::DeviceOrientationClientIOS::startUpdating):
(WebCore::DeviceOrientationClientIOS::stopUpdating):
(WebCore::DeviceOrientationClientIOS::deviceOrientationControllerDestroyed):

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

(-[WebCoreMotionManager addOrientationClient:]):
(-[WebCoreMotionManager removeOrientationClient:]):
(-[WebCoreMotionManager checkClientStatus]):
(-[WebCoreMotionManager sendMotionData:withHeading:]):

Source/WebKit:

Add a new class, WebDeviceOrientationUpdateProviderProxy, to handle messages to start and stop updating device orientation
in the UI process. Also, add a message to update the device orientation in the WebContent process. In the UI process, the
device orientation API is called through the already existing WebCoreMotionManager class.

  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • UIProcess/WebPageProxy.cpp:

(WebKit::m_webDeviceOrientationUpdateProviderProxy):
(WebKit::m_resetRecentCrashCountTimer): Deleted.

  • UIProcess/WebPageProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_overriddenMediaType):

4:11 PM Changeset in webkit [253230] by Jonathan Bedard
  • 2 edits in trunk/Tools

Python 3: Add support in webkitpy.tool (Follow-up, part 2)
https://bugs.webkit.org/show_bug.cgi?id=204838

Unreviewed follow-up fix.

  • Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
4:04 PM Changeset in webkit [253229] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r252652): Local Overrides: creating a local override for a resource loaded before Web Inspector was opened shows NaN for the Status Code
https://bugs.webkit.org/show_bug.cgi?id=204965

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/LocalResourceOverridePopover.js:

(WI.LocalResourceOverridePopover.prototype.show):
Make sure to update the object that holds the resource's original data in addition to the
object that holds the current edited values.
Drive-by: update the popover once all of the CodeMirrors have updated to hide scrollbars.

3:56 PM Changeset in webkit [253228] by sihui_liu@apple.com
  • 4 edits in trunk/Source/WebCore

IndexedDB: pass along error of IDBBackingStore::renameIndex
https://bugs.webkit.org/show_bug.cgi?id=204900

Reviewed by Brady Eidson.

We ignored error of IDBBackingStore::renameIndex, so the operation may fail silently. This covered up two bugs
in our code as we were unaware of the failure.
One was in MemoryIDBBackingStore that we did not update objectStoreInfo properly when createIndex/deleteIndex;
another was in IDBObjectStoreInfo that we did not copy its members correctly.

Covered by existing test: storage/indexeddbmodern/index-rename-1-private.html

  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:

(WebCore::IDBServer::MemoryIDBBackingStore::createIndex):
(WebCore::IDBServer::MemoryIDBBackingStore::deleteIndex):

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::performRenameIndex):

  • Modules/indexeddb/shared/IDBObjectStoreInfo.cpp: If some index is deleted from IDBObjectStoreInfo, then

m_maxIndexID could be bigger than maximum index ID in m_indexMap, because we don't decrease m_maxIndexID for
deletion. Therefore, the assertion here is incorrect.
(WebCore::IDBObjectStoreInfo::isolatedCopy const):

3:38 PM Changeset in webkit [253227] by don.olmstead@sony.com
  • 5 edits in trunk/Source/WebCore

[MathML] Should support conditional compilation
https://bugs.webkit.org/show_bug.cgi?id=204958

Reviewed by Ross Kirsling.

No new tests. No change in behavior.

Add missing checks for ENABLE_MATHML in the idl and cpp files.

  • bindings/js/JSElementCustom.cpp:

(WebCore::createNewElementWrapper):

  • bindings/js/JSNodeCustom.cpp:

(WebCore::createWrapperInline):

  • mathml/MathMLElement.idl:
  • mathml/MathMLMathElement.idl:
3:20 PM Changeset in webkit [253226] by Devin Rousso
  • 11 edits in trunk/Source

Web Inspector: add compiler UNLIKELY hints when checking if developer extras are enabled
https://bugs.webkit.org/show_bug.cgi?id=204875

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

Move the check for whether developer extras are enabled from the agent to the client so that
when inspecting a webpage, we don't check for it twice, since InspectorInstrumentation
already checks for it too.

  • inspector/agents/InspectorConsoleAgent.h:
  • inspector/agents/InspectorConsoleAgent.cpp:

(Inspector::InspectorConsoleAgent::developerExtrasEnabled const): Added.
(Inspector::InspectorConsoleAgent::addMessageToConsole):
(Inspector::InspectorConsoleAgent::startTiming):
(Inspector::InspectorConsoleAgent::logTiming):
(Inspector::InspectorConsoleAgent::stopTiming):
(Inspector::InspectorConsoleAgent::takeHeapSnapshot):
(Inspector::InspectorConsoleAgent::count):
(Inspector::InspectorConsoleAgent::countReset):
(Inspector::InspectorConsoleAgent::addConsoleMessage):

  • inspector/JSGlobalObjectConsoleClient.cpp:

(Inspector::JSGlobalObjectConsoleClient::messageWithTypeAndLevel):
(Inspector::JSGlobalObjectConsoleClient::count):
(Inspector::JSGlobalObjectConsoleClient::countReset):
(Inspector::JSGlobalObjectConsoleClient::profile):
(Inspector::JSGlobalObjectConsoleClient::profileEnd):
(Inspector::JSGlobalObjectConsoleClient::takeHeapSnapshot):
(Inspector::JSGlobalObjectConsoleClient::time):
(Inspector::JSGlobalObjectConsoleClient::timeLog):
(Inspector::JSGlobalObjectConsoleClient::timeEnd):
(Inspector::JSGlobalObjectConsoleClient::timeStamp):
(Inspector::JSGlobalObjectConsoleClient::record):
(Inspector::JSGlobalObjectConsoleClient::recordEnd):
(Inspector::JSGlobalObjectConsoleClient::screenshot):

Source/WebCore:

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::consoleStartRecordingCanvas):
(WebCore::InspectorInstrumentation::consoleStopRecordingCanvas): Added.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::frameWindowDiscardedImpl):
(WebCore::InspectorInstrumentation::didReceiveResourceResponseImpl):
(WebCore::InspectorInstrumentation::didFailLoadingImpl):
(WebCore::InspectorInstrumentation::didCommitLoadImpl):
(WebCore::InspectorInstrumentation::addMessageToConsoleImpl):
(WebCore::InspectorInstrumentation::consoleCountImpl):
(WebCore::InspectorInstrumentation::consoleCountResetImpl):
(WebCore::InspectorInstrumentation::startConsoleTimingImpl):
(WebCore::InspectorInstrumentation::logConsoleTimingImpl):
(WebCore::InspectorInstrumentation::stopConsoleTimingImpl):
(WebCore::InspectorInstrumentation::consoleStopRecordingCanvasImpl): Added.

  • inspector/agents/WebConsoleAgent.cpp:

(WebCore::WebConsoleAgent::frameWindowDiscarded):
(WebCore::WebConsoleAgent::didReceiveResponse):
(WebCore::WebConsoleAgent::didFailLoading):
Remove the redundant check for whether developer extras are enabled since it's already
checked by InspectorInstrumentation.

  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::record):
(WebCore::PageConsoleClient::recordEnd):

  • inspector/agents/InspectorCanvasAgent.h:
  • inspector/agents/InspectorCanvasAgent.cpp:

(WebCore::InspectorCanvasAgent::consoleStopRecordingCanvas): Added.
Add checks for InspectorInstrumentation::hasFrontends() to avoid doing extra work when Web
Inspector isn't open.

3:17 PM Changeset in webkit [253225] by Alan Bujtas
  • 9 edits in trunk/Source/WebCore

[LFC][IFC] Use explicit 0_lu value instead of LayoutUnit { }
https://bugs.webkit.org/show_bug.cgi?id=204964
<rdar://problem/57714095>

Reviewed by Antti Koivisto.

From geometry computation point of view, it is really the 0 value and not an empty value.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthConstraints):

  • layout/inlineformatting/InlineFormattingContextQuirks.cpp:

(WebCore::Layout::InlineFormattingContext::Quirks::lineHeightConstraints const):

  • layout/inlineformatting/InlineLineBox.h:

(WebCore::Layout::LineBox::resetDescent):
(WebCore::Layout::LineBox::resetBaseline):
(WebCore::Layout::LineBox::Baseline::reset):

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::wordBreakingBehavior const):
(WebCore::Layout::LineBreaker::Content::reset):
(WebCore::Layout::LineBreaker::Content::TrailingTrimmableContent::reset):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::ContinousContent::close):
(WebCore::Layout::LineBuilder::Run::Run):
(WebCore::Layout::LineBuilder::initialize):
(WebCore::Layout::LineBuilder::close):
(WebCore::Layout::LineBuilder::alignContentVertically):
(WebCore::Layout::LineBuilder::appendLineBreak):
(WebCore::Layout::LineBuilder::adjustBaselineAndLineHeight):
(WebCore::Layout::LineBuilder::TrimmableContent::trimTrailingRun):
(WebCore::Layout::LineBuilder::InlineItemRun::trailingLetterSpacing const):
(WebCore::Layout::LineBuilder::InlineItemRun::setCollapsesToZeroAdvanceWidth):

  • layout/inlineformatting/InlineLineBuilder.h:

(WebCore::Layout::LineBuilder::TrimmableContent::reset):

  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::inlineItemWidth):

  • layout/inlineformatting/text/TextUtil.h:

(WebCore::Layout::TextUtil::width): Deleted.

3:02 PM Changeset in webkit [253224] by Chris Dumez
  • 3 edits in trunk/Source/WebKit

Reduce timeout for page to handle beforeunload events when trying to close a page
https://bugs.webkit.org/show_bug.cgi?id=204950
<rdar://problem/57700419>

Reviewed by Ryosuke Niwa.

Reduce timeout for page to handle beforeunload events when trying to close a page. It would previously
take up to 3 seconds to actually close a tab after the user would click on the "X" to close it. This
is because we would wait for the page to fire and handle the beforeunload events and only give up after
3 seconds. This patch reduces this timeout to something more reasonable from a user standpoint (500ms).

  • UIProcess/WebPageProxy.cpp:

(WebKit::m_tryCloseTimeoutTimer):
(WebKit::WebPageProxy::tryClose):
(WebKit::WebPageProxy::tryCloseTimedOut):
(WebKit::WebPageProxy::closePage):
(WebKit::m_resetRecentCrashCountTimer): Deleted.

  • UIProcess/WebPageProxy.h:
3:01 PM Changeset in webkit [253223] by Alan Coon
  • 7 edits in tags/Safari-609.1.11.1/Source

Versioning.

3:00 PM Changeset in webkit [253222] by Jonathan Bedard
  • 4 edits in trunk/Tools

Python 3: Add support in webkitpy.tool (Follow-up, part 1)
https://bugs.webkit.org/show_bug.cgi?id=204838

Reviewed by Stephanie Lewis.

As I've been using webkit-patch with Python 3, I've encountered a handful of other
compatibility bugs.

  • Scripts/webkit-patch:

(ForgivingUTF8Writer): Only apple the ForgivingUTF8Writer when our string type isn't unicode.
(ForgivingUTF8Writer.write): Use standardized decoding functions.

  • Scripts/webkitpy/common/net/bugzilla/bugzilla.py:

(Bugzilla.authenticate): Use byte regex.

  • Scripts/webkitpy/tool/steps/editchangelog.py:

(EditChangeLog.run): Convert map to list.

2:58 PM Changeset in webkit [253221] by Alan Coon
  • 1 copy in tags/Safari-609.1.11.1

New tag.

2:49 PM Changeset in webkit [253220] by Dewei Zhu
  • 2 edits in trunk/Websites/perf.webkit.org

Custom analysis task page should allow schedule any triggerable accepted tests.
https://bugs.webkit.org/show_bug.cgi?id=204925

Reviewed by Ryosuke Niwa.

Fix a bug that subtest will not show on custom analysis task page if both itself and parent test are
accepted by triggerable.
Order test list in alphabetical order.

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

(CustomAnalysisTaskConfigurator.prototype._renderTriggerableTests):

2:45 PM Changeset in webkit [253219] by Jonathan Bedard
  • 19 edits in trunk

Python 3: Add support in webkitpy.test
https://bugs.webkit.org/show_bug.cgi?id=204952

Reviewed by Stephanie Lewis.

Source/WebKit:

Tested by test-webkitpy.

  • Scripts/webkit/messages_unittest.py: Use Python 2/3 compatible StringIO.

Tools:

  • Scripts/test-webkitpy-python3: Add webkitpy.tool.
  • Scripts/webkitpy/layout_tests/lint_test_expectations_unittest.py: Use Python 2/3

compatible StringIO objects.

  • Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py: Ditto.
  • Scripts/webkitpy/performance_tests/perftest_unittest.py: Ditto.
  • Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py: Ditto.
  • Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py: Ditto.
  • Scripts/webkitpy/test/finder.py:

(Finder._exclude): Convert filter to list.

  • Scripts/webkitpy/test/main.py:

(Tester._log_exception): Use Python 2/3 compatible StringIO object.
(_Loader.getTestCaseNames): Convert filter to list.

  • Scripts/webkitpy/test/main_unittest.py:

(TesterTest.test_no_tests_found): Use Python 2/3 compatible StringIO.
(TesterTest.test_integration_tests_are_found): Sort serial tests before comparing.

  • Scripts/webkitpy/test/printer.py: Use Python 2/3 compatible StringIO.
  • Scripts/webkitpy/test/runner_unittest.py: Ditto.
  • Scripts/webkitpy/test/skip.py:

(_skipped_method._skip): Fix class inspection on instance method.

  • Scripts/webkitpy/test/skip_unittest.py: Use Python 2/3 compatible StringIO.
  • Scripts/webkitpy/w3c/test_converter.py: Use Python 2/3 compatible HTMLParser.
  • Scripts/webkitpy/w3c/wpt_runner.py:

(main): Fix Python 3 syntax errors.

  • lldb/dump_class_layout_unittest.py:

(TestDumpClassLayout.setUpClass): Fix Python 3 syntax errors.

2:43 PM Changeset in webkit [253218] by keith_miller@apple.com
  • 4 edits
    4 deletes in trunk/Source

Remove various .order files.
https://bugs.webkit.org/show_bug.cgi?id=204959

Reviewed by Yusuke Suzuki.

These files are all super out of date and likely don't do anything anymore.
The signatures of the functions have changed thus the mangled name has changed.

Source/JavaScriptCore:

Source/WebCore:

  • WebCore.order: Removed.

Source/WebKit:

  • mac/WebKit2.order: Removed.

Source/WebKitLegacy/mac:

  • WebKit.order: Removed.
2:22 PM Changeset in webkit [253217] by dino@apple.com
  • 2 edits in trunk/Source/ThirdParty/ANGLE

Restrict libANGLE to link only with WebCore
https://bugs.webkit.org/show_bug.cgi?id=204957
<rdar://problem/57708644>

Reviewed by Brian Burg.

Restrict to WebCore and WebCoreTestSupport.

  • Configurations/ANGLE.xcconfig:
2:07 PM Changeset in webkit [253216] by mitz@apple.com
  • 2 edits in trunk/Source/WebKit

Address <https://bugs.webkit.org/show_bug.cgi?id=189222#c3>

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView valueForUndefinedKey:]): Added a newline.

1:45 PM Changeset in webkit [253215] by Jonathan Bedard
  • 13 edits in trunk

Unreviewed, rolling out r253148.

This caused fast/mediastream/stream-switch.html to timeout on
Mac.

Reverted changeset:

"WPT test MediaStream-MediaElement-srcObject.https.html times
out"
https://bugs.webkit.org/show_bug.cgi?id=204762
https://trac.webkit.org/changeset/253148

1:42 PM Changeset in webkit [253214] by Alan Bujtas
  • 8 edits in trunk/Source/WebCore

[LFC][IFC] Paint partial trailing run with hyphen when needed
https://bugs.webkit.org/show_bug.cgi?id=204953
<rdar://problem/57705169>

Reviewed by Antti Koivisto.

When LineBreaker comes back with a partial content that needs hyphen, we need to make sure this information
ends up in the final Display::Run so that the rendered content includes the hyphen string. Note that this only needs to
be done when the content does _not_ have the hyphen already (opportunity vs. oppor-tunity).
(This patch also renames trailingPartial to partialTrailing because the fact that it is partial run is more important than that it is trailing run.)

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::TextContext::TextContext):
(WebCore::Display::Run::TextContext::needsHyphen const):
(WebCore::Display::Run::TextContext::setNeedsHyphen):
(WebCore::Display::Run::textContext):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::setDisplayBoxesForLine):

  • layout/inlineformatting/InlineLineBreaker.cpp:

(WebCore::Layout::LineBreaker::breakingContextForInlineContent):
(WebCore::Layout::LineBreaker::wordBreakingBehavior const):

  • layout/inlineformatting/InlineLineBreaker.h:
  • layout/inlineformatting/LineLayoutContext.cpp:

(WebCore::Layout::LineLayoutContext::layoutLine):
(WebCore::Layout::LineLayoutContext::close):
(WebCore::Layout::LineLayoutContext::processUncommittedContent):

  • layout/inlineformatting/LineLayoutContext.h:
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::paint):

1:05 PM Changeset in webkit [253213] by Chris Dumez
  • 8 edits
    7 adds in trunk

Prevent synchronous XHR in beforeunload / unload event handlers
https://bugs.webkit.org/show_bug.cgi?id=204912
<rdar://problem/57676394>

Reviewed by Darin Adler.

Source/WebCore:

Prevent synchronous XHR in beforeunload / unload event handlers. They are terrible for performance
and the Beacon API (or Fetch keepalive) are more efficient & supported alternatives.

In particular, this would cause hangs when trying to navigate away from a site or when closing
attempt, which would result in terrible user experience.

Chrome and Edge have expressed public support for this. Chrome has actually been testing this behavior
for a while now:
https://www.chromestatus.com/feature/4664843055398912

I added this new behavior behind an experimental feature flag, enabled by default.

Tests: http/tests/xmlhttprequest/sync-xhr-in-beforeunload.html

http/tests/xmlhttprequest/sync-xhr-in-unload.html

  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::DocumentThreadableLoader):

  • loader/FrameLoader.cpp:

(WebCore::PageLevelForbidScope::PageLevelForbidScope):
(WebCore::ForbidPromptsScope::ForbidPromptsScope):
(WebCore::ForbidPromptsScope::~ForbidPromptsScope):
(WebCore::ForbidSynchronousLoadsScope::ForbidSynchronousLoadsScope):
(WebCore::ForbidSynchronousLoadsScope::~ForbidSynchronousLoadsScope):
(WebCore::FrameLoader::dispatchUnloadEvents):
(WebCore::FrameLoader::dispatchBeforeUnloadEvent):

  • page/Page.cpp:

(WebCore::Page::forbidSynchronousLoads):
(WebCore::Page::allowSynchronousLoads):
(WebCore::Page::areSynchronousLoadsAllowed):

  • page/Page.h:

LayoutTests:

Add layout test coverage.

  • http/tests/xmlhttprequest/resources/sync-xhr-in-beforeunload-window.html: Added.
  • http/tests/xmlhttprequest/resources/sync-xhr-in-unload-window.html: Added.
  • http/tests/xmlhttprequest/sync-xhr-in-beforeunload-expected.txt: Added.
  • http/tests/xmlhttprequest/sync-xhr-in-beforeunload.html: Added.
  • http/tests/xmlhttprequest/sync-xhr-in-unload-expected.txt: Added.
  • http/tests/xmlhttprequest/sync-xhr-in-unload.html: Added.
1:03 PM Changeset in webkit [253212] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Drop support for NSURLCache callbacks in NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=203344

Patch by Benjamin Nham <Ben Nham> on 2019-12-06
Reviewed by Alex Christensen.

Remove the NSURLSession caching policy callback in NetworkProcess. It's no longer necessary since
we don't use NSURLCache in NetworkProcess (https://bugs.webkit.org/show_bug.cgi?id=185990).

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:dataTask:willCacheResponse:completionHandler:]): Deleted.

11:34 AM Changeset in webkit [253211] by BJ Burg
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: TabActivity diagnostic event should sample the active tab uniformly
https://bugs.webkit.org/show_bug.cgi?id=204531

Reviewed by Devin Rousso.

Rewrite this class to use a uniform sampling approach. Every n seconds, a timer fires and
samples what the current tab is. If the last user interaction happened up to n seconds ago,
report a TabActivity diagnostic event. Keeping with the previous implementation, samples
are taken every n=60 seconds.

To account for bias in the initial sample when Web Inspector is open, wait m seconds for
the first sample. This accounts for the time between opening Web Inspector and choosing the
desired tab. In my testing, m=10 is enough time to load Web Inspector and switch
immediately to a different tab. In that case, the initial tab would not be sampled as the
active tab even if the last user interaction (clicking tab bar) happened while the initial
tab was displayed. If the recorder's setup() method is called some time after Web Inspector is
opened, then the initial delay will shrink to ensure at least 10s has elapsed since the frontend
finished loading.

  • UserInterface/Base/Main.js:

(WI.contentLoaded): Keep a timestamp of when the frontend finished loading.

  • UserInterface/Controllers/TabActivityDiagnosticEventRecorder.js:

(WI.TabActivityDiagnosticEventRecorder):
(WI.TabActivityDiagnosticEventRecorder.prototype.setup):
(WI.TabActivityDiagnosticEventRecorder.prototype.teardown):
(WI.TabActivityDiagnosticEventRecorder.prototype._startInitialDelayBeforeSamplingTimer):
(WI.TabActivityDiagnosticEventRecorder.prototype._stopInitialDelayBeforeSamplingTimer):
(WI.TabActivityDiagnosticEventRecorder.prototype._startEventSamplingTimer):
(WI.TabActivityDiagnosticEventRecorder.prototype._stopEventSamplingTimer):
(WI.TabActivityDiagnosticEventRecorder.prototype._sampleCurrentTabActivity):
(WI.TabActivityDiagnosticEventRecorder.prototype._didObserveUserInteraction):
(WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowFocus):
(WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowBlur):
(WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowKeyDown):
(WI.TabActivityDiagnosticEventRecorder.prototype._handleWindowMouseDown):
(WI.TabActivityDiagnosticEventRecorder.prototype._didInteractWithTabContent): Deleted.
(WI.TabActivityDiagnosticEventRecorder.prototype._clearTabActivityTimeout): Deleted.
(WI.TabActivityDiagnosticEventRecorder.prototype._beginTabActivityTimeout): Deleted.
(WI.TabActivityDiagnosticEventRecorder.prototype._stopTrackingTabActivity): Deleted.
(WI.TabActivityDiagnosticEventRecorder.prototype._handleTabBrowserSelectedTabContentViewDidChange): Deleted.

11:18 AM Changeset in webkit [253210] by Antti Koivisto
  • 13 edits
    2 adds in trunk

Support for resolving highlight pseudo element style
https://bugs.webkit.org/show_bug.cgi?id=204937

Reviewed by Simon Fraser.

Source/WebCore:

Test: highlight/highlight-pseudo-element-style.html

  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::checkOne const):

Returns always true when checked without pseudoId, so it gets added to the set of seen pseudo elements.
Match argument with the provided highlight name otherwise.

  • css/SelectorChecker.h:
  • css/parser/CSSSelectorParser.cpp:

(WebCore::CSSSelectorParser::consumePseudo):

  • rendering/style/RenderStyle.h:
  • style/ElementRuleCollector.cpp:

(WebCore::Style::ElementRuleCollector::ruleMatches):

  • style/ElementRuleCollector.h:

(WebCore::Style::PseudoElementRequest::PseudoElementRequest):

Add the requested highlight name.

  • style/StyleResolver.h:
  • style/StyleScope.h:
  • testing/Internals.cpp:

(WebCore::Internals::highlightPseudoElementColor):

Testing support.

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

LayoutTests:

  • highlight/highlight-pseudo-element-style-expected.txt: Added.
  • highlight/highlight-pseudo-element-style.html: Added.
10:08 AM Changeset in webkit [253209] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Fix DisplayRunPath offsets
https://bugs.webkit.org/show_bug.cgi?id=204949

Reviewed by Zalan Bujtas.

Fixes output of tests like fast/text/system-font-zero-size.html with LFC integration enabled.

  • rendering/line/LineLayoutTraversalDisplayRunPath.h:

(WebCore::LineLayoutTraversal::DisplayRunPath::DisplayRunPath):
(WebCore::LineLayoutTraversal::DisplayRunPath::localStartOffset const):
(WebCore::LineLayoutTraversal::DisplayRunPath::localEndOffset const):

Display::Run offsets are already local.

(WebCore::LineLayoutTraversal::DisplayRunPath::length const):
(WebCore::LineLayoutTraversal::DisplayRunPath::runs const):
(WebCore::LineLayoutTraversal::DisplayRunPath::firstRun const): Deleted.

9:15 AM Changeset in webkit [253208] by jh718.park@samsung.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed. Revert r253207 because it causes compile error in Mac and ios build.

  • runtime/PredictionFileCreatingFuzzerAgent.cpp:

(JSC::PredictionFileCreatingFuzzerAgent::getPredictionInternal):

9:08 AM Changeset in webkit [253207] by jh718.park@samsung.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed. Remove build warning below since r252978.

warning: format ‘%llx’ expects argument of type ‘long long unsigned int’,
but argument 3 has type ‘JSC::SpeculatedType {aka long unsigned int}’ [-Wformat=]

  • runtime/PredictionFileCreatingFuzzerAgent.cpp:

(JSC::PredictionFileCreatingFuzzerAgent::getPredictionInternal):

8:06 AM Changeset in webkit [253206] by Chris Dumez
  • 5 edits in trunk/Source

Stop using reserveCapacity() / reserveInitialCapacity() in IPC decoders
https://bugs.webkit.org/show_bug.cgi?id=204930
<rdar://problem/57682737>

Reviewed by Ryosuke Niwa.

This is IPC hardening since the size we use to reserve the capacity is encoded over IPC
and cannot be trusted in some cases.

Source/WebCore:

  • page/csp/ContentSecurityPolicyResponseHeaders.h:

(WebCore::ContentSecurityPolicyResponseHeaders::decode):

Source/WebKit:

  • Platform/IPC/ArgumentCoders.h:
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Vector<RefPtr<SecurityOrigin>>>::decode):

6:37 AM Changeset in webkit [253205] by Antti Koivisto
  • 7 edits in trunk/Source/WebCore

[LFC][Integration] Wire line counting functions in RenderBlockFlow
https://bugs.webkit.org/show_bug.cgi?id=204943

Reviewed by Zalan Bujtas.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::lineCount const):

  • layout/integration/LayoutIntegrationLineLayout.h:
  • rendering/ComplexLineLayout.cpp:

(WebCore::ComplexLineLayout::layoutRunsAndFloatsInRange):
(WebCore::ComplexLineLayout::lineCount const):
(WebCore::ComplexLineLayout::lineCountUntil const):

Move complex path specific code to ComplexLineLayout.

  • rendering/ComplexLineLayout.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::adjustLinePositionForPagination):
(WebCore::RenderBlockFlow::lineCount const):
(WebCore::RenderBlockFlow::hasLines const):

Support all paths.

  • rendering/RenderBlockFlow.h:
6:34 AM Changeset in webkit [253204] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

[LFC][Integration] Support isLineBreak() in iterator
https://bugs.webkit.org/show_bug.cgi?id=204941

Reviewed by Zalan Bujtas.

  • layout/displaytree/DisplayRun.h:

(WebCore::Display::Run::isLineBreak const):

  • rendering/line/LineLayoutTraversalDisplayRunPath.h:

(WebCore::LineLayoutTraversal::DisplayRunPath::isLineBreak const):
(WebCore::LineLayoutTraversal::DisplayRunPath::traverseNextTextBoxInVisualOrder):

Also remove unneeded skipping of runs without text context. All runs generated from text nodes now have them.

1:25 AM Changeset in webkit [253203] by youenn@apple.com
  • 11 edits
    2 adds in trunk

Protect WebRTC network monitoring to wait forever in edge cases
https://bugs.webkit.org/show_bug.cgi?id=204846
Source/WebKit:

Reviewed by Eric Carlson.

We were limiting the number of IPC message sent to network process by only sending the start monitoring event for the first client.
The issue is that, if network process crashes for instance while having not yet given the list of networks, all clients will be hanging
waiting for the completion of network list.
We are now sending an IPC message for every client and the network process will ignore the ones that are not useful.
In addition, in case of network process crash, we send a signal that network list has changed to make sure clients will never hang.
They might still fail connecting, which is ok since network process crashed.

Test: webrtc/datachannel/gather-candidates-networkprocess-crash.html

  • NetworkProcess/webrtc/NetworkRTCMonitor.cpp:

(WebKit::NetworkRTCMonitor::startUpdatingIfNeeded):

  • NetworkProcess/webrtc/NetworkRTCMonitor.h:
  • NetworkProcess/webrtc/NetworkRTCMonitor.messages.in:
  • WebProcess/Network/webrtc/LibWebRTCNetwork.h:

(WebKit::LibWebRTCNetwork::networkProcessCrashed):

  • WebProcess/Network/webrtc/WebRTCMonitor.cpp:

(WebKit::WebRTCMonitor::StartUpdating):
(WebKit::WebRTCMonitor::StopUpdating):
(WebKit::WebRTCMonitor::networksChanged):
(WebKit::WebRTCMonitor::networkProcessCrashed):

  • WebProcess/Network/webrtc/WebRTCMonitor.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::networkProcessConnectionClosed):

LayoutTests:

<rdar://problem/57618773>

Reviewed by Eric Carlson.

  • webrtc/datachannel/gather-candidates-networkprocess-crash-expected.txt: Added.
  • webrtc/datachannel/gather-candidates-networkprocess-crash.html: Added.
1:24 AM Changeset in webkit [253202] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Output libwebrtc logging from Network Process as release logging
https://bugs.webkit.org/show_bug.cgi?id=204853

Reviewed by Eric Carlson.

This will help debugging WebRTC networking issues.
No observable change of behavior.

  • NetworkProcess/webrtc/NetworkRTCProvider.cpp:

(WebKit::doReleaseLogging):
(WebKit::NetworkRTCProvider::NetworkRTCProvider):

Note: See TracTimeline for information about the timeline view.