Timeline



Apr 4, 2019:

11:42 PM Changeset in webkit [243927] by Simon Fraser
  • 7 edits
    2 adds in trunk

Simple iframe scrolling test fails to get a composited scrolling frame in WebKitTestRunnerApp
https://bugs.webkit.org/show_bug.cgi?id=196635

Reviewed by Antti Koivisto.
Source/WebKit:

Remove WKBundleSetAsyncFrameScrollingEnabled().

  • WebProcess/InjectedBundle/API/c/WKBundle.cpp:

(WKBundleSetAsyncFrameScrollingEnabled): Deleted.

  • WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:

Tools:

InjectedBundle::beginTesting() calling WKBundleSetAsyncFrameScrollingEnabled() makes it impossible
for a test to enable async frame scrolling via:

<!-- webkit-test-runner [ internal:AsyncFrameScrollingEnabled=true ] -->

so remove it and have TestController::resetPreferencesToConsistentValues() set the default value.

Test: scrollingcoordinator/ios/programmatic-frame-scroll.html

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::beginTesting):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

LayoutTests:

  • scrollingcoordinator/ios/programmatic-frame-scroll-expected.html: Added.
  • scrollingcoordinator/ios/programmatic-frame-scroll.html: Added.
10:18 PM Changeset in webkit [243926] by Simon Fraser
  • 19 edits
    4 adds in trunk

[iOS WK2] REGRESSION (r242687): Programmatic scroll of overflow scroll results in bad rendering
https://bugs.webkit.org/show_bug.cgi?id=195584

Reviewed by Zalan Bujtas.

Source/WebCore:

Push data to the scrolling tree about whether an overflow:scroll scroll was programmatic, by having
RenderLayer::scrollToOffset() call into AsyncScrollingCoordinator::requestScrollPositionUpdate(),
just as we do for frames.

AsyncScrollingCoordinator::requestScrollPositionUpdate() is generalized to take any ScrollableArea.

Fix an assumption in the ScrollingTree that we only care about programmatic scrolls on the root node.
ScrollingTree::commitTreeState() no longer sets isHandlingProgrammaticScroll; instead,
callers of ScrollingTreeScrollingNode::scrollTo() pass a ScrollType. Commit functions pass
ScrollType::Programmatic when handling RequestedScrollPosition changes as necessary.

Programmatic scrolls need to get to the scrolling tree in the UI process so that we update
the tree's notion of scroll position, and trigger actual UIScrollView scrolls (layers may have
already been put in the right locations, but the UI process needs to know that a scroll happened).
However, we need to prevent notifications from programmatic scrolls getting back to the
web process, because this causes jumpiness. This is done via an early return in
RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll().

Tests: scrollingcoordinator/ios/programmatic-overflow-scroll.html

scrollingcoordinator/ios/programmatic-page-scroll.html

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):

  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ScrollingCoordinator.h:

(WebCore::ScrollingCoordinator::requestScrollPositionUpdate):

  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::commitTreeState):
(WebCore::ScrollingTree::isHandlingProgrammaticScroll): Deleted.

  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::isHandlingProgrammaticScroll const):
(WebCore::ScrollingTree::setIsHandlingProgrammaticScroll):

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::scrollBy):
(WebCore::ScrollingTreeScrollingNode::scrollTo):

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::commitStateAfterChildren):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollToOffset):
(WebCore::RenderLayer::scrollingNodeID const):

  • rendering/RenderLayer.h:
  • rendering/RenderMarquee.cpp:

(WebCore::RenderMarquee::timerFired):

Source/WebKit:

Push data to the scrolling tree about whether an overflow:scroll scroll was programmatic, by having
RenderLayer::scrollToOffset() call into AsyncScrollingCoordinator::requestScrollPositionUpdate(),
just as we do for frames.

AsyncScrollingCoordinator::requestScrollPositionUpdate() is generalized to take any ScrollableArea.

Fix an assumption in the ScrollingTree that we only care about programmatic scrolls on the root node.
ScrollingTree::commitTreeState() no longer sets isHandlingProgrammaticScroll; instead,
callers of ScrollingTreeScrollingNode::scrollTo() pass a ScrollType. Commit functions pass
ScrollType::Programmatic when handling RequestedScrollPosition changes as necessary.

Programmatic scrolls need to get to the scrolling tree in the UI process so that we update
the tree's notion of scroll position, and trigger actual UIScrollView scrolls (layers may have
already been put in the right locations, but the UI process needs to know that a scroll happened).
However, we need to prevent notifications from programmatic scrolls getting back to the
web process, because this causes jumpiness. This is done via an early return in
RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll().

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:

(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeFrameScrollingNodeRemoteIOS.mm:

(WebKit::ScrollingTreeFrameScrollingNodeRemoteIOS::commitStateAfterChildren): Subframe nodes have
a delegate, and that will take care of the requestedScrollPosition update.

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:

(WebKit::ScrollingTreeOverflowScrollingNodeIOS::commitStateAfterChildren):

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm:

(WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

LayoutTests:

Testing of programmatic scrolls in frames is prevented by webkit.org/b/196635.

  • scrollingcoordinator/ios/programmatic-overflow-scroll-expected.html: Added.
  • scrollingcoordinator/ios/programmatic-overflow-scroll.html: Added.
  • scrollingcoordinator/ios/programmatic-page-scroll-expected.html: Added.
  • scrollingcoordinator/ios/programmatic-page-scroll.html: Added.
9:17 PM Changeset in webkit [243925] by ysuzuki@apple.com
  • 8 edits
    2 copies
    1 add in trunk

[JSC] makeBoundFunction should not assume incoming "length" value is Int32 because it performs some calculation in bytecode
https://bugs.webkit.org/show_bug.cgi?id=196631

Reviewed by Saam Barati.

JSTests:

  • stress/make-bound-function-should-not-assume-int32-length.js: Added.

(assert):
(test):
(foo):

Source/JavaScriptCore:

makeBoundFunction assumes that "length" argument is always Int32. But this should not be done since this "length" value is calculated in builtin JS code.
DFG may store this value in Double format so that we should not rely on that this value is Int32. This patch fixes makeBoundFunction function to perform
toInt32 operation. We also insert a missing exception check for JSString::value(ExecState*) in makeBoundFunction.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • interpreter/CallFrameInlines.h:
  • runtime/DoublePredictionFuzzerAgent.cpp: Copied from Source/JavaScriptCore/interpreter/CallFrameInlines.h.

(JSC::DoublePredictionFuzzerAgent::DoublePredictionFuzzerAgent):
(JSC::DoublePredictionFuzzerAgent::getPrediction):

  • runtime/DoublePredictionFuzzerAgent.h: Copied from Source/JavaScriptCore/interpreter/CallFrameInlines.h.
  • runtime/JSGlobalObject.cpp:

(JSC::makeBoundFunction):

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

(JSC::VM::VM):

6:45 PM Changeset in webkit [243924] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, speculative fix for build failure
https://bugs.webkit.org/show_bug.cgi?id=196475

  • Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.h:
6:09 PM Changeset in webkit [243923] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Element::isFocusable() debug asserts too frequently
https://bugs.webkit.org/show_bug.cgi?id=196634

Reviewed by Geoffrey Garen.

Remove the debug assertion for now.

  • dom/Element.cpp:

(WebCore::Element::isFocusable const):

5:49 PM Changeset in webkit [243922] by ap@apple.com
  • 2 edits in trunk/Tools

Use a correct LC_RPATH when building with ASan
https://bugs.webkit.org/show_bug.cgi?id=196576

Reviewed by David Kilzer.

  • asan/asan.xcconfig: As a temporary hack, just force LC_RPATH on all binaries,

so that ../Frameworks is checked. This is simpler and more reliable than updating
each SPC service xcconfig.

5:31 PM Changeset in webkit [243921] by aakash_jain@apple.com
  • 6 edits in trunk/Websites/bugs.webkit.org

Add another status-bubble iframe to display results from new EWS
https://bugs.webkit.org/show_bug.cgi?id=196308

Reviewed by Lucas Forschler.

  • js/status-bubble.js:

(handleStatusBubbleMessage): Added URL for new EWS.
(handleStatusBubbleLoadNewEWS): Method to post message to new EWS.

  • code-review.js: Added another iframe to display results from new EWS.
  • template/en/default/attachment/edit.html.tmpl: Ditto.
  • template/en/default/attachment/list.html.tmpl: Ditto.
  • template/en/default/attachment/reviewform.html.tmpl: Ditto.
5:28 PM Changeset in webkit [243920] by sbarati@apple.com
  • 2 edits in trunk/JSTests

Unreviewed. Make the test from r243906 catch the thrown exceptions.

  • stress/inferred-types-regex-matches-array.js:
5:11 PM Changeset in webkit [243919] by Simon Fraser
  • 14 edits in trunk/Source

Have ScrollableArea store a ScrollType for the current scroll
https://bugs.webkit.org/show_bug.cgi?id=196627

Reviewed by Zalan Bujtas.

Source/WebCore:

RenderLayer had isInUserScroll() which is the opposite of ScrollableArea::inProgrammaticScroll(),
so just have ScrollableArea store a ScrollType.

RenderLayer's scrolling bottleneck, scrollToOffset(), now takes a ScrollType, and pushes
it onto the base class.

AsyncScrollingCoordinator::requestScrollPositionUpdate() can use the incoming scrollType (currently
incorrect for iOS WK2 overflow) rather than deducing a user scroll from ScrollingLayerPositionAction.

No behavior change.

  • page/FrameView.cpp:

(WebCore::FrameView::setFrameRect):
(WebCore::FrameView::topContentInsetDidChange):
(WebCore::FrameView::updateLayoutViewport):
(WebCore::FrameView::setScrollPosition):
(WebCore::FrameView::shouldUpdateCompositingLayersAfterScrolling const):
(WebCore::FrameView::setWasScrolledByUser):

  • page/FrameViewLayoutContext.cpp:

(WebCore::LayoutScope::LayoutScope):
(WebCore::LayoutScope::~LayoutScope):

  • page/ios/FrameIOS.mm:

(WebCore::Frame::overflowScrollPositionChangedForNode):

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
(WebCore::AsyncScrollingCoordinator::reconcileScrollingState):

  • platform/ScrollView.cpp:

(WebCore::ScrollView::setScrollPosition):

  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::ScrollableArea):

  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::currentScrollType const):
(WebCore::ScrollableArea::setCurrentScrollType):
(WebCore::ScrollableArea::setIsUserScroll): Deleted.
(WebCore::ScrollableArea::inProgrammaticScroll const): Deleted.
(WebCore::ScrollableArea::setInProgrammaticScroll): Deleted.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::scrollToXPosition):
(WebCore::RenderLayer::scrollToYPosition):
(WebCore::RenderLayer::scrollToOffset):
(WebCore::RenderLayer::scrollTo):

  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateScrollOffset):

  • rendering/RenderMarquee.cpp:

(WebCore::RenderMarquee::start):

Source/WebKitLegacy/mac:

Send the programmatic scroll type.

  • DOM/DOMHTML.mm:

(-[DOMHTMLElement setScrollXOffset:scrollYOffset:adjustForIOSCaret:]):

5:08 PM Changeset in webkit [243918] by rmorisset@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

B3ReduceStrength should know that Mul distributes over Add and Sub
https://bugs.webkit.org/show_bug.cgi?id=196325
<rdar://problem/49441650>

Reviewed by Saam Barati.

Fix some obviously wrong code that was due to an accidental copy-paste.
It made the entire optimization dead code that never ran.

  • b3/B3ReduceStrength.cpp:
4:14 PM Changeset in webkit [243917] by Shawn Roberts
  • 5 edits
    2 deletes in trunk

Unreviewed, rolling out r243868.

Causing timeouts failures on several queues

Reverted changeset:

"[Web Animations] JS wrapper may be deleted while animation is
yet to dispatch its finish event"
https://bugs.webkit.org/show_bug.cgi?id=196118
https://trac.webkit.org/changeset/243868

3:51 PM Changeset in webkit [243916] by Ryan Haddad
  • 3 edits in trunk/Source/WebKit

Unreviewed, rolling out r243888.

Introduced layout test crashes.

Reverted changeset:

"[macOS][iOS] Add filter to syscall sandbox rule"
https://bugs.webkit.org/show_bug.cgi?id=196613
https://trac.webkit.org/changeset/243888

3:47 PM Changeset in webkit [243915] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Disable Flaky API Test TestWebKitAPI.WebKit.FocusTextInputContext
https://bugs.webkit.org/show_bug.cgi?id=196629

Reviewed by Lucas Forschler.

  • TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:
3:44 PM Changeset in webkit [243914] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-app] while waiting in queue status-bubble for testers queues should display build information from builder queue
https://bugs.webkit.org/show_bug.cgi?id=196618

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble): Added QUEUE_TRIGGERS.
(StatusBubble._build_bubble): Get the build from builder if tester has not started the build yet.
(StatusBubble._get_parent_queue): Get the name of the parent (builder) queue.
(StatusBubble.get_latest_build_for_queue): If the queue doesn't have any build yet, return build information from
its parent(builder).

3:42 PM Changeset in webkit [243913] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-app] Status-bubble steps are sometimes displayed in reverse order
https://bugs.webkit.org/show_bug.cgi?id=196625

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble._steps_messages): Explicitly specify order_by('uid').

3:11 PM Changeset in webkit [243912] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Disable Flaky API Test TestWebKitAPI.KeyboardInputTests.KeyboardTypeForInput
https://bugs.webkit.org/show_bug.cgi?id=196630

Reviewed by Wenson Hsieh.

  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:
3:07 PM Changeset in webkit [243911] by youenn@apple.com
  • 21 edits in trunk

Pass storage quota parameters from UIProcess to NetworkProcess as part of WebsiteDataStore parameters
https://bugs.webkit.org/show_bug.cgi?id=196543

Reviewed by Alex Christensen.

Source/WebCore:

Add a default routine to compute a third party quota from a per origin quota.
No change of behavior.

  • storage/StorageQuotaManager.h:

(WebCore::StorageQuotaManager::defaultThirdPartyQuotaFromPerOriginQuota):
(WebCore::StorageQuotaManager::defaultThirdPartyQuota):

Source/WebKit:

Renamed methods used to set cache storage quota to be storage generic
since they will apply to all storage.

Pass quota parameters as part of WebsiteDataStoreParameters from UIProcess
to NetworkProcess (start-up time and new WebsiteDataStore time).

Compute on UIProcess the quota for third party origins using the default rule of dividing by 10.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::addWebsiteDataStore):
(WebKit::NetworkProcess::initializeStorageQuota):
(WebKit::NetworkProcess::setCacheStorageParameters):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • Shared/WebsiteDataStoreParameters.cpp:

(WebKit::WebsiteDataStoreParameters::encode const):
(WebKit::WebsiteDataStoreParameters::decode):

  • Shared/WebsiteDataStoreParameters.h:
  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreSetPerOriginStorageQuota):
(WKWebsiteDataStoreSetCacheStoragePerOriginQuota): Deleted.

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _perOriginStorageQuota]):
(-[WKWebsiteDataStore _setPerOriginStorageQuota:]):
(-[WKWebsiteDataStore _cacheStoragePerOriginQuota]): Deleted.
(-[WKWebsiteDataStore _setCacheStoragePerOriginQuota:]): Deleted.

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::retrieveCacheStorageParameters):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

(WebKit::WebsiteDataStore::perOriginStorageQuota const):
(WebKit::WebsiteDataStore::setPerOriginStorageQuota):
(WebKit::WebsiteDataStore::cacheStoragePerOriginQuota const): Deleted.
(WebKit::WebsiteDataStore::setCacheStoragePerOriginQuota): Deleted.

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::copy):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::perOriginStorageQuota):
(WebKit::WebsiteDataStoreConfiguration::setPerOriginStorageQuota):
(WebKit::WebsiteDataStoreConfiguration::cacheStoragePerOriginQuota): Deleted.
(WebKit::WebsiteDataStoreConfiguration::setCacheStoragePerOriginQuota): Deleted.

Tools:

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::generatePageConfiguration):

2:59 PM Changeset in webkit [243910] by commit-queue@webkit.org
  • 31 edits
    3 deletes in trunk

Unreviewed, rolling out r243807 and r243824.
https://bugs.webkit.org/show_bug.cgi?id=196611

Test added is a flaky timeout on iOS Simulator, 3 tests
unskipped are flaky failures (Requested by ShawnRoberts on
#webkit).

Reverted changesets:

"Blob type cannot be stored correctly in IDB when
IDBObjectStore has autoIncrement and keyPath options"
https://bugs.webkit.org/show_bug.cgi?id=196128
https://trac.webkit.org/changeset/243807

"Follow up fix for r243807: Use MarkedArgumentBuffer instead
of Vector for JSValue"
https://bugs.webkit.org/show_bug.cgi?id=196547
https://trac.webkit.org/changeset/243824

2:56 PM Changeset in webkit [243909] by Wenson Hsieh
  • 4 edits in trunk/Source/WebKit

Changing default website policies shouldn't change default website policies in subsequent navigations
https://bugs.webkit.org/show_bug.cgi?id=196562
<rdar://problem/49573377>

Reviewed by Tim Horton.

Currently, changing the default WKWebpagePreferences object when deciding navigation policy causes the set of
default policies to change in subsequent navigations. Among other things, this prevents clients from passing
a modified version of the default website policies into the decision handler without impacting future
navigations. To fix this, teach API::WebsitePolicies to make a copy of itself, and then use this to pass a copy
of the default website policies to the navigation delegate when deciding navigation policies.

Test: DoNotAllowChangingDefaultWebpagePreferencesInDelegateMethod

  • UIProcess/API/APIWebsitePolicies.cpp:

(API::WebsitePolicies::copy const):

Add a helper method to copy a set of website policies.

  • UIProcess/API/APIWebsitePolicies.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

2:47 PM Changeset in webkit [243908] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Fix rare crash under collectRelatedCoordinatedScrollingNodes()
https://bugs.webkit.org/show_bug.cgi?id=196610
rdar://problem/49595426

Reviewed by Zalan Bujtas.

hasCompositedScrollableOverflow() doesn't check whether a layer is composited (it has
to report the right status before layers have been created), so collectRelatedCoordinatedScrollingNodes()
needs to check whether there's backing.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::collectRelatedCoordinatedScrollingNodes):

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

Unreviewed, build fix for CLoop after r243886

  • interpreter/Interpreter.cpp:

(JSC::UnwindFunctor::copyCalleeSavesToEntryFrameCalleeSavesBuffer const):

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::Frame::calleeSaveRegistersForUnwinding):

  • interpreter/StackVisitor.h:
2:13 PM Changeset in webkit [243906] by sbarati@apple.com
  • 1 edit
    1 add in trunk/JSTests

createRegExpMatchesArray does not respect inferred types
https://bugs.webkit.org/show_bug.cgi?id=193287

Reviewed by Yusuke Suzuki.

This checks in the test case for 193287. This issue was discovered by
Samuel Groß of Google Project Zero.

  • stress/inferred-types-regex-matches-array.js: Added.
2:10 PM Changeset in webkit [243905] by Simon Fraser
  • 8 edits in trunk/Source/WebCore

Move "inProgrammaticScroll" down to ScrollableArea
https://bugs.webkit.org/show_bug.cgi?id=196614

Reviewed by Zalan Bujtas.

A future patch will need to update "inProgrammaticScroll" on RenderLayers, so push
inProgrammaticScroll() down to ScrollableArea.

ScrollableArea already has "isScrolledProgrammatically", which I rename to "scrollShouldClearLatchedState"
to reduce confusion. It might be possible to remove this in future with some refactoring.

Sadly we can no longer use SetForScope<> in FrameView after this change so add some manual save/restore code.

  • dom/Element.cpp:

(WebCore::Element::setScrollLeft):
(WebCore::Element::setScrollTop):

  • page/EventHandler.cpp:

(WebCore::EventHandler::completeWidgetWheelEvent):
(WebCore::EventHandler::handleWheelEvent):

  • page/FrameView.cpp:

(WebCore::FrameView::setFrameRect):
(WebCore::FrameView::topContentInsetDidChange):
(WebCore::FrameView::updateLayoutViewport):
(WebCore::FrameView::setScrollPosition):
(WebCore::FrameView::setWasScrolledByUser):

  • page/FrameView.h:
  • platform/ScrollView.h:

(WebCore::ScrollView::inProgrammaticScroll const): Deleted.

  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::ScrollableArea):

  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::inProgrammaticScroll const):
(WebCore::ScrollableArea::setInProgrammaticScroll):
(WebCore::ScrollableArea::scrollShouldClearLatchedState const):
(WebCore::ScrollableArea::setScrollShouldClearLatchedState):
(WebCore::ScrollableArea::isScrolledProgrammatically const): Deleted.
(WebCore::ScrollableArea::setScrolledProgrammatically): Deleted.

1:54 PM Changeset in webkit [243904] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

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

#if !ENABLE(C_LOOP) && NUMBER_OF_CALLEE_SAVES_REGISTERS > 0
does not work well (Requested by yusukesuzuki on #webkit).

Reverted changeset:

"Unreviewed, build fix for CLoop and Windows after r243886"
https://bugs.webkit.org/show_bug.cgi?id=196387
https://trac.webkit.org/changeset/243898

1:53 PM Changeset in webkit [243903] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebCore

Leak of UniqueIDBDatabase in network process running layout tests
https://bugs.webkit.org/show_bug.cgi?id=196565
<rdar://problem/49346139>

Reviewed by Geoffrey Garen.

UniqueIDBDatabase will null itself after it receives confirmation about connecton close from its clients, but it
is possible that the web process to network process connection closes before servers gets the
confirmDidCloseFromServer. Therefore, we should let UniqueIDBDatabase forget connection when it receives a
conenctionClosedFromClient.

No new test because this bug is caused by race between network receiving conenctionClosedFromClient and
receiving confirmDidCloseFromServer. This is testable by running some existing layout tests in a row with leak
option.

  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::connectionClosedFromClient):
(WebCore::IDBServer::UniqueIDBDatabase::confirmDidCloseFromServer):

1:51 PM Changeset in webkit [243902] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit

Unreviewed, fix -Wreturn-type warning

  • Shared/WebsiteData/WebsiteData.cpp:

(WebKit::WebsiteData::ownerProcess):

1:47 PM Changeset in webkit [243901] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix iOS build with recent SDKs.

  • platform/gamepad/cocoa/GameControllerGamepad.mm:

(WebCore::GameControllerGamepad::GameControllerGamepad):

1:44 PM Changeset in webkit [243900] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Fix sandbox violations
https://bugs.webkit.org/show_bug.cgi?id=196616
<rdar://problem/49498040>

Reviewed by Brent Fulgham.

Fix some observed sandbox violations in the WebContent process on macOS.

  • WebProcess/com.apple.WebProcess.sb.in:
1:44 PM Changeset in webkit [243899] by eric.carlson@apple.com
  • 20 edits
    2 adds in trunk

[MediaStream] Host should be able to mute screen capture and camera/microphone independently
https://bugs.webkit.org/show_bug.cgi?id=196555
<rdar://problem/47303865>

Reviewed by Youenn Fablet.

Source/WebCore:

Test: fast/mediastream/media-stream-page-muted.html

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::MediaStream): Call setCaptureTracksMuted to pass page muted
state to tracks.
(WebCore::MediaStream::startProducingData): Ditto.
(WebCore::MediaStream::setCaptureTracksMuted): New.

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

(WebCore::MediaStreamTrack::MediaStreamTrack): Call setMuted with page muted state.
(WebCore::MediaStreamTrack::setMuted): Set muted according to page state and source type.
(WebCore::MediaStreamTrack::pageMutedStateDidChange): Call setMuted.
(WebCore::MediaStreamTrack::mediaState const): Update for new page state.

  • Modules/mediastream/MediaStreamTrack.h:
  • page/MediaProducer.h: Split capture muted state into two: camera/microphone and screen.
  • page/Page.h:

(WebCore::Page::isMediaCaptureMuted const): Update for state changes.

  • platform/mediastream/MediaStreamPrivate.cpp:

(WebCore::MediaStreamPrivate::setCaptureTracksMuted): Deleted.
(WebCore::MediaStreamPrivate::hasCaptureVideoSource const): Deleted.

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

(WebCore::RealtimeMediaSource::setMuted): Log state.
(WebCore::RealtimeMediaSource::notifyMutedChange): Call notifyMutedObservers on the
next runloop so events aren't dispatched synchronously.

  • testing/Internals.cpp:

(WebCore::Internals::setPageMuted): Add new state.

Source/WebKit:

  • UIProcess/API/C/WKPagePrivate.h: Add kWKMediaScreenCaptureMuted.
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _setPageMuted:]):
(-[WKWebView _setMediaCaptureMuted:]): Deleted, it was unused.
(-[WKWebView _muteMediaCapture]): Deleted, it was unused.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::processUserMediaPermissionValidRequest): Fix
a log comment typo.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setMediaStreamCaptureMuted): Use the new flag.
(WebKit::WebPageProxy::activateMediaStreamCaptureInPage): Ditto.
(WebKit::WebPageProxy::setMuted): Ditto.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::isMediaStreamCaptureMuted const): Ditto.

LayoutTests:

  • fast/mediastream/media-stream-page-muted-expected.txt: Added.
  • fast/mediastream/media-stream-page-muted.html: Added.
  • fast/mediastream/media-stream-track-interrupted.html: Read page muted state before

interrupting capture track because the page state now changes immediately.

  • fast/mediastream/media-stream-track-muted.html: Ditto, for muting.
1:41 PM Changeset in webkit [243898] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed, build fix for CLoop and Windows after r243886
https://bugs.webkit.org/show_bug.cgi?id=196387

RegisterAtOffsetList does not exist if ENABLE(ASSEMBLER) is false.

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::Frame::calleeSaveRegistersForUnwinding):

  • interpreter/StackVisitor.h:
1:38 PM Changeset in webkit [243897] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-app] Status bubble should not display skipped buildbot steps
https://bugs.webkit.org/show_bug.cgi?id=196584

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
1:34 PM Changeset in webkit [243896] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-app] configure localhost as BUILDBOT_SERVER_HOST in testing mode
https://bugs.webkit.org/show_bug.cgi?id=196620

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/config.py:
1:34 PM Changeset in webkit [243895] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, update r243884 to use macros in Compiler.h instead.

  • platform/ios/LegacyTileGrid.mm:

(WebCore::LegacyTileGrid::dropDistantTiles):

1:31 PM Changeset in webkit [243894] by Chris Fleizach
  • 2 edits in trunk/Source/WebCore

AX: Crash under WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored()
https://bugs.webkit.org/show_bug.cgi?id=196600
<rdar://problem/49572996>

Reviewed by Joanmarie Diggs.

Audit AX code to not dereference renderer before checking if it's null.
Not clear how to reproduce at this time.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::webAreaIsPresentational):
(WebCore::AccessibilityRenderObject::layoutCount const):
(WebCore::AccessibilityRenderObject::widget const):

1:28 PM Changeset in webkit [243893] by Antti Koivisto
  • 19 edits
    8 adds in trunk

Compute accurate regions for touch-action
https://bugs.webkit.org/show_bug.cgi?id=196536
<rdar://problem/49516022>

Reviewed by Simon Fraser.

Source/WebCore:

Tests: pointerevents/ios/touch-action-region-basic.html

pointerevents/ios/touch-action-region-layers.html
pointerevents/ios/touch-action-region-pan-x-y.html

  • Use style system to compute effective touch-action without additional tree walks.
  • Compute touch-action region in a fake paint, at the same time with the event region.

This patch doesn't yet use the computed region for anything except test output.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/StyleResolver.cpp:

(WebCore::computeEffectiveTouchActions):
(WebCore::StyleResolver::adjustRenderStyle):

Update RenderStyle::effectiveTouchAction.

  • dom/Element.cpp:

(WebCore::Element::computedTouchActions const):

Just get it from the style.

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::setEventRegion):
(WebCore::GraphicsLayer::setTouchActionRegion):
(WebCore::GraphicsLayer::dumpProperties const):

  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::touchActionRegion const):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setTouchActionRegion):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • rendering/PaintInfo.h:
  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::paintObject):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::collectEventRegionForFragments):

  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateConfiguration):

Need to do this for the top compositing layer too.

(WebCore::RenderLayerBacking::updateEventRegion):

Compute touch-action region too.
As a basic optimization avoid doing any extra work if there are no elements with non-default touch-action property.

  • rendering/TouchActionRegion.cpp: Added.

(WebCore::toIndex):
(WebCore::toTouchAction):
(WebCore::toString):
(WebCore::TouchActionRegion::unite):
(WebCore::TouchActionRegion::actionsForPoint const):
(WebCore::TouchActionRegion::translate):
(WebCore::operator<<):

  • rendering/TouchActionRegion.h: Added.

Class for collecting and maintaining touch-action region.

(WebCore::TouchActionRegion::isEmpty const):
(WebCore::TouchActionRegion::operator== const):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::effectiveTouchActions const):
(WebCore::RenderStyle::setEffectiveTouchActions):

Implement as inherited property for efficiency (touch-action itself is non-inherited).

  • rendering/style/StyleRareInheritedData.cpp:

(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator== const):

  • rendering/style/StyleRareInheritedData.h:

LayoutTests:

  • pointerevents/ios/touch-action-region-basic-expected.txt: Added.
  • pointerevents/ios/touch-action-region-basic.html: Added.
  • pointerevents/ios/touch-action-region-layers-expected.txt: Added.
  • pointerevents/ios/touch-action-region-layers.html: Added.
  • pointerevents/ios/touch-action-region-pan-x-y-expected.txt: Added.
  • pointerevents/ios/touch-action-region-pan-x-y.html: Added.
1:24 PM Changeset in webkit [243892] by Alan Coon
  • 7 edits in tags/Safari-608.1.15/Source

Versioning.

1:20 PM Changeset in webkit [243891] by Alan Coon
  • 1 copy in tags/Safari-608.1.15

Tag Safari-608.1.15.

1:08 PM Changeset in webkit [243890] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix linking error because the build of RTCIceTransport.cpp is handled in Xcode project side accidentally
https://bugs.webkit.org/show_bug.cgi?id=196475

We did not have RTCIceTransport.cpp in Sources.txt.

  • WebCore.xcodeproj/project.pbxproj:
1:08 PM Changeset in webkit [243889] by Alan Coon
  • 7 edits in trunk/Source

Versioning.

12:13 PM Changeset in webkit [243888] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[macOS][iOS] Add filter to syscall sandbox rule
https://bugs.webkit.org/show_bug.cgi?id=196613
<rdar://problem/49531420>

Reviewed by Brent Fulgham.

This will restrict the existing sandbox rule for the syscall.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
12:07 PM Changeset in webkit [243887] by ysuzuki@apple.com
  • 355 edits
    3 copies
    5 adds in trunk/Source

[WebCore] Put most of derived classes of ScriptWrappable into IsoHeap
https://bugs.webkit.org/show_bug.cgi?id=196475

Reviewed by Saam Barati.

Source/bmalloc:

Add MAKE_BISO_MALLOCED_IMPL_TEMPLATE, which can be used for explicit specialization for template classes.

  • bmalloc/IsoHeap.h:
  • bmalloc/IsoHeapInlines.h:

Source/WebCore:

This patch puts most of derived classes of ScriptWrappable into IsoHeap. We do not include derived classes of Event simply
because Internal repository code also inherits it. After watching the result of this patch, we will try Event and its derived
classes into IsoHeap too.

This patch makes the following things IsoHeap-allocated. These classes are listed by using lldb python script.

  1. DOM collections (HTMLCollection etc.)
  2. WebAudio nodes
  3. IDB classes
  4. FileSystem API classes
  5. Canvas contexts
  6. WebRTC classses
  7. XMLHttpRequest related classes
  8. WebSocket related classes
  9. Worker and Worklet related classes
  10. Other misc classes
  • Modules/applepay/ApplePaySession.cpp:
  • Modules/applepay/ApplePaySession.h:
  • Modules/encryptedmedia/MediaKeySession.cpp:
  • Modules/encryptedmedia/MediaKeySession.h:
  • Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp:
  • Modules/encryptedmedia/legacy/WebKitMediaKeySession.h:
  • Modules/entriesapi/DOMFileSystem.cpp:
  • Modules/entriesapi/DOMFileSystem.h:

(WebCore::DOMFileSystem::createEntryForFile): Deleted.
(WebCore::DOMFileSystem::name const): Deleted.

  • Modules/entriesapi/FileSystemDirectoryEntry.h:
  • Modules/entriesapi/FileSystemDirectoryReader.cpp:
  • Modules/entriesapi/FileSystemDirectoryReader.h:
  • Modules/entriesapi/FileSystemEntry.cpp:
  • Modules/entriesapi/FileSystemEntry.h:
  • Modules/entriesapi/FileSystemFileEntry.h:
  • Modules/geolocation/Geolocation.cpp:
  • Modules/geolocation/Geolocation.h:

(WebCore::Geolocation::document const): Deleted.
(WebCore::Geolocation::frame const): Deleted.
(WebCore::Geolocation::resetIsAllowed): Deleted.
(WebCore::Geolocation::isAllowed const): Deleted.
(WebCore::Geolocation::isDenied const): Deleted.
(WebCore::Geolocation::hasListeners const): Deleted.

  • Modules/indexeddb/IDBCursor.cpp:
  • Modules/indexeddb/IDBCursor.h:
  • Modules/indexeddb/IDBCursorWithValue.cpp:
  • Modules/indexeddb/IDBCursorWithValue.h:
  • Modules/indexeddb/IDBDatabase.cpp:
  • Modules/indexeddb/IDBDatabase.h:

(WebCore::IDBDatabase::info const): Deleted.
(WebCore::IDBDatabase::databaseConnectionIdentifier const): Deleted.
(WebCore::IDBDatabase::connectionProxy): Deleted.
(WebCore::IDBDatabase::isClosingOrClosed const): Deleted.

  • Modules/indexeddb/IDBKeyRange.cpp:
  • Modules/indexeddb/IDBKeyRange.h:

(WebCore::IDBKeyRange::lower const): Deleted.
(WebCore::IDBKeyRange::upper const): Deleted.
(WebCore::IDBKeyRange::lowerOpen const): Deleted.
(WebCore::IDBKeyRange::upperOpen const): Deleted.

  • Modules/indexeddb/IDBOpenDBRequest.cpp:
  • Modules/indexeddb/IDBOpenDBRequest.h:
  • Modules/indexeddb/IDBRequest.cpp:
  • Modules/indexeddb/IDBRequest.h:
  • Modules/indexeddb/IDBTransaction.cpp:
  • Modules/indexeddb/IDBTransaction.h:

(WebCore::IDBTransaction::mode const): Deleted.
(WebCore::IDBTransaction::info const): Deleted.
(WebCore::IDBTransaction::database): Deleted.
(WebCore::IDBTransaction::database const): Deleted.
(WebCore::IDBTransaction::originalDatabaseInfo const): Deleted.
(WebCore::IDBTransaction::isVersionChange const): Deleted.
(WebCore::IDBTransaction::isReadOnly const): Deleted.
(WebCore::IDBTransaction::isFinished const): Deleted.

  • Modules/mediarecorder/MediaRecorder.cpp:
  • Modules/mediarecorder/MediaRecorder.h:
  • Modules/mediasession/MediaRemoteControls.cpp:
  • Modules/mediasession/MediaRemoteControls.h:

(WebCore::MediaRemoteControls::create): Deleted.
(WebCore::MediaRemoteControls::previousTrackEnabled const): Deleted.
(WebCore::MediaRemoteControls::nextTrackEnabled const): Deleted.

  • Modules/mediasource/MediaSource.cpp:
  • Modules/mediasource/MediaSource.h:
  • Modules/mediasource/SourceBuffer.cpp:
  • Modules/mediasource/SourceBuffer.h:
  • Modules/mediasource/SourceBufferList.cpp:
  • Modules/mediasource/SourceBufferList.h:
  • Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
  • Modules/mediastream/CanvasCaptureMediaStreamTrack.h:
  • Modules/mediastream/MediaDeviceInfo.cpp:
  • Modules/mediastream/MediaDeviceInfo.h:

(WebCore::MediaDeviceInfo::label const): Deleted.
(WebCore::MediaDeviceInfo::deviceId const): Deleted.
(WebCore::MediaDeviceInfo::groupId const): Deleted.
(WebCore::MediaDeviceInfo::kind const): Deleted.

  • Modules/mediastream/MediaDevices.cpp:
  • Modules/mediastream/MediaDevices.h:
  • Modules/mediastream/MediaStream.cpp:
  • Modules/mediastream/MediaStream.h:
  • Modules/mediastream/MediaStreamTrack.cpp:
  • Modules/mediastream/MediaStreamTrack.h:
  • Modules/mediastream/RTCDTMFSender.cpp:
  • Modules/mediastream/RTCDTMFSender.h:
  • Modules/mediastream/RTCDataChannel.cpp:
  • Modules/mediastream/RTCDataChannel.h:
  • Modules/mediastream/RTCIceCandidate.cpp:
  • Modules/mediastream/RTCIceCandidate.h:

(WebCore::RTCIceCandidate::candidate const): Deleted.
(WebCore::RTCIceCandidate::sdpMid const): Deleted.
(WebCore::RTCIceCandidate::sdpMLineIndex const): Deleted.
(WebCore::RTCIceCandidate::setCandidate): Deleted.

  • Modules/mediastream/RTCIceTransport.cpp:
  • Modules/mediastream/RTCIceTransport.h:

(WebCore::RTCIceTransport::create): Deleted.
(WebCore::RTCIceTransport::state const): Deleted.
(WebCore::RTCIceTransport::setState): Deleted.
(WebCore::RTCIceTransport::gatheringState const): Deleted.
(WebCore::RTCIceTransport::setGatheringState): Deleted.
(WebCore::RTCIceTransport::RTCIceTransport): Deleted.

  • Modules/mediastream/RTCPeerConnection.cpp:
  • Modules/mediastream/RTCPeerConnection.h:
  • Modules/mediastream/RTCRtpReceiver.cpp:
  • Modules/mediastream/RTCRtpReceiver.h:

(WebCore::RTCRtpReceiver::create): Deleted.
(WebCore::RTCRtpReceiver::setBackend): Deleted.
(WebCore::RTCRtpReceiver::getParameters): Deleted.
(WebCore::RTCRtpReceiver::getContributingSources const): Deleted.
(WebCore::RTCRtpReceiver::getSynchronizationSources const): Deleted.
(WebCore::RTCRtpReceiver::track): Deleted.
(WebCore::RTCRtpReceiver::backend): Deleted.

  • Modules/mediastream/RTCRtpSender.cpp:
  • Modules/mediastream/RTCRtpSender.h:

(WebCore::RTCRtpSender::track): Deleted.
(WebCore::RTCRtpSender::trackId const): Deleted.
(WebCore::RTCRtpSender::trackKind const): Deleted.
(WebCore::RTCRtpSender::mediaStreamIds const): Deleted.
(WebCore::RTCRtpSender::setMediaStreamIds): Deleted.
(WebCore::RTCRtpSender::isStopped const): Deleted.
(WebCore::RTCRtpSender::backend): Deleted.

  • Modules/mediastream/RTCRtpTransceiver.cpp:
  • Modules/mediastream/RTCRtpTransceiver.h:

(WebCore::RTCRtpTransceiver::create): Deleted.
(WebCore::RTCRtpTransceiver::sender): Deleted.
(WebCore::RTCRtpTransceiver::receiver): Deleted.
(WebCore::RTCRtpTransceiver::iceTransport): Deleted.
(WebCore::RTCRtpTransceiver::backend): Deleted.

  • Modules/mediastream/RTCSessionDescription.cpp:
  • Modules/mediastream/RTCSessionDescription.h:

(WebCore::RTCSessionDescription::type const): Deleted.
(WebCore::RTCSessionDescription::sdp const): Deleted.
(WebCore::RTCSessionDescription::setSdp): Deleted.

  • Modules/notifications/Notification.cpp:
  • Modules/notifications/Notification.h:
  • Modules/paymentrequest/PaymentRequest.cpp:
  • Modules/paymentrequest/PaymentRequest.h:
  • Modules/paymentrequest/PaymentResponse.cpp:
  • Modules/paymentrequest/PaymentResponse.h:
  • Modules/speech/SpeechSynthesisUtterance.cpp:
  • Modules/speech/SpeechSynthesisUtterance.h:
  • Modules/webaudio/AnalyserNode.cpp:
  • Modules/webaudio/AnalyserNode.h:
  • Modules/webaudio/AudioBasicInspectorNode.cpp:
  • Modules/webaudio/AudioBasicInspectorNode.h:
  • Modules/webaudio/AudioBasicProcessorNode.cpp:
  • Modules/webaudio/AudioBasicProcessorNode.h:
  • Modules/webaudio/AudioBufferSourceNode.cpp:
  • Modules/webaudio/AudioBufferSourceNode.h:
  • Modules/webaudio/AudioContext.cpp:
  • Modules/webaudio/AudioContext.h:
  • Modules/webaudio/AudioDestinationNode.cpp:
  • Modules/webaudio/AudioDestinationNode.h:
  • Modules/webaudio/AudioNode.cpp:
  • Modules/webaudio/AudioNode.h:
  • Modules/webaudio/AudioScheduledSourceNode.cpp:
  • Modules/webaudio/AudioScheduledSourceNode.h:
  • Modules/webaudio/BiquadFilterNode.cpp:
  • Modules/webaudio/BiquadFilterNode.h:
  • Modules/webaudio/ChannelMergerNode.cpp:
  • Modules/webaudio/ChannelMergerNode.h:
  • Modules/webaudio/ChannelSplitterNode.cpp:
  • Modules/webaudio/ChannelSplitterNode.h:
  • Modules/webaudio/ConvolverNode.cpp:
  • Modules/webaudio/ConvolverNode.h:
  • Modules/webaudio/DefaultAudioDestinationNode.cpp:
  • Modules/webaudio/DefaultAudioDestinationNode.h:
  • Modules/webaudio/DelayNode.cpp:
  • Modules/webaudio/DelayNode.h:
  • Modules/webaudio/DynamicsCompressorNode.cpp:
  • Modules/webaudio/DynamicsCompressorNode.h:
  • Modules/webaudio/GainNode.cpp:
  • Modules/webaudio/GainNode.h:
  • Modules/webaudio/MediaElementAudioSourceNode.cpp:
  • Modules/webaudio/MediaElementAudioSourceNode.h:
  • Modules/webaudio/MediaStreamAudioDestinationNode.cpp:
  • Modules/webaudio/MediaStreamAudioDestinationNode.h:
  • Modules/webaudio/MediaStreamAudioSourceNode.cpp:
  • Modules/webaudio/MediaStreamAudioSourceNode.h:
  • Modules/webaudio/OfflineAudioContext.cpp:
  • Modules/webaudio/OfflineAudioContext.h:
  • Modules/webaudio/OfflineAudioDestinationNode.cpp:
  • Modules/webaudio/OfflineAudioDestinationNode.h:
  • Modules/webaudio/OscillatorNode.cpp:
  • Modules/webaudio/OscillatorNode.h:
  • Modules/webaudio/PannerNode.cpp:
  • Modules/webaudio/PannerNode.h:
  • Modules/webaudio/ScriptProcessorNode.cpp:
  • Modules/webaudio/ScriptProcessorNode.h:
  • Modules/webaudio/WaveShaperNode.cpp:
  • Modules/webaudio/WaveShaperNode.h:
  • Modules/webgpu/GPUCanvasContext.cpp:
  • Modules/webgpu/GPUCanvasContext.h:
  • Modules/websockets/WebSocket.cpp:
  • Modules/websockets/WebSocket.h:
  • Modules/webvr/VRDisplay.cpp:
  • Modules/webvr/VRDisplay.h:

(WebCore::VRDisplay::isPresenting const): Deleted.
(WebCore::VRDisplay::displayName const): Deleted.
(WebCore::VRDisplay::displayId const): Deleted.
(WebCore::VRDisplay::depthNear const): Deleted.
(WebCore::VRDisplay::setDepthNear): Deleted.
(WebCore::VRDisplay::depthFar const): Deleted.
(WebCore::VRDisplay::setDepthFar): Deleted.
(WebCore::VRDisplay::document): Deleted.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • animation/CSSAnimation.cpp:
  • animation/CSSAnimation.h:
  • animation/CSSTransition.cpp:
  • animation/CSSTransition.h:
  • animation/DeclarativeAnimation.cpp:
  • animation/DeclarativeAnimation.h:
  • animation/WebAnimation.cpp:
  • animation/WebAnimation.h:
  • bindings/js/ScriptWrappable.h:
  • css/CSSComputedStyleDeclaration.cpp:
  • css/CSSComputedStyleDeclaration.h:
  • css/CSSStyleDeclaration.cpp:

(): Deleted.

  • css/CSSStyleDeclaration.h:
  • css/DOMMatrix.h:
  • css/DOMMatrixReadOnly.cpp:
  • css/DOMMatrixReadOnly.h:
  • css/FontFaceSet.cpp:
  • css/FontFaceSet.h:
  • css/PropertySetCSSStyleDeclaration.cpp:
  • css/PropertySetCSSStyleDeclaration.h:
  • css/WebKitCSSMatrix.cpp:
  • css/WebKitCSSMatrix.h:
  • css/typedom/TypedOMCSSImageValue.cpp: Added.
  • css/typedom/TypedOMCSSImageValue.h:
  • css/typedom/TypedOMCSSNumericValue.cpp: Added.
  • css/typedom/TypedOMCSSNumericValue.h:
  • css/typedom/TypedOMCSSStyleValue.cpp: Added.
  • css/typedom/TypedOMCSSStyleValue.h:
  • css/typedom/TypedOMCSSUnitValue.cpp: Added.
  • css/typedom/TypedOMCSSUnitValue.h:
  • css/typedom/TypedOMCSSUnparsedValue.cpp: Added.
  • css/typedom/TypedOMCSSUnparsedValue.h:
  • dom/AbortController.cpp:
  • dom/AbortController.h:
  • dom/AbortSignal.cpp:
  • dom/AbortSignal.h:
  • dom/AllDescendantsCollection.cpp: Copied from Source/WebCore/xml/XMLHttpRequestEventTarget.h.
  • dom/AllDescendantsCollection.h:
  • dom/ChildNodeList.cpp:
  • dom/ChildNodeList.h:
  • dom/ClassCollection.cpp:
  • dom/ClassCollection.h:
  • dom/DOMImplementation.cpp:
  • dom/DOMImplementation.h:

(WebCore::DOMImplementation::ref): Deleted.
(WebCore::DOMImplementation::deref): Deleted.
(WebCore::DOMImplementation::document): Deleted.
(WebCore::DOMImplementation::hasFeature): Deleted.

  • dom/DOMPoint.h:
  • dom/DOMPointReadOnly.cpp:
  • dom/DOMPointReadOnly.h:
  • dom/DOMQuad.cpp:
  • dom/DOMQuad.h:
  • dom/DOMRect.h:
  • dom/DOMRectReadOnly.cpp: Copied from Source/WebCore/dom/DOMPointReadOnly.cpp.
  • dom/DOMRectReadOnly.h:
  • dom/DataTransferItemList.cpp:
  • dom/DataTransferItemList.h:

(WebCore::DataTransferItemList::ref): Deleted.
(WebCore::DataTransferItemList::deref): Deleted.
(WebCore::DataTransferItemList::dataTransfer): Deleted.
(WebCore::DataTransferItemList::hasItems const): Deleted.
(WebCore::DataTransferItemList::items const): Deleted.

  • dom/DatasetDOMStringMap.cpp:
  • dom/DatasetDOMStringMap.h:
  • dom/DocumentParser.h:
  • dom/EventTarget.cpp:
  • dom/EventTarget.h:
  • dom/LiveNodeList.cpp:
  • dom/LiveNodeList.h:
  • dom/MessageChannel.cpp:
  • dom/MessagePort.cpp:
  • dom/MessagePort.h:
  • dom/NameNodeList.cpp:
  • dom/NameNodeList.h:
  • dom/NamedNodeMap.cpp:
  • dom/NamedNodeMap.h:

(WebCore::NamedNodeMap::NamedNodeMap): Deleted.
(WebCore::NamedNodeMap::element): Deleted.

  • dom/NodeIterator.cpp:
  • dom/NodeIterator.h:

(WebCore::NodeIterator::detach): Deleted.
(WebCore::NodeIterator::referenceNode const): Deleted.
(WebCore::NodeIterator::pointerBeforeReferenceNode const): Deleted.

  • dom/NodeList.cpp: Copied from Source/WebCore/xml/XMLHttpRequestEventTarget.h.
  • dom/NodeList.h:
  • dom/NodeRareData.cpp:
  • dom/ScriptExecutionContext.cpp:
  • dom/SimulatedClick.cpp:
  • dom/StaticNodeList.cpp:
  • dom/StaticNodeList.h:
  • dom/TagCollection.cpp:
  • dom/TagCollection.h:
  • dom/TreeWalker.cpp:
  • dom/TreeWalker.h:

(WebCore::TreeWalker::create): Deleted.
(WebCore::TreeWalker::currentNode): Deleted.
(WebCore::TreeWalker::currentNode const): Deleted.

  • fileapi/Blob.cpp:
  • fileapi/Blob.h:
  • fileapi/File.cpp:
  • fileapi/File.h:
  • fileapi/FileList.cpp:
  • fileapi/FileList.h:

(WebCore::FileList::create): Deleted.
(WebCore::FileList::length const): Deleted.
(WebCore::FileList::isEmpty const): Deleted.
(WebCore::FileList::files const): Deleted.
(WebCore::FileList::file const): Deleted.
(WebCore::FileList::FileList): Deleted.
(WebCore::FileList::append): Deleted.
(WebCore::FileList::clear): Deleted.

  • fileapi/FileReader.cpp:
  • fileapi/FileReader.h:
  • html/CachedHTMLCollection.h:
  • html/GenericCachedHTMLCollection.cpp:
  • html/GenericCachedHTMLCollection.h:
  • html/HTMLAllCollection.cpp:
  • html/HTMLAllCollection.h:
  • html/HTMLCollection.cpp:
  • html/HTMLCollection.h:
  • html/HTMLFormControlsCollection.cpp:
  • html/HTMLFormControlsCollection.h:
  • html/HTMLNameCollection.cpp:
  • html/HTMLNameCollection.h:
  • html/HTMLOptionsCollection.cpp:
  • html/HTMLOptionsCollection.h:
  • html/HTMLTableRowsCollection.cpp:
  • html/HTMLTableRowsCollection.h:
  • html/ImageBitmap.cpp:
  • html/ImageBitmap.h:

(WebCore::ImageBitmap::isDetached const): Deleted.
(WebCore::ImageBitmap::buffer): Deleted.
(WebCore::ImageBitmap::originClean const): Deleted.

  • html/LabelsNodeList.cpp:
  • html/LabelsNodeList.h:
  • html/MediaController.cpp:
  • html/MediaController.h:
  • html/OffscreenCanvas.cpp:
  • html/OffscreenCanvas.h:
  • html/RadioNodeList.cpp:
  • html/RadioNodeList.h:
  • html/canvas/CanvasRenderingContext.cpp:
  • html/canvas/CanvasRenderingContext.h:
  • html/canvas/CanvasRenderingContext2D.cpp:
  • html/canvas/CanvasRenderingContext2D.h:
  • html/canvas/CanvasRenderingContext2DBase.cpp:
  • html/canvas/CanvasRenderingContext2DBase.h:
  • html/canvas/GPUBasedCanvasRenderingContext.h:
  • html/canvas/ImageBitmapRenderingContext.cpp:
  • html/canvas/ImageBitmapRenderingContext.h:
  • html/canvas/OffscreenCanvasRenderingContext2D.cpp:
  • html/canvas/OffscreenCanvasRenderingContext2D.h:
  • html/canvas/PaintRenderingContext2D.cpp:
  • html/canvas/PaintRenderingContext2D.h:
  • html/canvas/PlaceholderRenderingContext.cpp:
  • html/canvas/PlaceholderRenderingContext.h:
  • html/canvas/WebGL2RenderingContext.cpp:
  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGLRenderingContext.cpp:
  • html/canvas/WebGLRenderingContext.h:
  • html/canvas/WebGLRenderingContextBase.cpp:
  • html/canvas/WebGLRenderingContextBase.h:
  • html/track/AudioTrackList.h:
  • html/track/DataCue.cpp:
  • html/track/DataCue.h:
  • html/track/InbandDataTextTrack.cpp:
  • html/track/InbandDataTextTrack.h:
  • html/track/InbandGenericTextTrack.cpp:
  • html/track/InbandGenericTextTrack.h:
  • html/track/InbandTextTrack.cpp:
  • html/track/InbandTextTrack.h:
  • html/track/InbandWebVTTTextTrack.cpp:
  • html/track/InbandWebVTTTextTrack.h:
  • html/track/LoadableTextTrack.cpp:
  • html/track/LoadableTextTrack.h:
  • html/track/TextTrack.cpp:
  • html/track/TextTrack.h:
  • html/track/TextTrackCue.cpp:
  • html/track/TextTrackCue.h:
  • html/track/TextTrackCueGeneric.cpp:
  • html/track/TextTrackCueGeneric.h:
  • html/track/TextTrackList.cpp:
  • html/track/TextTrackList.h:
  • html/track/TrackListBase.cpp:
  • html/track/TrackListBase.h:
  • html/track/VTTCue.cpp:
  • html/track/VTTCue.h:
  • html/track/VideoTrackList.h:
  • loader/appcache/DOMApplicationCache.cpp:
  • loader/appcache/DOMApplicationCache.h:
  • page/AbstractDOMWindow.cpp:
  • page/AbstractDOMWindow.h:
  • page/BarProp.cpp:
  • page/BarProp.h:

(WebCore::BarProp::create): Deleted.

  • page/DOMWindow.cpp:
  • page/DOMWindow.h:
  • page/EventSource.cpp:
  • page/EventSource.h:
  • page/History.cpp:
  • page/History.h:
  • page/Location.cpp:
  • page/Location.h:

(WebCore::Location::create): Deleted.
(WebCore::Location::toString const): Deleted.

  • page/Navigator.cpp:
  • page/Navigator.h:
  • page/Performance.cpp:
  • page/Performance.h:
  • page/RemoteDOMWindow.cpp:
  • page/RemoteDOMWindow.h:
  • page/Screen.cpp:
  • page/Screen.h:
  • page/VisualViewport.cpp:
  • page/VisualViewport.h:
  • plugins/DOMMimeTypeArray.cpp:
  • plugins/DOMMimeTypeArray.h:

(WebCore::DOMMimeTypeArray::create): Deleted.

  • plugins/DOMPlugin.cpp:
  • plugins/DOMPlugin.h:

(WebCore::DOMPlugin::create): Deleted.

  • plugins/DOMPluginArray.cpp:
  • plugins/DOMPluginArray.h:

(WebCore::DOMPluginArray::create): Deleted.

  • storage/Storage.cpp:
  • storage/Storage.h:

(WebCore::Storage::area const): Deleted.

  • workers/AbstractWorker.cpp:
  • workers/AbstractWorker.h:
  • workers/DedicatedWorkerGlobalScope.cpp:
  • workers/DedicatedWorkerGlobalScope.h:
  • workers/Worker.cpp:
  • workers/Worker.h:
  • workers/WorkerGlobalScope.cpp:
  • workers/WorkerGlobalScope.h:
  • workers/service/ServiceWorker.cpp:
  • workers/service/ServiceWorker.h:
  • workers/service/ServiceWorkerContainer.cpp:
  • workers/service/ServiceWorkerContainer.h:
  • workers/service/ServiceWorkerGlobalScope.cpp:
  • workers/service/ServiceWorkerGlobalScope.h:
  • workers/service/ServiceWorkerRegistration.cpp:
  • workers/service/ServiceWorkerRegistration.h:
  • worklets/PaintWorkletGlobalScope.cpp:
  • worklets/PaintWorkletGlobalScope.h:
  • worklets/Worklet.cpp:
  • worklets/Worklet.h:
  • worklets/WorkletGlobalScope.cpp:
  • worklets/WorkletGlobalScope.h:
  • xml/XMLHttpRequest.cpp:
  • xml/XMLHttpRequest.h:
  • xml/XMLHttpRequestEventTarget.h:
  • xml/XMLHttpRequestUpload.cpp:
  • xml/XMLHttpRequestUpload.h:
  • xml/XPathParser.cpp:

Source/WTF:

  • wtf/ForbidHeapAllocation.h:
  • wtf/IsoMalloc.h:
  • wtf/IsoMallocInlines.h:
11:54 AM Changeset in webkit [243886] by sbarati@apple.com
  • 32 edits
    4 copies in trunk

Teach Call ICs how to call Wasm
https://bugs.webkit.org/show_bug.cgi?id=196387

Reviewed by Filip Pizlo.

JSTests:

  • wasm/function-tests/stack-trace.js:

Source/JavaScriptCore:

This patch teaches JS to call Wasm without going through the native thunk.
Currently, we emit a JIT "JS" callee stub which marshals arguments from
JS to Wasm. Like the native version of this, this thunk is responsible
for saving and restoring the VM's current Wasm context. Instead of emitting
an exception handler, we also teach the unwinder how to read the previous
wasm context to restore it as it unwindws past this frame.

This patch is straight forward, and leaves some areas for perf improvement:

  • We can teach the DFG/FTL to directly use the Wasm calling convention when it knows it's calling a single Wasm function. This way we don't shuffle registers to the stack and then back into registers.
  • We bail out to the slow path for mismatched arity. I opened a bug to fix optimize arity check failures: https://bugs.webkit.org/show_bug.cgi?id=196564
  • We bail out to the slow path Double JSValues flowing into i32 arguments. We should teach this thunk how to do that conversion directly.

This patch also refactors the code to explicitly have a single pinned size register.
We used pretend in some places that we could have more than one pinned size register.
However, there was other code that just asserted the size was one. This patch just rips
out this code since we never moved to having more than one pinned size register. Doing
this refactoring cleans up the various places where we set up the size register.

This patch is a 50-60% progression on JetStream 2's richards-wasm.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • assembler/MacroAssemblerCodeRef.h:

(JSC::MacroAssemblerCodeRef::operator=):
(JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):

  • interpreter/Interpreter.cpp:

(JSC::UnwindFunctor::operator() const):
(JSC::UnwindFunctor::copyCalleeSavesToEntryFrameCalleeSavesBuffer const):

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::Frame::calleeSaveRegistersForUnwinding):
(JSC::StackVisitor::Frame::calleeSaveRegisters): Deleted.

  • interpreter/StackVisitor.h:
  • jit/JITOperations.cpp:
  • jit/RegisterSet.cpp:

(JSC::RegisterSet::runtimeTagRegisters):
(JSC::RegisterSet::specialRegisters):
(JSC::RegisterSet::runtimeRegisters): Deleted.

  • jit/RegisterSet.h:
  • jit/Repatch.cpp:

(JSC::linkPolymorphicCall):

  • runtime/JSFunction.cpp:

(JSC::getCalculatedDisplayName):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::jsToWasmICCalleeStructure const):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::AirIRGenerator):
(JSC::Wasm::AirIRGenerator::restoreWebAssemblyGlobalState):
(JSC::Wasm::AirIRGenerator::addCallIndirect):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::B3IRGenerator::restoreWebAssemblyGlobalState):
(JSC::Wasm::B3IRGenerator::addCallIndirect):

  • wasm/WasmBinding.cpp:

(JSC::Wasm::wasmToWasm):

  • wasm/WasmContext.h:

(JSC::Wasm::Context::pointerToInstance):

  • wasm/WasmContextInlines.h:

(JSC::Wasm::Context::store):

  • wasm/WasmMemoryInformation.cpp:

(JSC::Wasm::getPinnedRegisters):
(JSC::Wasm::PinnedRegisterInfo::get):
(JSC::Wasm::PinnedRegisterInfo::PinnedRegisterInfo):

  • wasm/WasmMemoryInformation.h:

(JSC::Wasm::PinnedRegisterInfo::toSave const):

  • wasm/WasmOMGPlan.cpp:

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

  • wasm/js/JSToWasm.cpp:

(JSC::Wasm::createJSToWasmWrapper):

  • wasm/js/JSToWasmICCallee.cpp: Added.

(JSC::JSToWasmICCallee::create):
(JSC::JSToWasmICCallee::createStructure):
(JSC::JSToWasmICCallee::visitChildren):

  • wasm/js/JSToWasmICCallee.h: Added.

(JSC::JSToWasmICCallee::function):
(JSC::JSToWasmICCallee::JSToWasmICCallee):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::useTagRegisters const):
(JSC::WebAssemblyFunction::calleeSaves const):
(JSC::WebAssemblyFunction::usedCalleeSaveRegisters const):
(JSC::WebAssemblyFunction::previousInstanceOffset const):
(JSC::WebAssemblyFunction::previousInstance):
(JSC::WebAssemblyFunction::jsCallEntrypointSlow):
(JSC::WebAssemblyFunction::visitChildren):
(JSC::WebAssemblyFunction::destroy):

  • wasm/js/WebAssemblyFunction.h:
  • wasm/js/WebAssemblyFunctionHeapCellType.cpp: Added.

(JSC::WebAssemblyFunctionDestroyFunc::operator() const):
(JSC::WebAssemblyFunctionHeapCellType::WebAssemblyFunctionHeapCellType):
(JSC::WebAssemblyFunctionHeapCellType::~WebAssemblyFunctionHeapCellType):
(JSC::WebAssemblyFunctionHeapCellType::finishSweep):
(JSC::WebAssemblyFunctionHeapCellType::destroy):

  • wasm/js/WebAssemblyFunctionHeapCellType.h: Added.
  • wasm/js/WebAssemblyPrototype.h:
11:53 AM Changeset in webkit [243885] by ysuzuki@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] Pass CodeOrigin to FuzzerAgent
https://bugs.webkit.org/show_bug.cgi?id=196590

Reviewed by Saam Barati.

Pass CodeOrigin instead of bytecodeIndex. CodeOrigin includes richer information (InlineCallFrame*).
We also mask prediction with SpecBytecodeTop in DFGByteCodeParser. The fuzzer can produce any SpeculatedTypes,
but DFGByteCodeParser should only see predictions that can be actually produced from the bytecode execution.

  • dfg/DFGByteCodeParser.cpp:

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

  • runtime/FuzzerAgent.cpp:

(JSC::FuzzerAgent::getPrediction):

  • runtime/FuzzerAgent.h:
  • runtime/RandomizingFuzzerAgent.cpp:

(JSC::RandomizingFuzzerAgent::getPrediction):

  • runtime/RandomizingFuzzerAgent.h:
11:52 AM EarlyWarningSystem edited by aakash_jain@apple.com
(diff)
11:45 AM Changeset in webkit [243884] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix iOS build with recent SDKs.

std::ptr_fun() is deprecated.

  • platform/ios/LegacyTileGrid.mm:

(WebCore::LegacyTileGrid::dropDistantTiles):

11:40 AM EarlyWarningSystem created by aakash_jain@apple.com
11:00 AM WebKitGTK/2.24.x edited by Michael Catanzaro
Reviewed safari-607-branch commits through r243778 (diff)
10:55 AM Changeset in webkit [243883] by Manuel Rego Casasnovas
  • 2 edits in trunk/LayoutTests

[css-grid] Scroll reset position when updating inner html on content
https://bugs.webkit.org/show_bug.cgi?id=191506

Unreviewed gardening.

The problem described in this bug was fixed in r243687 (webkit.org/b/191506).
This test was still marked as Failure but it has been passing since then.

as it's passing now.

10:50 AM Changeset in webkit [243882] by Kocsen Chung
  • 3 edits in branches/safari-607-branch/Tools

Cherry-pick r243842. rdar://problem/34841155

run-webkit-tests: Upload test results (new results database)
https://bugs.webkit.org/show_bug.cgi?id=196577
<rdar://problem/34841155>

Reviewed by Lucas Forschler.

  • Scripts/webkitpy/layout_tests/controllers/manager.py: (Manager.run): Upload results after each device shard, since the configuration will be different for each device. (Manager._results_to_upload_json_trie): Convert a TestRunResults object to a trie to be uploaded to a results database.
  • Scripts/webkitpy/layout_tests/run_webkit_tests.py: (parse_args): Add new 'Upload Options' and prepare 'Results JSON Options' for deprecation.

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

10:49 AM Changeset in webkit [243881] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

scrollingcoordinator/ios/ui-scroll-fixed.html is a flakky failure
https://bugs.webkit.org/show_bug.cgi?id=196612

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations: Changing expectations for flaky image failure
10:44 AM Changeset in webkit [243880] by youenn@apple.com
  • 2 edits in trunk/Source/WebKit

Service Worker Process does not have the right domain name
https://bugs.webkit.org/show_bug.cgi?id=196585

Reviewed by Chris Dumez.

  • Shared/EntryPointUtilities/Cocoa/XPCService/XPCServiceEntryPoint.mm:

(WebKit::XPCServiceInitializerDelegate::getExtraInitializationData):
Updated extraInitializationData to go from "security-origin" to "registrable-domain".

10:39 AM Changeset in webkit [243879] by pvollan@apple.com
  • 1 edit
    1 add in trunk/Tools

[Win] DumpRenderTreeWatchDog.py is not checked into source
https://bugs.webkit.org/show_bug.cgi?id=196567
<rdar://problem/49525901>

Reviewed by Lucas Forschler.

This script is used on Win EWS bots to terminate hanging DRT processes.

  • EWSTools/dumprendertreewatchdog.py: Added.
10:39 AM Changeset in webkit [243878] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[macOS WK1] Layout Test webanimations/accelerated-transition-interrupted-on-composited-element.html is a flaky image failure
https://bugs.webkit.org/show_bug.cgi?id=189678
<rdar://problem/44621674>

Patch by Antoine Quint <Antoine Quint> on 2019-04-04
Reviewed by Dean Jackson.

We make the test sturdier by waiting for two rAFs instead of just one to wait until animations have been updated (one rAF)
and accelerated animations have been committed (two rAFs).

We also use the "transitioncancel" event to determine the transition has been interrupted rather than using a rAF callback.

  • webanimations/accelerated-transition-interrupted-on-composited-element.html:
10:36 AM Changeset in webkit [243877] by Chris Dumez
  • 2 edits in trunk/Source/WebKit

Temporarily disable delayed WebProcess launch on iOS to address PLT regression
https://bugs.webkit.org/show_bug.cgi?id=196604
<rdar://problem/49074131>

Reviewed by Geoffrey Garen.

Temporarily disable delayed WebProcess launch on iOS to address PLT regression. This
is while I figure out how to enable this on iOS without regressed PLT.

  • UIProcess/WebProcessPool.h:
10:36 AM Changeset in webkit [243876] by Ryan Haddad
  • 2 edits in branches/safari-607-branch/LayoutTests

Cherry-pick r243768. rdar://problem/49539493

[Mojave] Layout test fast/text/complex-initial-advance.html is failing
https://bugs.webkit.org/show_bug.cgi?id=196512

Unreviewed test gardening.

  • platform/mac/TestExpectations: Mark test as failing.

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

10:21 AM Changeset in webkit [243875] by Caio Lima
  • 10 edits
    1 add in trunk

[JSC] We should consider moving UnlinkedFunctionExecutable::m_parentScopeTDZVariables to RareData
https://bugs.webkit.org/show_bug.cgi?id=194944

Reviewed by Keith Miller.

JSTests:

  • stress/verify-bytecode-generator-cached-variables-under-tdz.js: Added.

Source/JavaScriptCore:

Based on profile data collected on JetStream2, Speedometer 2 and
other benchmarks, it is very rare having non-empty
UnlinkedFunctionExecutable::m_parentScopeTDZVariables.

  • Data collected from Speedometer2

Total number of UnlinkedFunctionExecutable: 39463
Total number of non-empty parentScopeTDZVars: 428 (~1%)

  • Data collected from JetStream2

Total number of UnlinkedFunctionExecutable: 83715
Total number of non-empty parentScopeTDZVars: 5285 (~6%)

We also collected numbers on 6 of top 10 Alexia sites.

  • Data collected from youtube.com

Total number of UnlinkedFunctionExecutable: 29599
Total number of non-empty parentScopeTDZVars: 97 (~0.3%)

  • Data collected from twitter.com

Total number of UnlinkedFunctionExecutable: 23774
Total number of non-empty parentScopeTDZVars: 172 (~0.7%)

  • Data collected from google.com

Total number of UnlinkedFunctionExecutable: 33209
Total number of non-empty parentScopeTDZVars: 174 (~0.5%)

  • Data collected from amazon.com:

Total number of UnlinkedFunctionExecutable: 15182
Total number of non-empty parentScopeTDZVars: 166 (~1%)

  • Data collected from facebook.com:

Total number of UnlinkedFunctionExecutable: 54443
Total number of non-empty parentScopeTDZVars: 269 (~0.4%)

  • Data collected from netflix.com:

Total number of UnlinkedFunctionExecutable: 39266
Total number of non-empty parentScopeTDZVars: 97 (~0.2%)

Considering such numbers, this patch is moving m_parentScopeTDZVariables
to RareData. This decreases sizeof(UnlinkedFunctionExecutable) by
16 bytes. With this change, now UnlinkedFunctionExecutable constructors
receives an Optional<VariableEnvironmentMap::Handle> and only stores
it when value != WTF::nullopt. We also changed
UnlinkedFunctionExecutable::parentScopeTDZVariables() and it returns
VariableEnvironment() whenever the Executable doesn't have RareData,
or VariableEnvironmentMap::Handle is unitialized. This is required
because RareData is instantiated when any of its field is stored and
we can have an unitialized Handle even on cases when parentScopeTDZVariables
is WTF::nullopt.

Results on memory usage on JetStrem2 is neutral.

Mean of memory peak on ToT: 4258633728 bytes (confidence interval: 249720072.95)
Mean of memory peak on Changes: 4367325184 bytes (confidence interval: 321285583.61)

  • builtins/BuiltinExecutables.cpp:

(JSC::BuiltinExecutables::createExecutable):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

  • bytecode/UnlinkedFunctionExecutable.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::getVariablesUnderTDZ):

BytecodeGenerator::getVariablesUnderTDZ now also caches if m_cachedVariablesUnderTDZ
is empty, so we can properly return WTF::nullopt without the
reconstruction of a VariableEnvironment to check if it is empty.

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::makeFunction):

  • parser/VariableEnvironment.h:

(JSC::VariableEnvironment::isEmpty const):

  • runtime/CachedTypes.cpp:

(JSC::CachedCompactVariableMapHandle::decode const):

It returns an unitialized Handle when there is no
CompactVariableEnvironment. This can happen when RareData is ensured
because of another field.

(JSC::CachedFunctionExecutableRareData::encode):
(JSC::CachedFunctionExecutableRareData::decode const):
(JSC::CachedFunctionExecutable::encode):
(JSC::CachedFunctionExecutable::decode const):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

  • runtime/CodeCache.cpp:

Instead of creating a dummyVariablesUnderTDZ, we simply pass
WTF::nullopt.

(JSC::CodeCache::getUnlinkedGlobalFunctionExecutable):

10:16 AM Changeset in webkit [243874] by Ryan Haddad
  • 3 edits in branches/safari-607-branch/LayoutTests

Cherry-pick r241307. rdar://problem/49610758

AX: Fix flaky accessibility/loading-iframe-sends-notification.html
https://bugs.webkit.org/show_bug.cgi?id=194546

Reviewed by Zalan Bujtas.

This test was relying on timing between load events being sent and accessibility events being sent.
We don't need to do that, we can more directly test this interplay.

  • accessibility/loading-iframe-sends-notification-expected.txt:
  • accessibility/loading-iframe-sends-notification.html:

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

10:08 AM WebKitGTK/2.24.x edited by Michael Catanzaro
Propose merges (diff)
9:52 AM Changeset in webkit [243873] by youenn@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

Log the error if VideoProcessing library cannot be dlopen
https://bugs.webkit.org/show_bug.cgi?id=196609

Reviewed by Eric Carlson.

  • Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.cpp:

(webrtc::initVideoProcessingVPModuleInitialize):

9:51 AM Changeset in webkit [243872] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[WPE] Unreviewed gardening

Remove tests that are expected to fail but pass.

  • platform/wpe/TestExpectations:
9:38 AM Changeset in webkit [243871] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

REGRESSION (r236501?): Layout Test compositing/geometry/limit-layer-bounds-opacity-transition.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=190210
<rdar://problem/45045989>

Unreviewed.

The flakiness dashboard shows that this test hasn't been flaky for a few weeks, reverting the flaky expectation.

Patch by Antoine Quint <Antoine Quint> on 2019-04-04

  • platform/mac/TestExpectations:
8:44 AM Changeset in webkit [243870] by Chris Dumez
  • 2 edits in trunk/Tools

Unreviewed, roll out r243858 which made tests time out.

Disable new API tests on Windows instead.

  • TestWebKitAPI/Tests/WebKit/ReloadPageAfterCrash.cpp:

(TestWebKitAPI::TEST):

8:41 AM Changeset in webkit [243869] by Tadeu Zagallo
  • 4 edits
    2 adds in trunk

Cache bytecode for jsc.cpp helpers and fix CachedStringImpl
https://bugs.webkit.org/show_bug.cgi?id=196409

Reviewed by Saam Barati.

JSTests:

  • stress/bytecode-cache-cached-string-impl.js: Added.

(f):
(g):

  • stress/bytecode-cache-run-string.js: Added.

Source/JavaScriptCore:

Some of the helpers in jsc.cpp, such as functionRunString, were stll using
using makeSource instead of jscSource, which does not use the ShellSourceProvider
and therefore does not write the bytecode cache to disk.

Changing that revealed a bug in bytecode cache. The Encoder keeps a mapping
of pointers to offsets of already cached objects, in order to avoid caching
the same object twice. Similarly, the Decoder keeps a mapping from offsets
to pointers, in order to avoid creating multiple objects in memory for the
same cached object. The following was happening:
1) A StringImpl* S was cached as CachedPtr<CachedStringImpl> at offset O. We add
an entry in the Encoder mapping that S has already been encoded at O.
2) We cache StringImpl* S again, but now as CachedPtr<CachedUniquedStringImpl>.
We find an entry in the Encoder mapping for S, and return the offset O. However,
the object cached at O is a CachedPtr<CachedStringImpl> (i.e. not Uniqued).

3) When decoding, there are 2 possibilities:
3.1) We find S for the first time through a CachedPtr<CachedStringImpl>. In
this case, everything works as expected since we add an entry in the decoder
mapping from the offset O to the decoded StringImpl* S. The next time we find
S through the uniqued version, we'll return the already decoded S.
3.2) We find S through a CachedPtr<CachedUniquedStringImpl>. Now we have a
problem, since the CachedPtr has the offset of a CachedStringImpl (not uniqued),
which has a different shape and we crash.

We fix this by making CachedStringImpl and CachedUniquedStringImpl share the
same implementation. Since it doesn't matter whether a string is uniqued for
encoding, and we always decode strings as uniqued either way, they can be used
interchangeably.

  • jsc.cpp:

(functionRunString):
(functionLoadString):
(functionDollarAgentStart):
(functionCheckModuleSyntax):
(runInteractive):

  • runtime/CachedTypes.cpp:

(JSC::CachedUniquedStringImplBase::decode const):
(JSC::CachedFunctionExecutable::rareData const):
(JSC::CachedCodeBlock::rareData const):
(JSC::CachedFunctionExecutable::encode):
(JSC::CachedCodeBlock<CodeBlockType>::encode):
(JSC::CachedUniquedStringImpl::encode): Deleted.
(JSC::CachedUniquedStringImpl::decode const): Deleted.
(JSC::CachedStringImpl::encode): Deleted.
(JSC::CachedStringImpl::decode const): Deleted.

7:16 AM Changeset in webkit [243868] by commit-queue@webkit.org
  • 5 edits
    2 adds in trunk

[Web Animations] JS wrapper may be deleted while animation is yet to dispatch its finish event
https://bugs.webkit.org/show_bug.cgi?id=196118
<rdar://problem/46614137>

Patch by Antoine Quint <Antoine Quint> on 2019-04-04
Reviewed by Ryosuke Niwa.

Source/WebCore:

Test: webanimations/js-wrapper-kept-alive.html

We need to teach WebAnimation to keep its JS wrapper alive if it's relevant or could become relevant again by virtue of having a timeline.

  • animation/WebAnimation.cpp:

(WebCore::WebAnimation::stop): Drive-by fix for the missing superclass method call.
(WebCore::WebAnimation::hasPendingActivity const):

  • animation/WebAnimation.h:

LayoutTests:

Add a test that starts a short animation, sets a custom property on it, registers a "finish" event listener on it and deletes
the sole reference to it in the JS world before triggering garbage collection. Prior to this fix, this test would time out
because the JS wrapper would be garbage-collected prior to the animation completing and thus the event listener would not
be called. To complete successfully, this test checks that it receives the event and its target is the same animation object
that was originally created by checking the custom property is still set.

  • legacy-animation-engine/animations/resume-after-page-cache.html:
  • webanimations/js-wrapper-kept-alive-expected.txt: Added.
  • webanimations/js-wrapper-kept-alive.html: Added.
7:15 AM Changeset in webkit [243867] by Tadeu Zagallo
  • 2 edits in trunk/Source/JavaScriptCore

UnlinkedCodeBlock constructor from cache should initialize m_didOptimize
https://bugs.webkit.org/show_bug.cgi?id=196396

Reviewed by Saam Barati.

The UnlinkedCodeBlock constructor in CachedTypes was missing the initialization
for m_didOptimize, which leads to crashes in CodeBlock::thresholdForJIT.

  • runtime/CachedTypes.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):

5:51 AM Changeset in webkit [243866] by magomez@igalia.com
  • 3 edits in trunk/Source/WebCore

[GTK][WPE] Use a timer to request the creation of pending tiles
https://bugs.webkit.org/show_bug.cgi?id=196594

Reviewed by Žan Doberšek.

Use a timer to request pending tile creation, as calls to notifyFlushRequired() are discarded
while inside a layer flush.

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):
(WebCore::CoordinatedGraphicsLayer::updateContentBuffers):
(WebCore::CoordinatedGraphicsLayer::requestPendingTileCreationTimerFired):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
1:53 AM Changeset in webkit [243865] by magomez@igalia.com
  • 6 edits in trunk/Source/WebKit

[CoordGraphics] Revalidate need for 'coordinated update completion' in ThreadedCompositor
https://bugs.webkit.org/show_bug.cgi?id=188839

Reviewed by Žan Doberšek.

Even if a platform layer has changed, don't wait for a main thread callback to finish the
CompositingRunLoop update. It can be finished as soon as we receive the frameComplete signal.

  • Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp:

(WebKit::CompositingRunLoop::scheduleUpdate):
(WebKit::CompositingRunLoop::stopUpdates):
(WebKit::CompositingRunLoop::updateCompleted):
(WebKit::CompositingRunLoop::updateTimerFired):
(WebKit::CompositingRunLoop::compositionCompleted): Deleted.

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

(WebKit::ThreadedCompositor::renderLayerTree):
(WebKit::ThreadedCompositor::sceneUpdateFinished):
(WebKit::ThreadedCompositor::displayRefreshMonitor):
(WebKit::ThreadedCompositor::handleDisplayRefreshMonitorUpdate): Deleted.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
  • WebProcess/WebPage/CoordinatedGraphics/LayerTreeHost.cpp:

(WebKit::LayerTreeHost::handleDisplayRefreshMonitorUpdate):

Apr 3, 2019:

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

[ATK] Wrong index passed to AtkObject::children-changed::add signal in AXObjectCache::attachWrapper()
https://bugs.webkit.org/show_bug.cgi?id=196538

Reviewed by Michael Catanzaro.

In most of the cases the parent is not found, probably because the child is not a direct descendant of the
parent returned by parentObjectUnignored(). We need to handle the case of find() returning notFound.

  • accessibility/atk/AXObjectCacheAtk.cpp:

(WebCore::AXObjectCache::attachWrapper): Use -1 as the index when find() returns notFound.

10:52 PM Changeset in webkit [243863] by Carlos Garcia Campos
  • 6 edits
    1 move
    1 add
    1 delete in trunk

[ATK] Cleanup WebPageAccessibilityObjectAtk
https://bugs.webkit.org/show_bug.cgi?id=196537

Reviewed by Michael Catanzaro.

Source/WebKit:

Several changes and cleanups:

  • Add WebKit prefix so that style checker doesn't complain about GObject conventions.
  • Rename the header to remove the Atk prefix to match the cpp file and class name.
  • Use pragma once.
  • Use nullptr instead of 0.
  • Use WEBKIT_DEFINE_TYPE instead of G_DEFINE_TYPE.
  • Return generic AtkObject* from constructor.
  • SourcesGTK.txt:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.cpp: Renamed from Source/WebKit/WebProcess/WebPage/atk/WebPageAccessibilityObjectAtk.cpp.

(accessibilityRootObjectWrapper):
(webkitWebPageAccessibilityObjectInitialize):
(webkitWebPageAccessibilityObjectGetIndexInParent):
(webkitWebPageAccessibilityObjectGetNChildren):
(webkitWebPageAccessibilityObjectRefChild):
(webkit_web_page_accessibility_object_class_init):
(webkitWebPageAccessibilityObjectNew):
(webkitWebPageAccessibilityObjectRefresh):

  • WebProcess/WebPage/atk/WebKitWebPageAccessibilityObject.h: Added.
  • WebProcess/WebPage/atk/WebPageAccessibilityObject.h: Removed.
  • WebProcess/WebPage/gtk/WebPageGtk.cpp:

(WebKit::WebPage::platformInitialize):
(WebKit::WebPage::updateAccessibilityTree):

Tools:

Also consider files under atk directories as exceptions for GObject conventions.

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

(check_identifier_name_in_declaration):

10:51 PM Changeset in webkit [243862] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit

[ATK] Set ATK_STATE_TRANSIENT on the atk socket until it's embedded
https://bugs.webkit.org/show_bug.cgi?id=196535

Reviewed by Michael Catanzaro.

This way the properties are not cached. Right now, if number of children is queried before the socket is
embedded, 0 is returned and cached, so ATs don't see the child even after the socket has been embedded.

  • UIProcess/API/gtk/WebKitWebViewBaseAccessible.cpp:

(webkitWebViewBaseAccessibleRefStateSet): Set ATK_STATE_TRANSIENT is the socket is not occupied.

  • UIProcess/gtk/WebPageProxyGtk.cpp:

(WebKit::WebPageProxy::bindAccessibilityTree): Unset ATK_STATE_TRANSIENT.

10:50 PM Changeset in webkit [243861] by Carlos Garcia Campos
  • 4 edits in trunk/Source/WebKit

[ATK] Embed the AtkSocket as soon as we receive the plug ID
https://bugs.webkit.org/show_bug.cgi?id=196534

Reviewed by Michael Catanzaro.

We are currently storing the ID and waiting for the next time get_accessible is called to embed the socket. We
can simply embed the socket when the plug ID is received.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseGetAccessible):

  • UIProcess/WebPageProxy.h:
  • UIProcess/gtk/WebPageProxyGtk.cpp:

(WebKit::WebPageProxy::bindAccessibilityTree):

10:48 PM Changeset in webkit [243860] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[ATK] Don't touch accessibility tree in WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld
https://bugs.webkit.org/show_bug.cgi?id=193914

Reviewed by Michael Catanzaro.

Move it to dispatchDidFinishDocumentLoad, since we know we have the document at that point and we can create the
root accessibility object wrapper.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidFinishDocumentLoad):
(WebKit::WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld):

10:47 PM Changeset in webkit [243859] by timothy@apple.com
  • 6 edits in trunk

Update AutoFill field icons to be SVG instead of PNG images.
https://bugs.webkit.org/show_bug.cgi?id=196557
rdar://problem/48292514

Reviewed by Tim Horton.

Source/WebCore:

  • css/html.css:

(input::-webkit-credentials-auto-fill-button):
(input::-webkit-contacts-auto-fill-button):
(input::-webkit-credit-card-auto-fill-button):

LayoutTests:

  • platform/ios/fast/forms/auto-fill-button/input-auto-fill-button-expected.txt:
  • platform/mac/fast/forms/auto-fill-button/input-contacts-auto-fill-button-expected.txt:
  • platform/win/fast/forms/auto-fill-button/input-auto-fill-button-expected.txt:
10:44 PM Changeset in webkit [243858] by Fujii Hironori
  • 2 edits in trunk/Tools

The page's focusedFrame / frameSetLargestFrame do not get cleared on process swap or crash
https://bugs.webkit.org/show_bug.cgi?id=196588
<rdar://problem/49365787>

Unreviewed build fix for Windows port.

error C3861: 'kill': identifier not found

  • TestWebKitAPI/Tests/WebKit/ReloadPageAfterCrash.cpp:

(TestWebKitAPI::TEST): Replaced kill with WKPageTerminate.

10:27 PM Changeset in webkit [243857] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling in r243843 with the build fix
https://bugs.webkit.org/show_bug.cgi?id=196586

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

  • runtime/Options.h:
  • runtime/RandomizingFuzzerAgent.cpp:

(JSC::RandomizingFuzzerAgent::getPrediction):

9:32 PM Changeset in webkit [243856] by mitz@apple.com
  • 9 copies
    1 add in releases/Apple/Safari Technology Preview 79

Added a tag for Safari Technology Preview release 79.

8:57 PM Changeset in webkit [243855] by Simon Fraser
  • 9 edits in trunk/Source

Simplify some "programmaticScroll" code paths
https://bugs.webkit.org/show_bug.cgi?id=196589

Reviewed by Zalan Bujtas.

Source/WebCore:

AsyncScrollingCoordinator::scheduleUpdateScrollPositionAfterAsyncScroll() just returned early if programmaticScroll
was true, so instead, just never call it. This means we can remove the "programmaticScroll" argument from
scheduleUpdateScrollPositionAfterAsyncScroll(). Also change some callers to use the ScrollType enum
instead of a bool.

Now, ThreadedScrollingTree::scrollingTreeNodeDidScroll() just returns early. Programmatic scrolls
update state on the main thread before updating the scrolling tree, so this makes sense.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
(WebCore::AsyncScrollingCoordinator::scheduleUpdateScrollPositionAfterAsyncScroll):
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScrollTimerFired):
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
(WebCore::AsyncScrollingCoordinator::reconcileScrollingState):

  • page/scrolling/AsyncScrollingCoordinator.h:

(WebCore::AsyncScrollingCoordinator::ScheduledScrollUpdate::ScheduledScrollUpdate):
(WebCore::AsyncScrollingCoordinator::ScheduledScrollUpdate::matchesUpdateType const):

  • page/scrolling/ScrollingCoordinator.cpp:

(WebCore::operator<<):

  • page/scrolling/ScrollingCoordinator.h:

(WebCore::ScrollingCoordinator::reconcileScrollingState):

  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):

Source/WebKit:

  • WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm: Remove the parameter.

(WebKit::RemoteScrollingCoordinator::scrollPositionChangedForNode): Use the enum type.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::updateVisibleContentRects):

8:57 PM Changeset in webkit [243854] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Cancel build and similar operations should have authentication
https://bugs.webkit.org/show_bug.cgi?id=196520

Reviewed by Dewei Zhu.

  • BuildSlaveSupport/ews-build/master.cfg: Configure authentication using admin's username and password from

environment variables.

8:44 PM Changeset in webkit [243853] by Ryan Haddad
  • 4 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling out r243843.

Broke CLoop and Windows builds.

Reverted changeset:

"[JSC] Add dump feature for RandomizingFuzzerAgent"
https://bugs.webkit.org/show_bug.cgi?id=196586
https://trac.webkit.org/changeset/243843

8:38 PM Changeset in webkit [243852] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Do not trigger queues which are not in production yet
https://bugs.webkit.org/show_bug.cgi?id=196581

Reviewed by Dewei Zhu.

  • BuildSlaveSupport/ews-build/config.json:
8:37 PM Changeset in webkit [243851] by rmorisset@apple.com
  • 10 edits
    2 copies
    5 adds in trunk

B3 should use associativity to optimize expression trees
https://bugs.webkit.org/show_bug.cgi?id=194081

Reviewed by Filip Pizlo.

JSTests:

Added three microbenchmarks:

  • add-tree should be the ideal case, but there is no speedup because we are currently unable to prove that the CheckAdd won't overflow
  • bit-xor-tree most closely matches the situation where the optimization triggers on the JetStream2 subtests where it triggers: an unbalanced expression tree of size 8 that can be balanced, with no other optimizations being unlocked. 16% speedup
  • bit-or-tree is an ideal case, where the reassociation also enables a ton of further simplifications. 42% speedup
  • microbenchmarks/add-tree.js: Added.
  • microbenchmarks/bit-or-tree.js: Added.
  • microbenchmarks/bit-xor-tree.js: Added.

Source/JavaScriptCore:

This patch adds a new B3 pass, that tries to find and optimize expression trees made purely of any one associative and commutative operator (Add/Mul/BitOr/BitAnd/BitXor).
The pass only runs in O2, and runs once, after lowerMacros and just before a run of B3ReduceStrength (which helps clean up the dead code it tends to leave behind).
I had to separate killDeadCode out of B3ReduceStrength (as a new B3EliminateDeadCode pass) to run it before B3OptimizeAssociativeExpressionTrees, as otherwise it is stopped by high use counts
inherited from CSE.
This extra run of DCE is by itself a win, most notably on microbenchmarks/instanceof-always-hit-two (1.5x faster), and on microbenchmarks/licm-dragons(-out-of-bounds) (both get 1.16x speedup).
I suspect it is because it runs between CSE and tail-dedup, and as a result allows a lot more tail-dedup to occur.

The pass is currently extremely conservative, not trying anything if it would cause _any_ code duplication.
For this purpose, it starts by computing use counts for the potentially interesting nodes (those with the right opcodes), and segregate them into expression trees.
The root of an expression tree is a node that is either used in multiple places, or is used by a value with a different opcode.
The leaves of an expression tree are nodes that are either used in multiple places, or have a different opcode.
All constant leaves of a tree are combined, as well as all leaves that are identical. What remains is then laid out into a balanced binary tree, hopefully maximizing ILP.

This optimization was implemented as a stand-alone pass and not as part of B3ReduceStrength mostly because it needs use counts to avoid code duplication.
It also benefits from finding all tree roots first, and not trying to repeatedly optimize subtrees.

I added several tests to testB3 with varying patterns of trees. It is also tested in a less focused way by lots of older tests.

In the future this pass could be expanded to allow some bounded amount of code duplication, and merging more leaves (e.g. Mul(a, 3) and a in an Add tree, into Mul(a, 4))
The latter will need exposing the peephole optimizations out of B3ReduceStrength to avoid duplicating code.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • b3/B3Common.cpp:

(JSC::B3::shouldDumpIR):
(JSC::B3::shouldDumpIRAtEachPhase):

  • b3/B3Common.h:
  • b3/B3EliminateDeadCode.cpp: Added.

(JSC::B3::EliminateDeadCode::run):
(JSC::B3::eliminateDeadCode):

  • b3/B3EliminateDeadCode.h: Added.

(JSC::B3::EliminateDeadCode::EliminateDeadCode):

  • b3/B3Generate.cpp:

(JSC::B3::generateToAir):

  • b3/B3OptimizeAssociativeExpressionTrees.cpp: Added.

(JSC::B3::OptimizeAssociativeExpressionTrees::OptimizeAssociativeExpressionTrees):
(JSC::B3::OptimizeAssociativeExpressionTrees::neutralElement):
(JSC::B3::OptimizeAssociativeExpressionTrees::isAbsorbingElement):
(JSC::B3::OptimizeAssociativeExpressionTrees::combineConstants):
(JSC::B3::OptimizeAssociativeExpressionTrees::emitValue):
(JSC::B3::OptimizeAssociativeExpressionTrees::optimizeRootedTree):
(JSC::B3::OptimizeAssociativeExpressionTrees::run):
(JSC::B3::optimizeAssociativeExpressionTrees):

  • b3/B3OptimizeAssociativeExpressionTrees.h: Added.
  • b3/B3ReduceStrength.cpp:
  • b3/B3Value.cpp:

(JSC::B3::Value::replaceWithIdentity):

  • b3/testb3.cpp:

(JSC::B3::testBitXorTreeArgs):
(JSC::B3::testBitXorTreeArgsEven):
(JSC::B3::testBitXorTreeArgImm):
(JSC::B3::testAddTreeArg32):
(JSC::B3::testMulTreeArg32):
(JSC::B3::testBitAndTreeArg32):
(JSC::B3::testBitOrTreeArg32):
(JSC::B3::run):

8:34 PM Changeset in webkit [243850] by youenn@apple.com
  • 4 edits in trunk/Source

Add logging and ASSERTs to investigate issue with VPModuleInitialize
https://bugs.webkit.org/show_bug.cgi?id=196573

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

Expand macros directly to add some logging.
Removed the dispatch_once since VPModuleInitialize is already called in one.

  • Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.cpp:

(webrtc::initVideoProcessingVPModuleInitialize):

Source/WebCore:

Add some ASSERTs.
No change of behavior.

  • platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp:

(WebCore::LibWebRTCProviderCocoa::createDecoderFactory):
(WebCore::LibWebRTCProviderCocoa::createEncoderFactory):

8:23 PM Changeset in webkit [243849] by Chris Dumez
  • 2 edits in trunk/Tools

Unreviewed, fix typo in the name of API test added in r243848.

  • TestWebKitAPI/Tests/WebKit/ReloadPageAfterCrash.cpp:

(TestWebKitAPI::TEST):

8:09 PM Changeset in webkit [243848] by Chris Dumez
  • 4 edits in trunk

The page's focusedFrame / frameSetLargestFrame do not get cleared on process swap or crash
https://bugs.webkit.org/show_bug.cgi?id=196588
<rdar://problem/49365787>

Reviewed by Ryosuke Niwa.

Source/WebKit:

The page's focusedFrame / frameSetLargestFrame do not get cleared on process swap or crash.
This can lead to returning stale frames to the client if it asks for those.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::resetState):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKit/ReloadPageAfterCrash.cpp:

(TestWebKitAPI::nullJavaScriptCallback):
(TestWebKitAPI::didCrashCheckFrames):
(TestWebKitAPI::TEST):

7:53 PM Changeset in webkit [243847] by Simon Fraser
  • 15 edits in trunk/Source/WebKit

Remove the isProgrammaticScroll argument to requestScroll() because no-one uses it
https://bugs.webkit.org/show_bug.cgi?id=196587

Reviewed by Zalan Bujtas.

This argument was unused.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::requestScroll):

  • UIProcess/API/gtk/PageClientImpl.h:
  • UIProcess/API/wpe/PageClientImpl.cpp:

(WebKit::PageClientImpl::requestScroll):

  • UIProcess/API/wpe/PageClientImpl.h:
  • UIProcess/PageClient.h:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:

(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestScroll):

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

(WebKit::PageClientImpl::requestScroll):

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

(WebKit::PageClientImpl::requestScroll):

  • UIProcess/win/PageClientImpl.cpp:

(WebKit::PageClientImpl::requestScroll):

  • UIProcess/win/PageClientImpl.h:
7:52 PM Changeset in webkit [243846] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Remove some redundant memebers from ScrollingStateFrameScrollingNode
https://bugs.webkit.org/show_bug.cgi?id=196571

Reviewed by Zalan Bujtas.

m_requestedScrollPosition and m_requestedScrollPositionRepresentsProgrammaticScroll were
duplicated on ScrollingStateFrameScrollingNode and ScrollingStateScrollingNode, so
remove them from the derived class.

  • page/scrolling/ScrollingStateFrameScrollingNode.cpp:

(WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
(WebCore::ScrollingStateFrameScrollingNode::dumpProperties const):

  • page/scrolling/ScrollingStateFrameScrollingNode.h:
7:09 PM Changeset in webkit [243845] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

REGRESSION (r220717): Assertion fires when animating an SVG rounded corner rect till it collapses
https://bugs.webkit.org/show_bug.cgi?id=196518

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

Source/WebCore:

r220717 made RenderSVGRect clear its m_path in updateShapeFromElement().

RenderSVGRect tries to optimize its layout and drawing if the rectangle
is not rounded. So it uses the flag m_usePathFallback to know whether to
use m_path or m_innerStrokeRect and m_outerStrokeRect. If the rectangle
is rounded but its boundingSize is empty, m_path will be cleared,
m_innerStrokeRect and m_outerStrokeRect will be recalculated but
m_usePathFallback will not be reset to false. Therefore when calling
RenderSVGRect::isEmpty(), it will call RenderSVGShape::isEmpty() which
will assert since m_path is null.

Test: svg/animations/animate-rounded-corner-rect-zero-height.svg

  • rendering/svg/RenderSVGRect.cpp:

(WebCore::RenderSVGRect::updateShapeFromElement):
Reset m_usePathFallback to false once clearPath() is called.

LayoutTests:

  • svg/animations/animate-rounded-corner-rect-zero-height-expected.txt: Added.
  • svg/animations/animate-rounded-corner-rect-zero-height.svg: Added.
7:01 PM Changeset in webkit [243844] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Nullptr crash in InlineTextBox::selectionState via TextIndicator::createWithRange
https://bugs.webkit.org/show_bug.cgi?id=196579

Reviewed by Simon Fraser.

Avoid crashing accessing the unengated optional's value in relese builds for now.

Unfortunately, fixing the underlying cause of the selection states of RenderView & RenderObject
getting out out of sync would require a significant re-architecturing of the whole selection
repainting / state managing mechanism.

  • rendering/SelectionRangeData.h:

(WebCore::SelectionRangeData::startPosition const):
(WebCore::SelectionRangeData::endPosition const):

6:28 PM Changeset in webkit [243843] by ysuzuki@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] Add dump feature for RandomizingFuzzerAgent
https://bugs.webkit.org/show_bug.cgi?id=196586

Reviewed by Saam Barati.

Towards deterministic tests for the results from randomizing fuzzer agent, this patch adds Options::dumpRandomizingFuzzerAgentPredictions, which dumps the generated types.
The results is like this.

getPrediction name:(#C2q9xD),bytecodeIndex:(22),original:(Array),generated:(OtherObj|Array|Float64Array|BigInt|NonIntAsDouble)
getPrediction name:(makeUnwriteableUnconfigurableObject#AiEJv1),bytecodeIndex:(14),original:(OtherObj),generated:(Final|Uint8Array|Float64Array|SetObject|WeakSetObject|BigInt|NonIntAsDouble)

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

  • runtime/Options.h:
  • runtime/RandomizingFuzzerAgent.cpp:

(JSC::RandomizingFuzzerAgent::getPrediction):

5:43 PM Changeset in webkit [243842] by Jonathan Bedard
  • 3 edits in trunk/Tools

run-webkit-tests: Upload test results (new results database)
https://bugs.webkit.org/show_bug.cgi?id=196577
<rdar://problem/34841155>

Reviewed by Lucas Forschler.

  • Scripts/webkitpy/layout_tests/controllers/manager.py:

(Manager.run): Upload results after each device shard, since the configuration will be
different for each device.
(Manager._results_to_upload_json_trie): Convert a TestRunResults object to a trie to be
uploaded to a results database.

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(parse_args): Add new 'Upload Options' and prepare 'Results JSON Options' for deprecation.

5:16 PM Changeset in webkit [243841] by mmaxfield@apple.com
  • 24 edits
    2 adds in trunk

-apple-trailing-word is needed for browser detection
https://bugs.webkit.org/show_bug.cgi?id=196575

Unreviewed.

PerformanceTests:

  • MotionMark/resources/debug-runner/motionmark.css:

(#intro .start-benchmark p):

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

This is an unreviewed partial revert of r243819. Turns out there are some websites
which use this property to do browser detection. So, we need to continue to parse
the property, but we don't need the property to do anything.

Test: fast/text/trailing-word-detection.html

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

(WebCore::ComputedStyleExtractor::valueForPropertyinStyle):

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator TrailingWord const):

  • css/CSSProperties.json:
  • css/CSSValueKeywords.in:
  • css/parser/CSSParserFastPaths.cpp:

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::CSSParserFastPaths::isKeywordPropertyID):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::trailingWord const):
(WebCore::RenderStyle::setTrailingWord):
(WebCore::RenderStyle::initialTrailingWord):

  • rendering/style/RenderStyleConstants.h:

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

  • fast/text/trailing-word-detection-expected.txt: Added.
  • fast/text/trailing-word-detection.html: Added.
  • platform/gtk/TestExpectations:
  • platform/win/TestExpectations:
4:57 PM Changeset in webkit [243840] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

tiled-drawing/scrolling/scroll-snap/scroll-snap-proximity-mainframe.html is a flaky failure and timeout
https://bugs.webkit.org/show_bug.cgi?id=196115

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Updating test expectations for flaky test
4:51 PM Changeset in webkit [243839] by msaboff@apple.com
  • 5 edits in trunk

REGRESSION (r243642): com.apple.JavaScriptCore crash in JSC::RegExpObject::execInline
https://bugs.webkit.org/show_bug.cgi?id=196477

Reviewed by Keith Miller.

Source/JavaScriptCore:

The problem here is that when we advance the index by 2 for a character class that only
has non-BMP characters, we might go past the end of the string. This can happen for
greedy counted character classes that are part of a alternative where there is one
character to match after the greedy non-BMP character class.

The "do we have string left to match" check at the top of the JIT loop for the counted
character class checks to see if index is not equal to the string length. For non-BMP
character classes, we need to check to see if there are at least 2 characters left.
Therefore we now temporarily add 1 to the current index before comparing. This checks
to see if there are iat least 2 characters left to match, instead of 1.

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::generateCharacterClassGreedy):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassNonGreedy):

LayoutTests:

Updated the test with a couple more test cases to test a few variants of this bug.
Also added a couple of non-greedy counted non-BMP character class tests that don't have
the bug just to be sure.

  • js/regexp-unicode-expected.txt:
  • js/script-tests/regexp-unicode.js:
4:39 PM Changeset in webkit [243838] by youenn@apple.com
  • 2 deletes in trunk/Source/ThirdParty/libwebrtc/Source/third_party

Remove unneeded libwebrtc files, this time all the files
https://bugs.webkit.org/show_bug.cgi?id=196553

Reviewed by Eric Carlson.

  • Source/third_party/boringssl/src/fuzz: Removed.
  • Source/third_party/protobuf/csharp/keys: Removed.
4:35 PM Changeset in webkit [243837] by youenn@apple.com
  • 1 edit in trunk/Source/ThirdParty/libwebrtc/ChangeLog

Remove unneeded libwebrtc files
https://bugs.webkit.org/show_bug.cgi?id=196553

Reviewed by Eric Carlson.

  • Source/third_party/boringssl/src/fuzz: Removed.
  • Source/third_party/protobuf/csharp/keys: Removed.
4:30 PM Changeset in webkit [243836] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Add a WebKit internal feature flag to always enable modern compatibility mode by default
https://bugs.webkit.org/show_bug.cgi?id=196526
<rdar://problem/49532923>

Reviewed by Tim Horton.

Change UseModernCompatibilityModeByDefault from an internal preference to a debug preference, so that it may be
enabled for all apps on the system.

  • Shared/WebPreferences.yaml:
4:29 PM Changeset in webkit [243835] by ysuzuki@apple.com
  • 3 edits
    1 add in trunk

[JSC] Exception verification crash on operationArrayIndexOfValueInt32OrContiguous
https://bugs.webkit.org/show_bug.cgi?id=196574

Reviewed by Saam Barati.

JSTests:

  • stress/string-index-of-exception-check.js: Added.

(blurType):
(1.forEach):

Source/JavaScriptCore:

This patch adds missing exception check in operationArrayIndexOfValueInt32OrContiguous.

  • dfg/DFGOperations.cpp:
4:21 PM Changeset in webkit [243834] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix internal build after r243829
https://bugs.webkit.org/show_bug.cgi?id=196549

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
Some SDK's don't include this selector in the header.
Use NSSelectorFromString.

4:08 PM Changeset in webkit [243833] by don.olmstead@sony.com
  • 28 edits
    2 adds in trunk

[CMake][WTF] Mirror XCode header directories
https://bugs.webkit.org/show_bug.cgi?id=191662

Reviewed by Konstantin Tokarev.

.:

Add WTF_FRAMEWORK_HEADERS_DIR to place WTF headers into. Add frameworks/WTF.cmake
which creates an interface target which will populate dependencies for consumers.
This file is added here to support AppleWin internal builds which invoke CMake on
each directory.

  • Source/cmake/WebKitFS.cmake:
  • Source/cmake/frameworks/WTF.cmake: Added.

Source/JavaScriptCore:

Use WTFFramework as a dependency and include frameworks/WTF.cmake for AppleWin internal
builds.

  • CMakeLists.txt:
  • shell/CMakeLists.txt:

Source/WebCore:

Use WTFFramework as a dependency and include frameworks/WTF.cmake for AppleWin internal
builds.

  • CMakeLists.txt:
  • PlatformWin.cmake:

Source/WebDriver:

Use WTFFramework as a dependency.

  • CMakeLists.txt:

Source/WebKit:

Use WTFFramework as a dependency and include frameworks/WTF.cmake for AppleWin internal
builds.

  • CMakeLists.txt:

Source/WebKitLegacy:

Use WTFFramework as a dependency and include frameworks/WTF.cmake for AppleWin internal
builds.

  • CMakeLists.txt:
  • PlatformWin.cmake:

Source/WebKitLegacy/win:

  • WebKitQuartzCoreAdditions/CMakeLists.txt:

Source/WTF:

Rename WTF forwarding header target to WTFFramework and update the install location
to WTF_FRAMEWORK_HEADERS_DIR.

  • wtf/CMakeLists.txt:

Tools:

Use WTFFramework as a dependency and include frameworks/WTF.cmake for AppleWin internal
builds.

  • CMakeLists.txt:
  • DumpRenderTree/CMakeLists.txt:
  • DumpRenderTree/PlatformWin.cmake:
  • MiniBrowser/win/CMakeLists.txt:
  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/PlatformWin.cmake:
  • WebKitTestRunner/PlatformGTK.cmake:
  • WebKitTestRunner/PlatformWin.cmake:
3:24 PM Changeset in webkit [243832] by ysuzuki@apple.com
  • 11 edits
    4 adds in trunk/Source/JavaScriptCore

[JSC] Add FuzzerAgent, which has a hooks to get feedback & inject fuzz data into JSC
https://bugs.webkit.org/show_bug.cgi?id=196530

Reviewed by Saam Barati.

This patch adds FuzzerAgent interface and simple RandomizingFuzzerAgent to JSC.
This RandomizingFuzzerAgent returns random SpeculatedType for value profiling to find
the issues in JSC. The seed for randomization can be specified by seedOfRandomizingFuzzerAgent.

I ran this with seedOfRandomizingFuzzerAgent=1 last night and it finds 3 failures in the current JSC tests,
they should be fixed in subsequent patches.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • dfg/DFGByteCodeParser.cpp:

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

  • runtime/FuzzerAgent.cpp: Added.

(JSC::FuzzerAgent::~FuzzerAgent):
(JSC::FuzzerAgent::getPrediction):

  • runtime/FuzzerAgent.h: Added.
  • runtime/JSGlobalObjectFunctions.cpp:
  • runtime/Options.h:
  • runtime/RandomizingFuzzerAgent.cpp: Added.

(JSC::RandomizingFuzzerAgent::RandomizingFuzzerAgent):
(JSC::RandomizingFuzzerAgent::getPrediction):

  • runtime/RandomizingFuzzerAgent.h: Added.
  • runtime/RegExpCachedResult.h:
  • runtime/RegExpGlobalData.cpp:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:

(JSC::VM::fuzzerAgent const):
(JSC::VM::setFuzzerAgent):

3:16 PM Changeset in webkit [243831] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore/PAL

Avoid the use of WTF_EXTERN_C_BEGIN in NSMenuSPI.h
https://bugs.webkit.org/show_bug.cgi?id=196566

Reviewed by Timothy Hatcher.

  • pal/spi/mac/NSMenuSPI.h:
3:07 PM Changeset in webkit [243830] by commit-queue@webkit.org
  • 97 edits
    19 deletes in trunk/Source/WebCore

Remove SVG properties tear-off objects
https://bugs.webkit.org/show_bug.cgi?id=191237

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

This patch cleans the code from unused SVG sources and get rid off the
remaining SVG properties tear-off objects. Here are more details:

-- Remove the SVGAttributeAnimationController and move its code to the

SVGAnimateElementBase. SVGAttributeAnimationController was introduced
to allow animating the SVG properties whether they are backed by tear
off objects or not. Since there will be no tear off objects anymore,
one animation controller will be needed. But in this case, it will be
better if we make SVGAnimateElementBase is the animation controller
and make it manage the animator directly.

-- Remove SVGAttributeRegistry, SVGAttributeOwnerProxy and the virtual

function SVGElement::attributeOwnerProxy(). Remove also all the
overriding functions attributeOwnerProxy() from all the SVGElements.

-- Remove isKnownAttribute() from all the SVG header files except from

four classes: SVGURIReference, SVGFitToViewBox, SVGLangSpace
and SVGExternalResourcesRequired.

-- Remove all the SVG animated properties classifying functions from

SVGElement. This is now handled by SVGPropertyRegistry.

-- There is no need for the enum AnimatedPropertyType anymore. The SVG

property accessor knows its type, knows how to access it and know what
animator it should be created for it.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Element.cpp:

(WebCore::Element::synchronizeAllAttributes const):
(WebCore::Element::synchronizeAttribute const):
(WebCore::Element::fastAttributeLookupAllowed const):
These functions are surprisingly marked 'const'. They were calling 'const'
functions in SVGElement and SVGElement was casting 'this' as non 'const'
before calling the non 'const' functions through the non 'const' 'this'
pointer. Change this by moving the casting to the Element functions.

  • rendering/svg/RenderSVGResourceGradient.cpp:

(WebCore::RenderSVGResourceGradient::applyResource):

  • rendering/svg/RenderSVGResourcePattern.cpp:

(WebCore::RenderSVGResourcePattern::applyResource):

  • svg/SVGAElement.h:
  • svg/SVGAltGlyphElement.h:
  • svg/SVGAnimateElementBase.cpp:

(WebCore::SVGAnimateElementBase::SVGAnimateElementBase):
(WebCore::SVGAnimateElementBase::animator const):
(WebCore::SVGAnimateElementBase::hasInvalidCSSAttributeType const):
(WebCore::SVGAnimateElementBase::isDiscreteAnimator const):
(WebCore::SVGAnimateElementBase::setTargetElement):
(WebCore::SVGAnimateElementBase::setAttributeName):
(WebCore::SVGAnimateElementBase::resetAnimation):
(WebCore::SVGAnimateElementBase::calculateFromAndToValues):
(WebCore::SVGAnimateElementBase::calculateFromAndByValues):
(WebCore::SVGAnimateElementBase::calculateToAtEndOfDurationValue):
(WebCore::SVGAnimateElementBase::resetAnimatedType):
(WebCore::SVGAnimateElementBase::calculateAnimatedValue):
(WebCore::SVGAnimateElementBase::applyResultsToTarget):
(WebCore::SVGAnimateElementBase::clearAnimatedType):
(WebCore::SVGAnimateElementBase::calculateDistance):
(WebCore::SVGAnimateElementBase::attributeAnimationController): Deleted.
(WebCore::SVGAnimateElementBase::determineAnimatedPropertyType const): Deleted.
(WebCore::SVGAnimateElementBase::isAdditive const): Deleted.

  • svg/SVGAnimateElementBase.h:

(WebCore::SVGAnimateElementBase::animatorIfExists const):
(WebCore::SVGAnimateElementBase::attributeAnimationControllerIfExists const): Deleted.
The order of the functions was changed to resemble the order of running
the animation:

-- Setting the animation range
-- Starting the animation
-- Progressing the animation
-- Applying the the progressed animaVal() to the target element
-- Stopping the animation

  • svg/SVGAnimateMotionElement.cpp:

(WebCore::SVGAnimateMotionElement::calculateDistance):

  • svg/SVGAnimateMotionElement.h:
  • svg/SVGAnimationElement.cpp:

(WebCore::SVGAnimationElement::calculateKeyTimesForCalcModePaced):
(WebCore::SVGAnimationElement::shouldApplyAnimation): Deleted.

  • svg/SVGAnimationElement.h:

(WebCore::SVGAnimationElement::attributeRegistry): Deleted.
(WebCore::SVGAnimationElement::calculateDistance): Deleted.

  • svg/SVGAttributeAnimationController.cpp: Removed.
  • svg/SVGAttributeAnimationController.h: Removed.
  • svg/SVGAttributeAnimationControllerBase.cpp: Removed.
  • svg/SVGAttributeAnimationControllerBase.h: Removed.
  • svg/SVGCircleElement.h:
  • svg/SVGClipPathElement.h:
  • svg/SVGComponentTransferFunctionElement.h:
  • svg/SVGCursorElement.h:
  • svg/SVGDefsElement.h:
  • svg/SVGElement.cpp:

(WebCore::SVGElement::synchronizeAttribute):
(WebCore::SVGElement::synchronizeAllAttributes):
(WebCore::SVGElement::synchronizeAllAnimatedSVGAttribute):
(WebCore::createAttributeNameToAnimatedPropertyTypeMap): Deleted.
(WebCore::attributeNameToAnimatedPropertyTypeMap): Deleted.
(WebCore::createCSSPropertyWithSVGDOMNameToAnimatedPropertyTypeMap): Deleted.
(WebCore::cssPropertyWithSVGDOMNameToAnimatedPropertyTypeMap): Deleted.
(WebCore::SVGElement::animatedPropertyTypesForAttribute): Deleted.
(WebCore::SVGElement::synchronizeAnimatedSVGAttribute const): Deleted.
(WebCore::SVGElement::isAnimatableCSSProperty): Deleted.
(WebCore::SVGElement::isPresentationAttributeWithSVGDOM): Deleted.

  • svg/SVGElement.h:

(WebCore::SVGElement::attributeOwnerProxy const): Deleted.
(WebCore::SVGElement::attributeRegistry): Deleted.
(WebCore::SVGElement::synchronizeAttribute): Deleted.
(WebCore::SVGElement::synchronizeAttributes): Deleted.
(WebCore::SVGElement::animatedTypes const): Deleted.
(WebCore::SVGElement::lookupAnimatedProperty const): Deleted.
(WebCore::SVGElement::lookupOrCreateAnimatedProperty): Deleted.
(WebCore::SVGElement::lookupOrCreateAnimatedProperties): Deleted.
(WebCore::SVGElement::isKnownAttribute): Deleted.

  • svg/SVGEllipseElement.h:
  • svg/SVGExternalResourcesRequired.h:

(WebCore::SVGExternalResourcesRequired::attributeRegistry): Deleted.
(WebCore::SVGExternalResourcesRequired::attributeOwnerProxy): Deleted.

  • svg/SVGFEBlendElement.h:
  • svg/SVGFEColorMatrixElement.h:
  • svg/SVGFEComponentTransferElement.h:
  • svg/SVGFECompositeElement.h:
  • svg/SVGFEConvolveMatrixElement.h:
  • svg/SVGFEDiffuseLightingElement.h:
  • svg/SVGFEDisplacementMapElement.h:
  • svg/SVGFEDropShadowElement.h:
  • svg/SVGFEGaussianBlurElement.h:
  • svg/SVGFEImageElement.h:
  • svg/SVGFELightElement.h:
  • svg/SVGFEMergeNodeElement.h:
  • svg/SVGFEMorphologyElement.h:
  • svg/SVGFEOffsetElement.h:
  • svg/SVGFESpecularLightingElement.h:
  • svg/SVGFETileElement.h:
  • svg/SVGFETurbulenceElement.h:
  • svg/SVGFilterElement.h:
  • svg/SVGFilterPrimitiveStandardAttributes.h:

(WebCore::SVGFilterPrimitiveStandardAttributes::attributeRegistry): Deleted.

  • svg/SVGFitToViewBox.h:

(WebCore::SVGFitToViewBox::attributeRegistry): Deleted.

  • svg/SVGFontElement.h:
  • svg/SVGForeignObjectElement.h:
  • svg/SVGGElement.h:
  • svg/SVGGeometryElement.h:
  • svg/SVGGlyphRefElement.h:
  • svg/SVGGradientElement.cpp:

(WebCore::SVGGradientElement::svgAttributeChanged):

  • svg/SVGGradientElement.h:

(WebCore::SVGGradientElement::attributeRegistry): Deleted.
(WebCore::SVGGradientElement::isKnownAttribute): Deleted.

  • svg/SVGGraphicsElement.h:

(WebCore::SVGGraphicsElement::attributeRegistry): Deleted.

  • svg/SVGImageElement.h:
  • svg/SVGLineElement.h:
  • svg/SVGLinearGradientElement.h:
  • svg/SVGMPathElement.h:
  • svg/SVGMarkerElement.cpp:
  • svg/SVGMarkerElement.h:
  • svg/SVGMaskElement.h:
  • svg/SVGPathElement.h:
  • svg/SVGPatternElement.h:
  • svg/SVGPolyElement.h:
  • svg/SVGRadialGradientElement.h:
  • svg/SVGRectElement.h:
  • svg/SVGSVGElement.h:
  • svg/SVGScriptElement.h:
  • svg/SVGStopElement.h:
  • svg/SVGSwitchElement.h:
  • svg/SVGSymbolElement.h:
  • svg/SVGTRefElement.h:
  • svg/SVGTests.cpp:

(WebCore::SVGTests::svgAttributeChanged):
(WebCore::SVGTests::attributeRegistry): Deleted.
(WebCore::SVGTests::isKnownAttribute): Deleted.

  • svg/SVGTests.h:
  • svg/SVGTextContentElement.cpp:
  • svg/SVGTextContentElement.h:

(WebCore::SVGTextContentElement::attributeRegistry): Deleted.

  • svg/SVGTextPathElement.h:
  • svg/SVGTextPositioningElement.h:

(WebCore::SVGTextPositioningElement::attributeRegistry): Deleted.

  • svg/SVGURIReference.cpp:

(WebCore::SVGURIReference::SVGURIReference):
(WebCore::SVGURIReference::attributeRegistry): Deleted.

  • svg/SVGURIReference.h:
  • svg/SVGUseElement.h:
  • svg/SVGViewElement.h:
  • svg/SVGViewSpec.cpp:

(WebCore::SVGViewSpec::SVGViewSpec):

  • svg/SVGViewSpec.h:
  • svg/SVGZoomAndPanType.h:
  • svg/properties/SVGAnimatedListPropertyTearOff.h: Removed.
  • svg/properties/SVGAnimatedPropertyAnimator.h:
  • svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
  • svg/properties/SVGAnimatedPropertyPairAnimator.h:
  • svg/properties/SVGAnimatedPropertyPairAnimatorImpl.h:
  • svg/properties/SVGAnimatedPropertyTearOff.h: Removed.
  • svg/properties/SVGAnimatedPropertyType.h: Removed.
  • svg/properties/SVGAnimationAdditiveFunction.h:

(WebCore::SVGAnimationAdditiveFunction::animate):
(WebCore::SVGAnimationAdditiveFunction::progress): Deleted.

  • svg/properties/SVGAnimationAdditiveListFunctionImpl.h:

(WebCore::SVGAnimationLengthListFunction::animate):
(WebCore::SVGAnimationNumberListFunction::animate):
(WebCore::SVGAnimationPointListFunction::animate):
(WebCore::SVGAnimationTransformListFunction::animate):
(WebCore::SVGAnimationLengthListFunction::progress): Deleted.
(WebCore::SVGAnimationNumberListFunction::progress): Deleted.
(WebCore::SVGAnimationPointListFunction::progress): Deleted.
(WebCore::SVGAnimationTransformListFunction::progress): Deleted.

  • svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:

(WebCore::SVGAnimationAngleFunction::animate):
(WebCore::SVGAnimationColorFunction::animate):
(WebCore::SVGAnimationIntegerFunction::animate):
(WebCore::SVGAnimationLengthFunction::animate):
(WebCore::SVGAnimationNumberFunction::animate):
(WebCore::SVGAnimationPathSegListFunction::animate):
(WebCore::SVGAnimationRectFunction::animate):
(WebCore::SVGAnimationAngleFunction::progress): Deleted.
(WebCore::SVGAnimationColorFunction::progress): Deleted.
(WebCore::SVGAnimationIntegerFunction::progress): Deleted.
(WebCore::SVGAnimationLengthFunction::progress): Deleted.
(WebCore::SVGAnimationNumberFunction::progress): Deleted.
(WebCore::SVGAnimationPathSegListFunction::progress): Deleted.
(WebCore::SVGAnimationRectFunction::progress): Deleted.

  • svg/properties/SVGAnimationDiscreteFunction.h:

(WebCore::SVGAnimationDiscreteFunction::animate):
(WebCore::SVGAnimationDiscreteFunction::progress): Deleted.

  • svg/properties/SVGAnimationFunction.h:

(WebCore::SVGAnimationFunction::calculateDistance const):
-- Rename the 'progress()' functions of SVGAttributeAnimator and SVGAnimationFunction

to 'animate()'.

-- Rename the argument 'percentage' of these function to 'progress'
-- Make calculateDistance return Optional<float> so it does not have to

return -1 in case of error.

  • svg/properties/SVGAttribute.h: Removed.
  • svg/properties/SVGAttributeAccessor.h: Removed.
  • svg/properties/SVGAttributeAnimator.h:

(WebCore::SVGAttributeAnimator::calculateDistance const):

  • svg/properties/SVGAttributeOwnerProxy.cpp: Removed.
  • svg/properties/SVGAttributeOwnerProxy.h: Removed.
  • svg/properties/SVGAttributeOwnerProxyImpl.h: Removed.
  • svg/properties/SVGAttributeRegistry.h: Removed.
  • svg/properties/SVGLegacyAnimatedProperty.cpp: Removed.
  • svg/properties/SVGLegacyAnimatedProperty.h: Removed.
  • svg/properties/SVGLegacyProperty.h: Removed.
  • svg/properties/SVGListProperty.h: Removed.
  • svg/properties/SVGListPropertyTearOff.h: Removed.
  • svg/properties/SVGPrimitivePropertyAnimator.h:
  • svg/properties/SVGProperty.h:
  • svg/properties/SVGPropertyAnimator.h:
  • svg/properties/SVGPropertyTearOff.h: Removed.
  • svg/properties/SVGValuePropertyAnimator.h:
  • svg/properties/SVGValuePropertyListAnimator.h:
3:04 PM Changeset in webkit [243829] by commit-queue@webkit.org
  • 12 edits in trunk/Source

Add SPI to disable legacy TLS fallback
https://bugs.webkit.org/show_bug.cgi?id=196549
<rdar://44979744>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-04-03
Reviewed by Geoffrey Garen.

Source/WebCore/PAL:

  • pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

(WebKit::NetworkSessionCreationParameters::privateSessionParameters):
(WebKit::NetworkSessionCreationParameters::encode const):
(WebKit::NetworkSessionCreationParameters::decode):

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _setAllowsTLSFallback:]):
(-[WKWebsiteDataStore _allowsTLSFallback]):

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

(WebKit::WebProcessPool::ensureNetworkProcess):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::setSourceApplicationSecondaryIdentifier):
(WebKit::WebsiteDataStore::setAllowsTLSFallback):
(WebKit::WebsiteDataStore::setSourceApplicationBundleIdentifier):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

(WebKit::WebsiteDataStore::allowsTLSFallback const):
(WebKit::WebsiteDataStore::networkingHasBegun):
(WebKit::WebsiteDataStore::finalizeApplicationIdentifiers): Deleted.

2:46 PM Changeset in webkit [243828] by mmaxfield@apple.com
  • 6 edits
    2 adds in trunk

Documents can be destroyed before their CSSFontFaceSet is destroyed
https://bugs.webkit.org/show_bug.cgi?id=195830

Reviewed by Darin Adler.

Source/WebCore:

CSSFontFaceSet has a raw pointer to its owning document. JS can keep the CSSFontFaceSet alive (by using FontFaceSet)
and can destroy the document at any time. When the document is destroyed, the link between the two objects needs to
be severed.

Test: fast/text/font-face-set-destroy-document.html

  • css/CSSFontFace.cpp:

(WebCore::CSSFontFace::CSSFontFace):

  • css/CSSFontFace.h:
  • css/CSSFontFaceSet.cpp:

(WebCore::CSSFontFaceSet::CSSFontFaceSet):
(WebCore::CSSFontFaceSet::ensureLocalFontFacesForFamilyRegistered):

  • css/CSSFontFaceSet.h:
  • css/CSSFontSelector.cpp:

(WebCore::CSSFontSelector::CSSFontSelector):
(WebCore::CSSFontSelector::addFontFaceRule):

  • css/CSSFontSelector.h:
  • css/FontFace.cpp:

(WebCore::FontFace::FontFace):

LayoutTests:

  • fast/text/font-face-set-destroy-document-expected.html: Added.
  • fast/text/font-face-set-destroy-document.html: Added.
2:29 PM Changeset in webkit [243827] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-but-access-from-wrong-frame.html is a flaky timeout
https://bugs.webkit.org/show_bug.cgi?id=194164

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Updating test expectations for flaky timeout
2:03 PM Changeset in webkit [243826] by Devin Rousso
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Single click on links in non-read-only TextEditors should not follow links
https://bugs.webkit.org/show_bug.cgi?id=123364
<rdar://problem/15323913>

Reviewed by Timothy Hatcher.

  • UserInterface/Base/Main.js:

(WI._updateModifierKeys):
Add classes to the body whenever alt, shift, or ctrl are pressed.

  • UserInterface/Views/CodeMirrorEditor.js:

(WI.CodeMirrorEditor.create):
Add a read-only class if the CodeMirror is readonly.

  • UserInterface/Views/SyntaxHighlightingDefaultTheme.css:

(.cm-s-default .cm-link,):
(.read-only.cm-s-default .cm-link:hover,):
(.cm-s-default .cm-link:hover,): Deleted.

  • UserInterface/Views/TextEditor.js:

(WI.TextEditor.prototype.set readOnly):
(WI.TextEditor.prototype._openClickedLinks):

1:49 PM Changeset in webkit [243825] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

Rebaseline scrollingcoordinator/scrolling-tree/fixed-inside-frame.html
https://bugs.webkit.org/show_bug.cgi?id=195254

Unreviewed test gardening.

  • scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt: Rebaselined test
1:37 PM Changeset in webkit [243824] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebCore

Follow up fix for r243807: Use MarkedArgumentBuffer instead of Vector for JSValue
https://bugs.webkit.org/show_bug.cgi?id=196547

Reviewed by Geoffrey Garen.

JSValue in Vector could be garbage collected because GC doesn't know Vector memory on C++ heap.

  • bindings/js/JSIDBRequestCustom.cpp:

(WebCore::JSIDBRequest::result const):

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

[ews-app] Status bubble should not display certain infrastructure status messages
https://bugs.webkit.org/show_bug.cgi?id=196550

Reviewed by Lucas Forschler.

Do not display the steps which are un-needed for end-user. This information is still avaiable
if the user click on the bubble and look at the Buildbot build.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble._steps_messages):
(StatusBubble._should_display_step): Method to decide whether to display the step or not.

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

[ews-build] Use https for sending data to ews-app
https://bugs.webkit.org/show_bug.cgi?id=196492

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/events.py:
1:08 PM Changeset in webkit [243821] by Chris Dumez
  • 4 edits in trunk

HTML fragment serialization should not strip whitespace from URL attribute values
https://bugs.webkit.org/show_bug.cgi?id=196551

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline WPT test now that all checks are passing. This test was already passing
in Gecko and Blink.

  • web-platform-tests/domparsing/innerhtml-mxss.sub-expected.txt:

Source/WebCore:

HTML fragment serialization should not strip whitespace from URL attribute values as per:

WebKit was stripping such whitespace, Gecko and Blink are not. Align WebKit with other
browser engines and the specification.

No new tests, rebaselined existing test.

  • editing/MarkupAccumulator.cpp:

(WebCore::MarkupAccumulator::appendQuotedURLAttributeValue):

1:04 PM Changeset in webkit [243820] by rniwa@webkit.org
  • 9 edits in trunk/Source/WebCore

Crash in HTMLCanvasElement::createContext2d after the element got adopted to a new document
https://bugs.webkit.org/show_bug.cgi?id=196527

Reviewed by Antti Koivisto.

We need to update CanvasBase::m_scriptExecutionContext when HTMLCanvasElement moves from
one document to another. Fixed the bug by making CanvasBase::scriptExecutionContext make
a virtual function call instead of directly storing a raw pointer. In HTMLCanvasElement,
we use Node::scriptExecutionContext(). Use ContextDestructionObserver in CustomPaintCanvas
and OffscreenCanvas instead of a raw pointer.

Unfortunately, no new tests since there is no reproducible test case.

  • html/CanvasBase.cpp:

(WebCore::CanvasBase::CanvasBase):

  • html/CanvasBase.h:

(WebCore::CanvasBase::scriptExecutionContext const):

  • html/CustomPaintCanvas.cpp:

(WebCore::CustomPaintCanvas::CustomPaintCanvas):

  • html/CustomPaintCanvas.h:
  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::HTMLCanvasElement):

  • html/HTMLCanvasElement.h:
  • html/OffscreenCanvas.cpp:

(WebCore::OffscreenCanvas::OffscreenCanvas):

  • html/OffscreenCanvas.h:
12:47 PM Changeset in webkit [243819] by mmaxfield@apple.com
  • 33 edits
    4 deletes in trunk

Remove support for -apple-trailing-word
https://bugs.webkit.org/show_bug.cgi?id=196525

Reviewed by Zalan Bujtas.

This CSS property is nonstandard and not used.

.:

  • Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

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

(WebCore::ComputedStyleExtractor::valueForPropertyinStyle):

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::operator TrailingWord const): Deleted.

  • css/CSSProperties.json:
  • css/CSSValueKeywords.in:
  • css/parser/CSSParserFastPaths.cpp:

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::CSSParserFastPaths::isKeywordPropertyID):

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForStyle):

  • rendering/SimpleLineLayoutCoverage.cpp:

(WebCore::SimpleLineLayout::printReason):

  • rendering/SimpleLineLayoutCoverage.h:
  • rendering/line/BreakingContext.h:

(WebCore::BreakingContext::BreakingContext):
(WebCore::BreakingContext::lineBreak):
(WebCore::BreakingContext::clearLineBreakIfFitsOnLine):
(WebCore::BreakingContext::commitLineBreakClear):
(WebCore::BreakingContext::commitLineBreakAtCurrentWidth):
(WebCore::BreakingContext::handleBR):
(WebCore::BreakingContext::handleFloat):
(WebCore::BreakingContext::handleText):
(WebCore::BreakingContext::handleEndOfLine):
(WebCore::BreakingContext::InlineIteratorHistory::InlineIteratorHistory): Deleted.
(WebCore::BreakingContext::InlineIteratorHistory::push): Deleted.
(WebCore::BreakingContext::InlineIteratorHistory::update): Deleted.
(WebCore::BreakingContext::InlineIteratorHistory::renderer const): Deleted.
(WebCore::BreakingContext::InlineIteratorHistory::offset const): Deleted.
(WebCore::BreakingContext::InlineIteratorHistory::nextBreakablePosition const): Deleted.
(WebCore::BreakingContext::InlineIteratorHistory::atTextParagraphSeparator const): Deleted.
(WebCore::BreakingContext::InlineIteratorHistory::previousInSameNode const): Deleted.
(WebCore::BreakingContext::InlineIteratorHistory::get const): Deleted.
(WebCore::BreakingContext::InlineIteratorHistory::current const): Deleted.
(WebCore::BreakingContext::InlineIteratorHistory::historyLength const): Deleted.
(WebCore::BreakingContext::InlineIteratorHistory::moveTo): Deleted.
(WebCore::BreakingContext::InlineIteratorHistory::increment): Deleted.
(WebCore::BreakingContext::InlineIteratorHistory::clear): Deleted.
(WebCore::BreakingContext::optimalLineBreakLocationForTrailingWord): Deleted.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::trailingWord const): Deleted.
(WebCore::RenderStyle::setTrailingWord): Deleted.
(WebCore::RenderStyle::initialTrailingWord): Deleted.

  • rendering/style/RenderStyleConstants.h:
  • rendering/style/StyleRareInheritedData.cpp:

(WebCore::StyleRareInheritedData::StyleRareInheritedData):
(WebCore::StyleRareInheritedData::operator== const):

  • rendering/style/StyleRareInheritedData.h:

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebInspectorUI:

  • UserInterface/Models/CSSKeywordCompletions.js:

Source/WebKit:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • Scripts/webkitperl/FeatureList.pm:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

  • fast/text/trailing-word-expected.html: Removed.
  • fast/text/trailing-word.html: Removed.
  • platform/gtk/TestExpectations:
  • platform/mac/fast/text/trailing-word-parse-expected.txt: Removed.
  • platform/mac/fast/text/trailing-word-parse.html: Removed.
  • platform/win/TestExpectations:
12:38 PM Changeset in webkit [243818] by youenn@apple.com
  • 4 edits in trunk/Source/WebCore

Use makePendingActivity in DOMCache
https://bugs.webkit.org/show_bug.cgi?id=196515

Reviewed by Geoffrey Garen.

No change of behavior, just modernizing the code.

  • Modules/cache/DOMCache.cpp:

(WebCore::DOMCache::retrieveRecords):
(WebCore::DOMCache::batchDeleteOperation):
(WebCore::DOMCache::batchPutOperation):

  • Modules/cache/DOMCacheStorage.cpp:

(WebCore::DOMCacheStorage::match):

12:13 PM Changeset in webkit [243817] by Chris Dumez
  • 5 edits in trunk

[XML Parser] Insert the error message block when stopping parsing and an error occurred
https://bugs.webkit.org/show_bug.cgi?id=196546

Reviewed by Alexey Proskuryakov.

LayoutTests/imported/w3c:

Rebaseline WPT test now that all checks are passing. Both Gecko and Blink already passed
these checks.

  • web-platform-tests/domparsing/DOMParser-parseFromString-xml-parsererror-expected.txt:

Source/WebCore:

Insert the error message block when stopping parsing and an error occurred. This is based
on the following Blink commit:

No new tests, rebaselined existing test.

  • xml/parser/XMLDocumentParser.cpp:

(WebCore::XMLDocumentParser::end):
Avoid showing the error message block twice in some cases. No need to ever call
insertErrorMessageBlock() if we're already stopped since stopParsing() already
takes care of doing this.

  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::XMLDocumentParser::stopParsing):
When XMLDocumentParser::stopParsing() is called to stop parsing, call
insertErrorMessageBlock() to insert the <parsererror> element if an error
occurred.

11:05 AM Changeset in webkit [243816] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught Exception: TypeError: this._computedStyleSection.focus is not a function. (In 'this._computedStyleSection.focus()', 'this._computedStyleSection.focus' is undefined)
https://bugs.webkit.org/show_bug.cgi?id=192108
<rdar://problem/46685392>

Reviewed by Devin Rousso.

This patch fixes the uncaught exception. Tabbing to and from "Properties" section continues
working the same way as before the patch.

  • UserInterface/Views/ComputedStyleDetailsPanel.js:

(WI.ComputedStyleDetailsPanel.prototype.focusFirstSection): Deleted.
(WI.ComputedStyleDetailsPanel.prototype.focusLastSection): Deleted.

11:03 AM Changeset in webkit [243815] by Kocsen Chung
  • 1 edit in trunk/Tools/Scripts/webkitpy/common/config/contributors.json

Adding myself to contributors.json.

Unreviewed contributors.json update.

10:54 AM Changeset in webkit [243814] by youenn@apple.com
  • 2 edits in trunk/Tools

Add a test for DOMCache on multiple browsing in case of private browsing
https://bugs.webkit.org/show_bug.cgi?id=196524

Reviewed by Alex Christensen.

  • TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:

(-[SWMessageHandlerForCacheStorage userContentController:didReceiveScriptMessage:]):

10:48 AM Changeset in webkit [243813] by Chris Dumez
  • 8 edits
    11 adds
    1 delete in trunk/LayoutTests/imported/w3c

Re-sync web-platform-tests/domparsing from upstream
https://bugs.webkit.org/show_bug.cgi?id=196544

Reviewed by Alex Christensen.

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

  • web-platform-tests/domparsing/*: Updated
  • web-platform-tests/interfaces/DOM-Parsing.idl: Added.
10:45 AM Changeset in webkit [243812] by youenn@apple.com
  • 6 edits in trunk/Source/WebCore

Clear WorkerCacheStorageConnection callbacks on WorkerGlobalScope termination
https://bugs.webkit.org/show_bug.cgi?id=196521

Reviewed by Alex Christensen.

When the worker global scope is preparing for termination,
all ActiveDOMObjects are stopped.
At that time, the completion handlers related to
WorkerCacheStorageConnection should be cleared to be able to free
memory, and as they are now no-op anyway.

We clear the completion handlers once the active DOM objects are stopped
to limit the processing triggered by clearing them.

Introducing a new Stopped error code to handle this case.
Add an assertion so that this error does not surface to JS.

Covered by existing tests.

  • Modules/cache/CacheStorageConnection.cpp:

(WebCore::CacheStorageConnection::clearPendingRequests):

  • Modules/cache/CacheStorageConnection.h:
  • Modules/cache/DOMCacheEngine.cpp:

(WebCore::DOMCacheEngine::errorToException):

  • Modules/cache/DOMCacheEngine.h:
  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::prepareForTermination):
(WebCore::WorkerGlobalScope::stopIndexedDatabase):

10:37 AM Changeset in webkit [243811] by youenn@apple.com
  • 7 edits in trunk/Source

Adopt new VCP SPI
https://bugs.webkit.org/show_bug.cgi?id=193357
<rdar://problem/43656651>

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

Enable VCP through VTB API with specific encoder id.

  • Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.cpp:
  • Source/webrtc/sdk/WebKit/VideoProcessingSoftLink.h:
  • Source/webrtc/sdk/WebKit/WebKitUtilities.mm:

(webrtc::setApplicationStatus):

  • Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm:

(-[RTCSingleVideoEncoderH264 resetCompressionSessionWithPixelFormat:]):

Source/WebCore:

Covered by existing tests.

  • testing/Internals.cpp:

(WebCore::Internals::supportsVCPEncoder):

10:27 AM Changeset in webkit [243810] by Chris Dumez
  • 6 edits in trunk

Remove legacy webkitRequestAnimationFrame time quirk
https://bugs.webkit.org/show_bug.cgi?id=196458
<rdar://problem/49490207>

Reviewed by Simon Fraser.

Source/WebCore:

Remove legacy webkitRequestAnimationFrame time quirk and log a deprecation
warning whenever webkitRequestAnimationFrame is called.

  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::serviceScriptedAnimations):

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::requestAnimationFrame):
(WebCore::DOMWindow::webkitRequestAnimationFrame):

LayoutTests:

Rebaseline webkitRequestAnimationFrame layout test now that we log a deprecation
warning.

  • fast/animation/request-animation-frame-prefix-expected.txt:
10:23 AM Changeset in webkit [243809] by commit-queue@webkit.org
  • 4 edits in trunk

Resurrect and fix layout test http/tests/adClickAttribution/store-ad-click-attribution.html
https://bugs.webkit.org/show_bug.cgi?id=196476

Patch by Alex Christensen <achristensen@webkit.org> on 2019-04-03
Reviewed by Chris Dumez.

Source/WebKit:

Re-apply a change I reverted in r241754 now that it's safe to do so.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didCommitLoadForFrame):

LayoutTests:

  • http/tests/adClickAttribution/store-ad-click-attribution-expected.txt:
10:06 AM Changeset in webkit [243808] by commit-queue@webkit.org
  • 14 edits
    1 copy
    3 adds in trunk

[iOS] Should be able to dismiss picker or popover using the keyboard
https://bugs.webkit.org/show_bug.cgi?id=196272
<rdar://problem/48943170>

Patch by Daniel Bates <dabates@apple.com> on 2019-04-03
Reviewed by Wenson Hsieh.

Source/WebKit:

Intercept key events and route them to the current input peripheral (if we have one). Add a base key event handler
for all form peripherals that dismisses the accessory when either the Escape key is pressed or Command + . is pressed.
I will fix this issue for the file upload picker/popover in <https://bugs.webkit.org/show_bug.cgi?id=196287>.

  • SourcesCocoa.txt: Add file WKFormPeripheralBase.mm.
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView endEditingAndUpdateFocusAppearanceWithReason]): Added.
(-[WKContentView resignFirstResponderForWebView]): Write in terms of -endEditingAndUpdateFocusAppearance.
(-[WKContentView inputView]): Code style nit while I am here; add an empty line to demarcate the "crazy"
code that the FIXME is referring to and should ideally be removed from the code that is sane to always do.
(-[WKContentView accessoryDone]): When the accessory is dismissed via the Done button (iPhone) or by pressing
Escape or Command + . using a hardware keyboard (iPhone or iPad) then end the current editing session, but
do not resign first responder status as the page activation state should not be changed.
(-[WKContentView _handleKeyUIEvent:]): Bring back this code when building with USE(UIKIT_KEYBOARD_ADDITIONS)
as we need to route key events to the input peripheral (if we have one). If the input peripheral handles it
then we're done: no need to let UIKit or WebKit handle it when building with USE(UIKIT_KEYBOARD_ADDITIONS),
respectively. If the input peripheral does not handle it then do what we do now.
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]):
If the element is re-focused and we have an input peripheral then we want to ensure we are first responder,
reveal the focused element, update the accessory and tell the peripheral that editing has begun (again).
For all other element re-focusing where we don't have a peripheral do what we do now. Also, update _isEditable
to reflect whether the focused element contains selectable text. This is what UIKit wants to know when it queries
-isEditable. Now that we no longer blur the focused element on iPad when the popover is dismissed and keep the
peripheral until there is a focus change we need to ensure that we give the correct answer to UIKit on view
editability. Otherwise, UIKit thinks it needs to update the text selection state when a popup button is tapped
again (as part of its gesture recognizer logic) and this causes an assertion failure in UIKit after it calls back
into us to ask for selection details, which we correctly respond with the equivalent of "we have none" and is
not the answer UIKit expects since we told it we are editable. (Currently we manage to get away with telling UIKit
we are always editable because it is not possible to perform a selection operation when we have a popover open.
Closing the popover blurs the element, setting -isEditable to NO and deallocates the peripheral avoiding this issue).

  • UIProcess/ios/forms/WKFormColorControl.h:
  • UIProcess/ios/forms/WKFormColorControl.mm:

(-[WKColorPopover controlEndEditing]): Dismiss the popover.
(-[WKFormColorControl initWithView:]): Modified to call base class initializer.
(-[WKFormColorControl assistantView]): Deleted.
(-[WKFormColorControl beginEditing]): Deleted.
(-[WKFormColorControl endEditing]): Deleted.

  • UIProcess/ios/forms/WKFormInputControl.h:
  • UIProcess/ios/forms/WKFormInputControl.mm:

(-[WKFormInputControl initWithView:]): Modified to call base class initializer.
(-[WKFormInputControl dateTimePickerCalendarType]): Write in terms of self.control.
(-[WKDateTimePopover controlEndEditing]): Dismiss the popover and tell the controller that editing ended.
(-[WKFormInputControl beginEditing]): Deleted.
(-[WKFormInputControl endEditing]): Deleted.
(-[WKFormInputControl assistantView]): Deleted.

  • UIProcess/ios/forms/WKFormPeripheral.h:
  • UIProcess/ios/forms/WKFormPeripheralBase.h: Added.
  • UIProcess/ios/forms/WKFormPeripheralBase.mm: Added.

(-[WKFormPeripheralBase initWithView:control:]): Take ownership of the passed WKFormControl.
(-[WKFormPeripheralBase beginEditing]): Turn around and tell the control.
(-[WKFormPeripheralBase endEditing]): Ditto.
(-[WKFormPeripheralBase assistantView]): Ditto.
(-[WKFormPeripheralBase control]): Return the control.
(-[WKFormPeripheralBase handleKeyEvent:]): Dismiss the accessory (in the same way we dismiss when the Done
button is pressed on iPhone) on keydown of the Escape key or when we receive a UIKeyInputEscape event (for
Command + .).

  • UIProcess/ios/forms/WKFormSelectControl.h:
  • UIProcess/ios/forms/WKFormSelectControl.mm:

(-[WKFormSelectControl initWithView:]): Modified to call base class initializer.
(-[WKFormSelectControl selectRow:inComponent:extendingSelection:]): Write in terms of self.control.
(-[WKFormSelectControl selectFormPopoverTitle]): Ditto.
(-[WKFormSelectControl assistantView]): Deleted.
(-[WKFormSelectControl beginEditing]): Deleted.
(-[WKFormSelectControl endEditing]): Deleted.

  • UIProcess/ios/forms/WKFormSelectPopover.mm:

(-[WKSelectPopover controlEndEditing]): Dismiss the popover.

  • WebKit.xcodeproj/project.pbxproj: Add files WKFormPeripheralBase.{h, mm}.

LayoutTests:

Add test to ensure that pressing Escape or Command + . dismisses a picker.

  • fast/forms/ios/dismiss-picker-using-keyboard-expected.txt: Added.
  • fast/forms/ios/dismiss-picker-using-keyboard.html: Added.
10:03 AM Changeset in webkit [243807] by sihui_liu@apple.com
  • 31 edits
    3 adds in trunk

Blob type cannot be stored correctly in IDB when IDBObjectStore has autoIncrement and keyPath options
https://bugs.webkit.org/show_bug.cgi?id=196128

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Updated test expectations to PASS.

  • web-platform-tests/IndexedDB/nested-cloning-large-expected.txt:
  • web-platform-tests/IndexedDB/nested-cloning-large-multiple-expected.txt:
  • web-platform-tests/IndexedDB/nested-cloning-small-expected.txt:

Source/WebCore:

If a key is auto-generated, it should become a property of the value object. Network process would perform the
key injection by deserializing IDBValue into script value, setting the property, serializing the result and
storing it in a database record. But network process does not have a JSDOMGlobalObject, so it would fail to
deserialize types including Blob and File.

To solve this issue, we move the key injection to web process and let network process store the original value
it gets. In this case, when web process asks for some value, network process should return key, value and key
path so that web process can decide whether it should perform a key injection before returning the result. Note
that the auto-generated key would always be stored as the key in a ObjectStore record.

Test: storage/indexeddb/modern/objectstore-autoincrement-types.html

  • Modules/indexeddb/IDBCursor.cpp:

(WebCore::IDBCursor::setGetResult):

  • Modules/indexeddb/IDBCursor.h:

(WebCore::IDBCursor::primaryKeyPath):

  • Modules/indexeddb/IDBGetAllResult.cpp:

(WebCore::IDBGetAllResult::isolatedCopy):
(WebCore::IDBGetAllResult::addKey):
(WebCore::IDBGetAllResult::addValue):
(WebCore::IDBGetAllResult::keys const):
(WebCore::IDBGetAllResult::values const):
(WebCore::IDBGetAllResult::allBlobFilePaths const):
(WebCore::isolatedCopyOfVariant): Deleted.

  • Modules/indexeddb/IDBGetAllResult.h: Introduce an IDBKeyPath parameter. Also replace Variant with two Vectors,

because we only needed to store either key or value before, and now the stored value could be incomplete.
(WebCore::IDBGetAllResult::IDBGetAllResult):
(WebCore::IDBGetAllResult::keyPath const):
(WebCore::IDBGetAllResult::encode const):
(WebCore::IDBGetAllResult::decode):

  • Modules/indexeddb/IDBGetResult.cpp:

(WebCore::IDBGetResult::setValue):

  • Modules/indexeddb/IDBGetResult.h:

(WebCore::IDBGetResult::IDBGetResult):
(WebCore::IDBGetResult::keyPath const):

  • Modules/indexeddb/IDBObjectStore.cpp:
  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::setResult):
(WebCore::IDBRequest::setResultToStructuredClone):

  • Modules/indexeddb/IDBRequest.h:
  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::didGetAllRecordsOnServer):
(WebCore::IDBTransaction::didGetRecordOnServer):

  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:

(WebCore::IDBServer::MemoryIDBBackingStore::getRecord):

  • Modules/indexeddb/server/MemoryIndex.cpp:

(WebCore::IDBServer::MemoryIndex::getResultForKeyRange const):
(WebCore::IDBServer::MemoryIndex::getAllRecords const):

  • Modules/indexeddb/server/MemoryIndexCursor.cpp:

(WebCore::IDBServer::MemoryIndexCursor::currentData):

  • Modules/indexeddb/server/MemoryObjectStore.cpp:

(WebCore::IDBServer::MemoryObjectStore::updateIndexesForPutRecord):
(WebCore::IDBServer::MemoryObjectStore::populateIndexWithExistingRecords):
(WebCore::IDBServer::MemoryObjectStore::getAllRecords const):

  • Modules/indexeddb/server/MemoryObjectStoreCursor.cpp:

(WebCore::IDBServer::MemoryObjectStoreCursor::currentData):

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::updateOneIndexForAddRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::updateAllIndexesForAddRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::cachedStatementForGetAllObjectStoreRecords):
(WebCore::IDBServer::SQLiteIDBBackingStore::getAllObjectStoreRecords):
(WebCore::IDBServer::SQLiteIDBBackingStore::getAllIndexRecords):
(WebCore::IDBServer::SQLiteIDBBackingStore::getIndexRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey):
(WebCore::IDBServer::SQLiteIDBBackingStore::openCursor):
(WebCore::IDBServer::SQLiteIDBBackingStore::iterateCursor):

  • Modules/indexeddb/server/SQLiteIDBCursor.cpp:

(WebCore::IDBServer::SQLiteIDBCursor::currentData):

  • Modules/indexeddb/server/SQLiteIDBCursor.h:
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd): Remove the key injection from network process.
UniqueIDBDatabase stores any value it gets from IDBClient.

  • Modules/indexeddb/shared/IDBResultData.cpp:

(WebCore::IDBResultData::getResultRef):

  • Modules/indexeddb/shared/IDBResultData.h:
  • bindings/js/IDBBindingUtilities.cpp:

(WebCore::injectIDBKeyIntoScriptValue): If property is read-only, set would fail and injectKeyIntoResult would
return null, but we expect it to return result as long as the property value is the same as target. Therefore,
we can add an early return here.
(WebCore::createKeyPathArray):

(WebCore::generateIndexKeyForValue): We used to generate IndexKey from value stored in database but now the
value gets stored does not include auto-generated key, as we remove the key injection from network process. In
this case if the IDBIndex has the same key path as the auto-generated key, IndexKey would be failed to create
for it cannot extract auto-generated key from value. Since the auto-generated key would always be the key in
database record, we could use value of that key when we find a match in key path.

(WebCore::deserializeIDBValueWithKeyInjection): If the key path in the result is single entry, the key is
probably auto-generated, so we could inject the result key into the result value unconditionally.

  • bindings/js/IDBBindingUtilities.h:
  • bindings/js/JSIDBCursorWithValueCustom.cpp:

(WebCore::JSIDBCursorWithValue::value const):

  • bindings/js/JSIDBRequestCustom.cpp:

(WebCore::JSIDBRequest::result const):

LayoutTests:

  • TestExpectations:
  • storage/indexeddb/modern/objectstore-autoincrement-types-expected.txt: Added.
  • storage/indexeddb/modern/objectstore-autoincrement-types.html: Added.
  • storage/indexeddb/modern/resources/objectstore-autoincrement-types.js: Added.

(next):
(prepareDatabase.event.target.onsuccess):
(prepareDatabase):
(testSteps):

10:00 AM Changeset in webkit [243806] by youenn@apple.com
  • 7 edits in trunk

Resetting quota should take into account third party origins
https://bugs.webkit.org/show_bug.cgi?id=196462

Reviewed by Geoffrey Garen.

Source/WebKit:

When clearing the storage quota, we were resetting it to the default value
without taking care of whether third party or not.
Updated the code to ensure that the default quota is computed based on the origin.

Updated existing test to cover this case.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::clearStorageQuota):
(WebKit::NetworkProcess::setCacheStorageParameters):
(WebKit::NetworkProcess::updateQuotaBasedOnSpaceUsageForTesting):
(WebKit::NetworkProcess::storageQuotaManager):

  • NetworkProcess/NetworkProcess.h:

(WebKit::NetworkProcess::StorageQuotaManagers::defaultQuota const):
(WebKit::NetworkProcess::StorageQuotaManagers::setDefaultQuotas):
(WebKit::NetworkProcess::StorageQuotaManagers::managersPerOrigin):

LayoutTests:

  • http/wpt/cache-storage/quota-third-party.https-expected.txt:
  • http/wpt/cache-storage/quota-third-party.https.html:
  • platform/mac-wk2/TestExpectations:
9:53 AM Changeset in webkit [243805] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Unreviewed gardening, update test expectations

  • platform/gtk/TestExpectations:
9:41 AM WebKitGTK/2.24.x edited by Michael Catanzaro
(diff)
9:40 AM Changeset in webkit [243804] by Michael Catanzaro
  • 10 edits
    4 deletes in trunk

Get rid of HTMLInputElement::setEditingValue
https://bugs.webkit.org/show_bug.cgi?id=196402

Reviewed by Darin Adler.

Source/WebCore:

HTMLInputElement::setEditingValue is only used for Epiphany password autofill. We did it
this way because that's what Chrome uses for autofill, but Apple uses
HTMLInputElement::setValueForUser. Let's switch to that instead, then we can get rid of
setEditingValue.

This fixes logging into ting.com after username and password are autofilled by Epiphany.
Before this change, the login would fail unless you first manually edit either the username
or the password field.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::setEditingValue): Deleted.

  • html/HTMLInputElement.h:
  • testing/Internals.cpp:

(WebCore::Internals::setEditingValue): Deleted.

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

Source/WebKit:

  • WebProcess/InjectedBundle/API/glib/DOM/WebKitDOMElement.cpp:

(webkit_dom_element_html_input_element_set_editing_value):

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

(webkit_dom_html_input_element_set_editing_value):

LayoutTests:

  • fast/forms/editing-value-expected.txt: Removed.
  • fast/forms/editing-value-null-renderer-expected.txt: Removed.
  • fast/forms/editing-value-null-renderer.html: Removed.
  • fast/forms/editing-value.html: Removed.
9:39 AM Changeset in webkit [243803] by Jonathan Bedard
  • 2 edits in trunk/Tools

[ews] Clean out ~/Library/Logs/CoreSimulator/ on reboot
https://bugs.webkit.org/show_bug.cgi?id=196540

Reviewed by Aakash Jain.

  • EWSTools/start-queue-mac.sh: Remove CoreSimulator logs.
9:30 AM Changeset in webkit [243802] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

The following layout tests are flaky failures
imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay.html
imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/error-codes/error.html
https://bugs.webkit.org/show_bug.cgi?id=195466

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations: Updating test expectations for flaky failures
9:14 AM Changeset in webkit [243801] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

Layout Test http/wpt/resource-timing/rt-resources-per-worker.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=180260

Unreviewed test gardening.

  • platform/mac/TestExpectations:
9:02 AM Changeset in webkit [243800] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

Add a WebKit internal feature flag to always enable modern compatibility mode by default
https://bugs.webkit.org/show_bug.cgi?id=196526
<rdar://problem/49532923>

Reviewed by Antoine Quint.

  • Shared/WebPreferences.yaml:
8:58 AM Changeset in webkit [243799] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Missing includes that were previously provided via UnifiedSources
https://bugs.webkit.org/show_bug.cgi?id=196434

Unreviewed build fix.

Patch by Pablo Saavedra <Pablo Saavedra> on 2019-04-03

  • html/InputType.h:
8:22 AM Changeset in webkit [243798] by Wenson Hsieh
  • 9 edits
    1 copy in trunk/Source

Introduce and add plumbing for a website policy for meta viewport tag handling
https://bugs.webkit.org/show_bug.cgi?id=196285

Reviewed by Tim Horton.

Source/WebCore:

Add MetaViewportPolicy to DocumentLoader. See WebKit ChangeLog for more detail.

  • loader/DocumentLoader.h:

(WebCore::DocumentLoader::metaViewportPolicy const):
(WebCore::DocumentLoader::setMetaViewportPolicy):

Source/WebKit:

Add WebsiteMetaViewportPolicy, a bit that can be used to determine whether to respect or ignore the meta
viewport tag and use native web page parameters instead of the default parameters.

  • Shared/WebsiteMetaViewportPolicy.h: Copied from Source/WebKit/Shared/WebsitePoliciesData.h.
  • Shared/WebsitePoliciesData.cpp:

(WebKit::WebsitePoliciesData::encode const):
(WebKit::WebsitePoliciesData::decode):
(WebKit::WebsitePoliciesData::applyToDocumentLoader):

Convert WebKit::WebsiteMetaViewportPolicy into WebCore::MetaViewportPolicy.

  • Shared/WebsitePoliciesData.h:
  • UIProcess/API/APIWebsitePolicies.cpp:

(API::WebsitePolicies::data):

  • UIProcess/API/APIWebsitePolicies.h:

Add additional plumbing for the policy flag.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::resetViewportDefaultConfiguration):

Use native web page parameters if either "shouldIgnoreMetaViewport" is enabled, or the new policy is set.
Eventually, the policy should completely replace the former preference once no internal clients depend on it.

8:02 AM Changeset in webkit [243797] by Wenson Hsieh
  • 10 edits
    2 adds in trunk

Add plumbing for a compatibility mode preference in WebKit
https://bugs.webkit.org/show_bug.cgi?id=196005

Reviewed by Tim Horton.

Source/WebKit:

Add plumbing between the Cocoa API object (WKWebpagePreferences) and the inner C++ API object
(API::WebsitePolicies) for compatibility mode.

  • Shared/WebCompatibilityMode.h: Added.
  • UIProcess/API/APIWebsitePolicies.h:
  • UIProcess/API/Cocoa/WKWebpagePreferences.mm:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::adjustPoliciesForCompatibilityMode):

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WebPageProxyIOS.mm:
  • WebKit.xcodeproj/project.pbxproj:

Tools:

Add new API tests.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/ios/PreferredCompatibilityMode.mm: Added.
6:00 AM Changeset in webkit [243796] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[CoordinatedGraphics] Hidden pages are not suspended after a web view resize
https://bugs.webkit.org/show_bug.cgi?id=196487

Reviewed by Žan Doberšek.

When resizing the window, the hidden tabs are updated too, to avoid flickering or getting the old size when
switching tabs. For that we need to resume painting but we are not suspending it again after the update.

  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:

(WebKit::DrawingAreaCoordinatedGraphics::updateBackingStoreState): Suspend the painting again after a
synchronous update if needed.

5:42 AM Changeset in webkit [243795] by Joseph Pecoraro
  • 9 edits in trunk/Source

Web Inspector: Remote Inspector indicate callback should always happen on the main thread
https://bugs.webkit.org/show_bug.cgi?id=196513
<rdar://problem/49498284>

Reviewed by Devin Rousso.

Source/JavaScriptCore:

  • inspector/remote/cocoa/RemoteInspectorCocoa.mm:

(Inspector::RemoteInspector::receivedIndicateMessage):
When we have a WebThread, don't just run on the WebThread,
run on the MainThread with the WebThreadLock.

Source/WebCore:

  • platform/ios/wak/WebCoreThreadSystemInterface.cpp:

(InitWebCoreThreadSystemInterface):

Source/WTF:

  • wtf/MainThread.h:
  • wtf/cocoa/MainThreadCocoa.mm:

(WTF::dispatchAsyncOnMainThreadWithWebThreadLockIfNeeded):

  • wtf/ios/WebCoreThread.cpp:
  • wtf/ios/WebCoreThread.h:
1:33 AM Changeset in webkit [243794] by Claudio Saavedra
  • 3 edits in trunk/Tools

[WPE][GTK] Update libsrtp dependency package for Debian
https://bugs.webkit.org/show_bug.cgi?id=196528

Reviewed by Frédéric Wang.

  • gtk/install-dependencies:
  • wpe/install-dependencies:
1:25 AM Changeset in webkit [243793] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit

Web Inspector: [GTK] Copy copies to nowhere
https://bugs.webkit.org/show_bug.cgi?id=181228

Reviewed by Michael Catanzaro.

The thing is that those items are actually submenu items, with options, for example in the case of Copy to copy
HTML, Text, XPath, etc. We are not correctly handling submenus when populating the context menu received from
the web process.

  • UIProcess/gtk/WebContextMenuProxyGtk.cpp:

(WebKit::WebContextMenuProxyGtk::populateSubMenu): Helper to populate submenu items recursively.
(WebKit::WebContextMenuProxyGtk::populate): Handle submenu items.

  • UIProcess/gtk/WebContextMenuProxyGtk.h:

Apr 2, 2019:

11:23 PM Changeset in webkit [243792] by bshafiei@apple.com
  • 9 edits in tags/Safari-608.1.13.5

Cherry-pick r243711. rdar://problem/49245471

UIProcess crash when a prewarmed process is terminated
https://bugs.webkit.org/show_bug.cgi?id=196451
<rdar://problem/49245471>

Reviewed by Geoffrey Garen.

Source/WebKit:

Stop assuming that WebProcessProxy::m_websiteDataStore is non-null as this is no longer
true after r243384. For example, prewarmed WebContent processe do not get a data store
until they actually get used.

  • UIProcess/API/Cocoa/WKProcessPool.mm: (-[WKProcessPool _prewarmedProcessIdentifier]):
  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/WebProcessPool.cpp: (WebKit::WebProcessPool::networkProcessIdentifier): (WebKit::WebProcessPool::prewarmedProcessIdentifier):
  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::didClose): (WebKit::WebProcessProxy::didFinishLaunching): (WebKit::WebProcessProxy::requestTermination): (WebKit::WebProcessProxy::isReleaseLoggingAllowed const):
  • UIProcess/WebProcessProxy.h:

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessPreWarming.mm: (TEST):

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

11:23 PM Changeset in webkit [243791] by bshafiei@apple.com
  • 2 edits in tags/Safari-608.1.13.5/Source/WebKit

Cherry-pick r243606. rdar://problem/49229632

[iPad] Tapping on a popup form control may not show a popover
https://bugs.webkit.org/show_bug.cgi?id=196322
<rdar://problem/49229632>

Reviewed by Wenson Hsieh.

Stop taking advantage of -[WKContentView inputView] being called when we invoke -reloadInputViews
to "lazily" allocate the input peripheral for the currently focused element. In theory, UIKit only
needs to call -inputView when it actually needs to display the input view (the keyboard). For
popup menu buttons, like <select>, no keyboard is needed. Instead we should create the peripheral
as part of the logic in the UI process to focus a new element before we call -reloadInputViews.

  • UIProcess/ios/WKContentViewInteraction.mm: (-[WKContentView inputView]): Extract logic to allocate the peripheral from here and moved it to createInputPeripheralWithView(). (-[WKContentView accessoryTab:]): While I am here, add a FIXME comment to explain why we need to end the input sessions and nullify the input peripheral before we tell the web process to switch focus as opposed to letting this happen after the web process tells us it focused a new element. (createInputPeripheralWithView): Added. (-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:changingActivityState:userObject:]): Write in terms of createInputPeripheralWithView(). Create the input peripheral after becoming first responder because creating the peripheral has known side-effects: for popup buttons it tells the popup controller to present the popover. For key input to popovers to work from the get-go, the content view must be the first responder. See <https://bugs.webkit.org/show_bug.cgi?id=196272> for more details.

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

11:23 PM Changeset in webkit [243790] by bshafiei@apple.com
  • 2 edits in tags/Safari-608.1.13.5/Source/WebKit

Cherry-pick r243485. rdar://problem/49083324

Regression(r242369) Trying to change profile picture on linked in shows file picker, not the image picker
https://bugs.webkit.org/show_bug.cgi?id=196205
<rdar://problem/49083324>

Reviewed by Geoffrey Garen.

Update our FileUploadPanel code on iOS to properly deal with the MIME types containing
wild cards (e.g. "image/*") that are defined in the HTML specification:

Previously, we would fail to convert those to UTIs.

  • UIProcess/ios/forms/WKFileUploadPanel.mm:

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

11:19 PM Changeset in webkit [243789] by bshafiei@apple.com
  • 7 edits in tags/Safari-608.1.13.5/Source

Versioning.

11:16 PM Changeset in webkit [243788] by bshafiei@apple.com
  • 1 copy in tags/Safari-608.1.13.5

New tag.

9:58 PM Changeset in webkit [243787] by Wenson Hsieh
  • 13 edits in trunk/Source/WebKit

[Cocoa] Add new API around WKWebpagePreferences in WKNavigationDelegate and WKWebViewConfiguration
https://bugs.webkit.org/show_bug.cgi?id=196284
<rdar://problem/47228232>

Reviewed by Tim Horton.

Tests for both of these APIs will be added in a subsequent patch.

  • Shared/API/Cocoa/WebKit.h:
  • UIProcess/API/APIPageConfiguration.cpp:

(API::PageConfiguration::defaultWebsitePolicies const):
(API::PageConfiguration::setDefaultWebsitePolicies):

  • UIProcess/API/APIPageConfiguration.h:
  • UIProcess/API/Cocoa/WKNavigationDelegate.h:

Add a new navigation delegate hook to allow clients to return a WKWebpagePreference targeting the given
navigation action.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

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

Add new API on WKWebViewConfiguration to specify a default WKWebpagePreference to use when navigating.

(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration defaultWebpagePreferences]):
(-[WKWebViewConfiguration setDefaultWebpagePreferences:]):

  • UIProcess/API/Cocoa/WKWebpagePreferences.h:
  • UIProcess/Cocoa/NavigationState.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

Invoke the new WKWebpagePreferences-based navigation delegate method.

  • WebKit.xcodeproj/project.pbxproj:
  • mac/postprocess-framework-headers.sh:
  • mac/replace-webkit-additions-in-framework-headers.sh: Added.

Move logic in the "Postprocess Framework Headers" step responsible for stripping away included files from
WebKitAdditions out into a separate build phase, called "Replace WebKitAdditions in Framework Headers". This
ensures headers attempting to include from WebKitAdditions have these additional statements removed.

9:20 PM Changeset in webkit [243786] by Simon Fraser
  • 3 edits
    2 adds in trunk

REGRESSION (r238266): Exchange 2013 Outlook Web Access displays partially blank page when creating new e-mail
https://bugs.webkit.org/show_bug.cgi?id=196522
Source/WebCore:

rdar://problem/49472941

Reviewed by Zalan Bujtas.

In this content a layer is composited to clip descendants, and has negative z-order children,
so we compute that it "paints into ancestor", and has a foreground layer. This combination doesn't
make sense, and when the layer becomes scrollable, we end up with bad paint phases on layers, and
fail to paint the contents.

Fix by ensuring that a layer has its own backing store if it requires a foreground layer
by virtue of having negative z-order children.

Test: compositing/backing/foreground-layer-no-paints-into-ancestor.html

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::requiresOwnBackingStore const):

LayoutTests:

Reviewed by Zalan Bujtas.

  • compositing/backing/foreground-layer-no-paints-into-ancestor-expected.html: Added.
  • compositing/backing/foreground-layer-no-paints-into-ancestor.html: Added.
8:46 PM Changeset in webkit [243785] by timothy@apple.com
  • 2 edits in trunk/Source/WebCore

Cursor count badge reverts to Zero during Drag & Drop of multiple items.
https://bugs.webkit.org/show_bug.cgi?id=196511

Reviewed by Daniel Bates.

  • page/DragController.cpp:

(WebCore::DragController::tryDocumentDrag): Don't set m_numberOfItemsToBeAccepted to
zero when dragging to a non-file input element.

8:24 PM Changeset in webkit [243784] by ggaren@apple.com
  • 5 edits in trunk/Source/WebKit

Eliminate plugin sandbox exceptions
https://bugs.webkit.org/show_bug.cgi?id=196510

Reviewed by Chris Dumez.

  • PluginProcess/mac/PluginProcessMac.mm:

(WebKit::PluginProcess::initializeSandbox):

  • UIProcess/Plugins/PluginInfoStore.cpp:

(WebKit::PluginInfoStore::shouldAllowPluginToRunUnsandboxed): Deleted.

  • UIProcess/Plugins/PluginInfoStore.h:
  • UIProcess/Plugins/mac/PluginInfoStoreMac.mm:

(WebKit::PluginInfoStore::shouldUsePlugin):
(WebKit::PluginInfoStore::shouldAllowPluginToRunUnsandboxed): Deleted.

6:56 PM Changeset in webkit [243783] by Fujii Hironori
  • 2 edits in trunk/Tools

[WK2] Add support for Window's beforeprint / afterprint events
https://bugs.webkit.org/show_bug.cgi?id=196478
<rdar://problem/49535124>

Unreviewed build fix for MSVC.

WebKitTestRunner\TestController.cpp(267): error C2397: conversion from 'double' to 'float' requires a narrowing conversion

And, there is a style guideline. <https://webkit.org/code-style-guidelines/#floating-point-literals>

  • WebKitTestRunner/TestController.cpp:

(WTR::printFrame): Use int and float literals.

6:55 PM Changeset in webkit [243782] by Chris Dumez
  • 8 edits in trunk

HTML Parser: Remove conditional parsing of <noembed> content
https://bugs.webkit.org/show_bug.cgi?id=196514

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Resync WPT after https://github.com/web-platform-tests/wpt/pull/15471 to gain
test coverage. Both Gecko and Blink are passing the new check, only WebKit was
failing.

  • web-platform-tests/domparsing/DOMParser-parseFromString-html-expected.txt:
  • web-platform-tests/domparsing/DOMParser-parseFromString-html.html:

Source/WebCore:

Our HTML Parser has raw text handling for <noembed> content only if plugins are runnable.
However, the HTML specification doesn't ask such behavior [1], and it doesn't match to
our HTML serializer. We should always handle it as raw text.

Blink already made this change in https://chromium-review.googlesource.com/c/1477556.

[1] https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments:noembed

No new tests, updated existing test.

  • html/parser/HTMLParserOptions.cpp:

(WebCore::HTMLParserOptions::HTMLParserOptions):

  • html/parser/HTMLParserOptions.h:
  • html/parser/HTMLTokenizer.cpp:

(WebCore::HTMLTokenizer::updateStateFor):

  • html/parser/HTMLTreeBuilder.cpp:

(WebCore::HTMLTreeBuilder::processStartTagForInBody):

5:44 PM Changeset in webkit [243781] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Elements: DOM breakpoint icon should stroke when hovering selection area
https://bugs.webkit.org/show_bug.cgi?id=196516
<rdar://problem/49540494>

Reviewed by Timothy Hatcher.

  • UserInterface/Views/DOMTreeContentView.css:

(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint,): Added.
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Added.
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, :hover) .status-image.breakpoint): Deleted.
(body:not(.window-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, :hover) .status-image.breakpoint.subtree): Deleted.

5:26 PM Changeset in webkit [243780] by commit-queue@webkit.org
  • 1 edit
    2 adds in trunk/LayoutTests

SVG Animation (SMIL) on <text> or <tspan> doesn't work on second run
https://bugs.webkit.org/show_bug.cgi?id=150388

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

The bug is fixed by removing the SVG tear off objects. See
https://bugs.webkit.org/show_bug.cgi?id=191237.

We need to add a layout test to ensure that no code change will break
this scenario in the future.

  • svg/animations/smil-multiple-animate-list-expected.svg: Added.
  • svg/animations/smil-multiple-animate-list.svg: Added.
5:04 PM Changeset in webkit [243779] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

imported/w3c/web-platform-tests/mst-content-hint/MediaStreamTrack-contentHint.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=196517

Unreviewed test gardening.

  • platform/mac/TestExpectations: Skipping test for flaky crashing
5:04 PM Changeset in webkit [243778] by Kocsen Chung
  • 3 edits in branches/safari-607-branch/LayoutTests

Cherry-pick r240492. rdar://problem/49539128

webkitpy: Implement device type specific expected results (Gardening)
https://bugs.webkit.org/show_bug.cgi?id=192162
<rdar://problem/46345449>

Unreviewed test gardening.

  • platform/ios/TestExpectations: Remove non-existant directories.
  • platform/mac/TestExpectations: Ditto.

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

5:04 PM Changeset in webkit [243777] by Kocsen Chung
  • 2 edits in branches/safari-607-branch/Tools

Cherry-pick r240339. rdar://problem/49539128

webkitpy: Use correct config for --iphone-simulator and --ipad-simulator
https://bugs.webkit.org/show_bug.cgi?id=193722
<rdar://problem/47481475>

Reviewed by Lucas Forschler.

iPhone and iPad ports should both use the iOS config.

  • Scripts/webkitpy/port/ios_simulator.py: (IPhoneSimulatorPort.init): (IPadSimulatorPort.init):

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

5:04 PM Changeset in webkit [243776] by Kocsen Chung
  • 4 edits in branches/safari-607-branch/Tools

Cherry-pick r240163. rdar://problem/49539128

webkitpy: Add iPhone and iPad ports
https://bugs.webkit.org/show_bug.cgi?id=193537
<rdar://problem/47353390>

Reviewed by Lucas Forschler.

Add --iphone-simulator and --ipad-simulator commands to run-webkit-tests which separate iPhone and iPad into separate
ports. Note that this separation is optional, the --ios-simulator command remains.

  • Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py: (RunTest.test_device_type_test_division): Drive-by fix. (RunTest.test_device_type_specific_listing): Ditto. (RunTest.test_ipad_test_division): (RunTest): (RunTest.test_ipad_listing):
  • Scripts/webkitpy/port/factory.py: (platform_options): Add --iphone-simulator and --ipad-simulator flags. (PortFactory):
  • Scripts/webkitpy/port/ios_simulator.py: (IPhoneSimulatorPort): (IPadSimulatorPort):

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

5:04 PM Changeset in webkit [243775] by Kocsen Chung
  • 1 edit
    2 deletes in branches/safari-607-branch/LayoutTests

Cherry-pick r240157. rdar://problem/49539128

webkitpy: Implement device type specific expected results (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=192162
<rdar://problem/46345449>

Unreviewed test gardening.

  • tiled-drawing/ios/iphone7: Removed.

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

5:04 PM Changeset in webkit [243774] by Kocsen Chung
  • 2 edits in branches/safari-607-branch/Tools

Cherry-pick r240153. rdar://problem/49539128

webkitpy: Implement device type specific expected results (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=192162
<rdar://problem/46345449>

Unreviewed infrastructure fix.

  • Scripts/webkitpy/layout_tests/controllers/manager.py: (Manager.run): Don't boot a device if no tests are available to run on it.

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

5:04 PM Changeset in webkit [243773] by Kocsen Chung
  • 2 edits in branches/safari-607-branch/Tools

Cherry-pick r240151. rdar://problem/49539128

webkitpy: Implement device type specific expected results (Follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=192162
<rdar://problem/46345449>

Unreviewed infrastructure fix.

  • Scripts/webkitpy/api_tests/manager.py: (Manager._initialize_devices): Use DEVICE_TYPE when running API tests.

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

5:04 PM Changeset in webkit [243772] by Kocsen Chung
  • 24 edits
    43 moves
    19 adds in branches/safari-607-branch

Cherry-pick r240150. rdar://problem/49539128

webkitpy: Implement device type specific expected results (Part 2)
https://bugs.webkit.org/show_bug.cgi?id=192162
<rdar://problem/46345449>

Rubber-stamped by Aakash Jain.

Tools:

This change uses device_type to select a different set of TestExpectation files based on the type of device running
tests. This requires multiple baseline search paths to be used in a single instantiation of run-webkit-tests. Note
that while multiple baseline search paths are used, any single test will only ever be run on a single device type.

  • Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py: (LayoutTestFinder.find_tests): Pass device_type through.
  • Scripts/webkitpy/layout_tests/controllers/layout_test_finder_unittest.py: (LayoutTestFinderTests.test_touched_but_skipped_test): Allow device_type to be passed in.
  • Scripts/webkitpy/layout_tests/controllers/manager.py: (Manager.init): Make _expectations an OrderedDict indexed by device_type, add current_device_type. (Manager._collect_tests): Pass device type to test finder. (Manager._needs_web_platform_test): (Manager._prepare_lists): Index _expectations by device type. (Manager._test_input_for_file): (Manager._test_is_slow): Ditto. (Manager._test_should_dump_jsconsolelog_in_stderr): (Manager._test_should_dump_jsconsolelog_in_stderr): Ditto. (Manager._get_test_inputs): (Manager._update_worker_count): (Manager._set_up_run): Use current_device_type instead of passing device_type in. (Manager.run): Re-write function to gather and parse expectations from multiple baseline search paths. In the event that a test can be run on multiple device types, the first device in the device type list which is eligible will be the one which runs the test. (Manager._run_test_subset): (Manager._run_tests): Index _expectations by current_device_type. (Manager._print_expectation_line_for_test): Ditto. (Manager._print_expectations_for_subset): Ditto. (Manager.print_expectations): Re-write function to gather and parse expectations from multiple baseline search paths. Unlike run, this function will behave the same regardless of what devices are available. (Manager._custom_device_for_test): Deleted.
  • Scripts/webkitpy/layout_tests/controllers/manager_unittest.py: (ManagerTest.test_uses_custom_device): Deleted. (ManagerTest.test_uses_custom_device.get_manager): Deleted.
  • Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py: (JSONLayoutResultsGenerator.init): Pass expectations as a dictionary indexed by device type. (JSONLayoutResultsGenerator._insert_failure_summaries): The number of fixable tests must take into consideration all of the expectations.
  • Scripts/webkitpy/layout_tests/lint_test_expectations_unittest.py: (FakePort.skipped_layout_tests): Allow device_type to be passed in.
  • Scripts/webkitpy/layout_tests/models/test_expectations.py: (TestExpectations.init): Allow device_type to be passed through. (TestExpectations.parse_all_expectations): Pick expectations_dict by device type.
  • Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Allow device_type to be passed in.
  • Scripts/webkitpy/layout_tests/models/test_run_results.py: (summarize_results):
  • Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py: (summarized_results): Expectations are stored in a dictionary indexed by device_type. When determining the expectation a test ran with, one must check all expectations to find the first non-skip expectation.
  • Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py: (RunTest.test_device_type_test_division): (RunTest): (RunTest.test_device_type_specific_listing):
  • Scripts/webkitpy/port/base.py: (Port): Add default values for DEVICE_TYPE and DEFAULT_DEVICE_TYPES. (Port.supported_device_types): The result of this function will change based on what devices are available.
  • Scripts/webkitpy/port/device_port.py: (DevicePort._device_type_with_version): Replace DEFAULT_DEVICE_TYPE with DEVICE_TYPE. (DevicePort.default_child_processes): DEVICE_TYPE is a general type, so the built-in comparison of the DeviceType object can be used. (DevicePort.supported_device_types): Generates a list of device types determined by the available devices, if there are any, or the DEFAULT_DEVICE_TYPES of the port.
  • Scripts/webkitpy/port/ios.py: (IOSPort): Change DEFAULT_DEVICE_TYPE to DEVICE_TYPE.
  • Scripts/webkitpy/port/ios_simulator.py: (IOSSimulatorPort): Set the DEFAULT_DEVICE_TYPES to the devices currently used to run layout tests.
  • Scripts/webkitpy/port/watch.py: (WatchPort): Change DEFAULT_DEVICE_TYPE to DEVICE_TYPE.
  • Scripts/webkitpy/port/watch_simulator.py: (WatchSimulatorPort): Set the DEFAULT_DEVICE_TYPES to the device currently used to run layout tests.
  • Scripts/webkitpy/xcode/device_type.py: (DeviceType): (DeviceType.hash): Allow DeviceType to be used as a dictionary index.

LayoutTests:

Move iPad and iPhone 7 tests to their respective platform specific directories.

  • TestExpectations:
  • fast/events/touch/ios/iphone7: Removed.
  • fast/forms/ios/ipad: Removed.
  • fast/text-autosizing/ios/ipad: Removed.
  • fast/viewport/ios/ipad: Removed.
  • media/controls/ipad: Removed.
  • media/modern-media-controls/media-documents/ipad: Removed.
  • media/modern-media-controls/pip-support/ipad: Removed.
  • platform/ios-wk1/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/ipad: Added.
  • platform/ipad/fast: Added.
  • platform/ipad/fast/forms: Added.
  • platform/ipad/fast/forms/choose-select-option-expected.txt: Added.
  • platform/ipad/fast/forms/choose-select-option.html: Added.
  • platform/ipad/fast/forms/focus-input-via-button-expected.txt: Added.
  • platform/ipad/fast/forms/focus-input-via-button.html: Added.
  • platform/ipad/fast/forms/multiple-select-updates-renderer-expected.txt: Added.
  • platform/ipad/fast/forms/multiple-select-updates-renderer.html: Added.
  • platform/ipad/fast/forms/select-form-run-twice-expected.txt: Added.
  • platform/ipad/fast/forms/select-form-run-twice.html: Added.
  • platform/ipad/fast/forms/select-with-title-expected.txt: Added.
  • platform/ipad/fast/forms/select-with-title.html: Added.
  • platform/ipad/fast/forms/unfocus-inside-fixed-hittest-expected.txt: Added.
  • platform/ipad/fast/forms/unfocus-inside-fixed-hittest.html: Added.
  • platform/ipad/fast/text-autosizing: Added.
  • platform/ipad/fast/text-autosizing/programmatic-text-size-adjust-expected.txt: Added.
  • platform/ipad/fast/text-autosizing/programmatic-text-size-adjust.html: Added.
  • platform/ipad/fast/text-autosizing/text-size-adjust-inline-style-expected.html: Added.
  • platform/ipad/fast/text-autosizing/text-size-adjust-inline-style.html: Added.
  • platform/ipad/fast/viewport: Added.
  • platform/ipad/fast/viewport/empty-meta-expected.txt: Added.
  • platform/ipad/fast/viewport/empty-meta.html: Added.
  • platform/ipad/fast/viewport/meta-viewport-ignored-expected.txt: Added.
  • platform/ipad/fast/viewport/meta-viewport-ignored.html: Added.
  • platform/ipad/fast/viewport/viewport-overriden-by-minimum-effective-width-if-ignore-meta-viewport-expected.txt: Added.
  • platform/ipad/fast/viewport/viewport-overriden-by-minimum-effective-width-if-ignore-meta-viewport.html: Added.
  • platform/ipad/fast/viewport/viewport-unchanged-by-minimum-effective-width-if-not-ignore-meta-viewport-expected.txt: Added.
  • platform/ipad/fast/viewport/viewport-unchanged-by-minimum-effective-width-if-not-ignore-meta-viewport.html: Added.
  • platform/ipad/fast/viewport/width-is-device-width-expected.txt: Added.
  • platform/ipad/fast/viewport/width-is-device-width.html: Added.
  • platform/ipad/media: Added.
  • platform/ipad/media/controls: Added.
  • platform/ipad/media/controls/close-page-with-picture-in-picture-video-assertion-failure-expected.txt: Added.
  • platform/ipad/media/controls/close-page-with-picture-in-picture-video-assertion-failure.html: Added.
  • platform/ipad/media/controls/resources: Added.
  • platform/ipad/media/controls/resources/picture-in-picture.html: Added.
  • platform/ipad/media/modern-media-controls: Added.
  • platform/ipad/media/modern-media-controls/media-documents: Added.
  • platform/ipad/media/modern-media-controls/media-documents/media-document-audio-ios-sizing-expected.txt: Added.
  • platform/ipad/media/modern-media-controls/media-documents/media-document-audio-ios-sizing.html: Added.
  • platform/ipad/media/modern-media-controls/media-documents/media-document-video-ios-sizing-expected.txt: Added.
  • platform/ipad/media/modern-media-controls/media-documents/media-document-video-ios-sizing.html: Added.
  • platform/ipad/media/modern-media-controls/pip-support: Added.
  • platform/ipad/media/modern-media-controls/pip-support/pip-support-enabled-expected.txt: Added.
  • platform/ipad/media/modern-media-controls/pip-support/pip-support-enabled.html: Added.
  • platform/ipad/media/modern-media-controls/pip-support/pip-support-tap-expected.txt: Added.
  • platform/ipad/media/modern-media-controls/pip-support/pip-support-tap.html: Added.
  • platform/iphone-7: Added.
  • platform/iphone-7/fast: Added.
  • platform/iphone-7/fast/events: Added.
  • platform/iphone-7/fast/events/touch: Added.
  • platform/iphone-7/fast/events/touch/force-press-event-expected.txt: Added.
  • platform/iphone-7/fast/events/touch/force-press-event.html: Added.
  • platform/iphone-7/fast/events/touch/force-press-on-link-expected.txt: Added.
  • platform/iphone-7/fast/events/touch/force-press-on-link.html: Added.
  • platform/iphone-7/fast/events/touch/prevent-default-touchmove-prevents-scrolling-expected.txt: Added.
  • platform/iphone-7/fast/events/touch/prevent-default-touchmove-prevents-scrolling.html: Added.
  • platform/iphone-7/tiled-drawing: Added.
  • platform/iphone-7/tiled-drawing/compositing-layers-deep-color-expected.txt: Added.
  • platform/iphone-7/tiled-drawing/compositing-layers-deep-color.html: Added.
  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
  • tiled-drawing/ios: Removed.

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

5:04 PM Changeset in webkit [243771] by Kocsen Chung
  • 19 edits in branches/safari-607-branch/Tools

Cherry-pick r239989. rdar://problem/49539128

webkitpy: Implement device type specific expected results (Part 1)
https://bugs.webkit.org/show_bug.cgi?id=192162

Reviewed by Lucas Forschler.

Device type specific expected results covers two related ideas. The first (covered by this change)
is where to search for -expected.* files. The second is which tests to run based on the
TestExpectations.txt file.

After this change, the baseline search path will be determined by the type of device running a
test. Device type will be passed into any function which picks a file based on the baseline search
path.

  • Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py: (Worker._update_test_input): Pass device_type to self._port.reference_files(...).
  • Scripts/webkitpy/layout_tests/controllers/manager.py: (Manager.run): Print baseline search path for each round of devices.
  • Scripts/webkitpy/layout_tests/controllers/single_test_runner.py: (SingleTestRunner.init): Pass device_type into expected_*(...). (SingleTestRunner._expected_driver_output): Ditto. (SingleTestRunner._driver_input): Ditto.
  • Scripts/webkitpy/layout_tests/views/printing.py: (Printer.print_config): Move printing of baseline search path to a separate function. (Printer.print_baseline_search_path): Moved from Printer.print_config.
  • Scripts/webkitpy/layout_tests/views/printing_unittest.py: (Testprinter.test_print_config): (Testprinter.test_print_baseline_search_path):
  • Scripts/webkitpy/port/base.py: (Port.baseline_search_path): Pass device_type through. (Port._expected_baselines_for_suffixes): Ditto. (Port.expected_baselines): Ditto. (Port.expected_filename): Ditto. (Port.expected_checksum): Ditto. (Port.expected_image): Ditto. (Port.expected_audio): Ditto. (Port.expected_text): Ditto. (Port.reference_files): Ditto. (Port.tests): Ditto. (Port._expanded_paths): Ditto. (Port.skipped_layout_tests): Ditto. (Port.expectations_dict): Ditto. (Port._port_specific_expectations_files): Ditto. (Port.expectations_files): Ditto. (Port.test_search_path): Ditto. (Port._tests_for_other_platforms): Ditto.
  • Scripts/webkitpy/port/base_unittest.py: (PortTest.test_additional_platform_directory): Accept, but do not use, device_type. (PortTest.test_nonexistant_expectations): Ditto. (test_ref_tests_platform_directory): Ditto.
  • Scripts/webkitpy/port/darwin.py: (DarwinPort._port_specific_expectations_files): Accept device_type.
  • Scripts/webkitpy/port/driver.py: (DriverProxy): (DriverProxy.host): Expose _target_host for device_type information.
  • Scripts/webkitpy/port/gtk.py: (GtkPort._port_specific_expectations_files): Accept, but do not use, device_type.
  • Scripts/webkitpy/port/ios.py: (IOSPort. default_baseline_search_path): Remove memoized, since it does not accept kwargs.
  • Scripts/webkitpy/port/mac.py: (MacPort. default_baseline_search_path): Ditto.
  • Scripts/webkitpy/port/port_testcase.py: (TestWebKitPort._tests_for_other_platforms): Accept, but do not use, device_type.
  • Scripts/webkitpy/port/test.py:
  • Scripts/webkitpy/port/watch.py: (WatchPort. default_baseline_search_path): Remove memoized, since it does not accept kwargs.
  • Scripts/webkitpy/port/win.py: (WinPort.test_search_path): Accept, but do not use, device_type.
  • Scripts/webkitpy/port/wpe.py: (WPEPort._port_specific_expectations_files): Ditto.
  • Scripts/webkitpy/tool/servers/rebaselineserver.py: (get_test_baselines.AllPlatformsPort.baseline_search_path): Ditto.

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

5:04 PM Changeset in webkit [243770] by Kocsen Chung
  • 6 edits in branches/safari-607-branch/Tools

Cherry-pick r239945. rdar://problem/49539128

webkitpy: Expose device_type from host-like objects
https://bugs.webkit.org/show_bug.cgi?id=193406
<rdar://problem/47262305>

Reviewed by Lucas Forschler.

Devices should expose device_type. As a result, all host objects should
provide a device_type property, even if they do not yet define a device_type.

  • Scripts/webkitpy/common/system/systemhost.py: (SystemHost): (SystemHost.device_type):
  • Scripts/webkitpy/common/system/systemhost_mock.py: (MockSystemHost): (MockSystemHost.device_type):
  • Scripts/webkitpy/port/device.py: (Device): (Device.device_type):
  • Scripts/webkitpy/xcode/simulated_device.py: (SimulatedDeviceManager._find_exisiting_device_for_request): (SimulatedDeviceManager._disambiguate_device_type): (SimulatedDeviceManager._does_fulfill_request): (SimulatedDeviceManager.device_count_for_type): (SimulatedDeviceManager.initialize_devices):
  • Scripts/webkitpy/xcode/simulated_device_unittest.py: (test_available_devices): (test_swapping_devices):

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

5:03 PM Changeset in webkit [243769] by Kocsen Chung
  • 10 edits in branches/safari-607-branch/Tools

Cherry-pick r239875. rdar://problem/49539128

webkitpy: Incorporate device type into baseline search path
https://bugs.webkit.org/show_bug.cgi?id=193356
<rdar://problem/47215515>

Reviewed by Lucas Forschler.

We need a way to include device type in the baseline search path for iOS to support device specific test expectations.

  • Scripts/webkitpy/port/base.py: (Port.default_baseline_search_path): Allow device type to be passed in.
  • Scripts/webkitpy/port/gtk.py: (GtkPort.default_baseline_search_path): Ignore device type.
  • Scripts/webkitpy/port/ios.py: (IOSPort.default_baseline_search_path): Optionally allow device type to be incorporated into the baseline search path. (IOSPort.test_expectations_file_position): Update index for the additional device-type specific baseline search path.
  • Scripts/webkitpy/port/ios_device_unittest.py: (IOSDeviceTest):
  • Scripts/webkitpy/port/ios_simulator_unittest.py: (IOSSimulatorTest):
  • Scripts/webkitpy/port/mac.py: (MacPort.default_baseline_search_path): Ignore device type.
  • Scripts/webkitpy/port/watch.py: (WatchPort.default_baseline_search_path): Ditto.
  • Scripts/webkitpy/port/win.py: (WinPort.default_baseline_search_path): Ditto. (WinCairoPort.default_baseline_search_path): Ditto.
  • Scripts/webkitpy/port/wpe.py: (WPEPort.default_baseline_search_path): Ditto.

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

4:33 PM Changeset in webkit [243768] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

[Mojave] Layout test fast/text/complex-initial-advance.html is failing
https://bugs.webkit.org/show_bug.cgi?id=196512

Unreviewed test gardening.

  • platform/mac/TestExpectations: Mark test as failing.
4:11 PM Changeset in webkit [243767] by achristensen@apple.com
  • 8 edits in trunk

Fix assertion in http/tests/adClickAttribution/store-ad-click-attribution.html
https://bugs.webkit.org/show_bug.cgi?id=196503

Reviewed by Chris Dumez.

Source/WebKit:

In WebPageProxy::didDestroyNavigation we try to ignore a request to destroy a navigation from a page being navigated from
during a cross-site navigation, but if the old web process sends the message after WebPageProxy::commitProvisionalPage
has been called, we can still destroy a navigation when we are continuing a navigation in another process. To prevent this,
have the process not send the message when it knows the navigation is continuing in another process.
Also make the use of unchecked navigation pointers more robust by checking it for nullity.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didCommitLoadForFrame):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::didReceivePolicyDecision):
(WebKit::WebFrame::documentLoaderDetached):

  • WebProcess/WebPage/WebFrame.h:

LayoutTests:

  • http/tests/adClickAttribution/store-ad-click-attribution-expected.txt:
  • http/tests/adClickAttribution/store-ad-click-attribution.html:
  • platform/wk2/TestExpectations:
4:07 PM Changeset in webkit [243766] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Reassign bots to queues

  • BuildSlaveSupport/ews-build/config.json: Reassigned ews150 and ews152.
4:00 PM Changeset in webkit [243765] by Chris Dumez
  • 14 edits in trunk

XMLHttpRequestUpload's loadstart event not correct initialized
https://bugs.webkit.org/show_bug.cgi?id=196174
<rdar://problem/49191412>

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/xhr/event-error-order.sub.html:

Update test after https://github.com/web-platform-tests/wpt/pull/13365

  • web-platform-tests/xhr/abort-during-upload-expected.txt:
  • web-platform-tests/xhr/event-error-order.sub-expected.txt:
  • web-platform-tests/xhr/event-loadstart-upload-expected.txt:
  • web-platform-tests/xhr/event-timeout-order-expected.txt:
  • web-platform-tests/xhr/send-response-event-order-expected.txt:

Rebaseline several WPT tests that are now passing.

Source/WebCore:

Align progress event firing with the XHR specification.

No new tests, rebaselined existing tests.

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::createRequest):
As per [1], the loadstart event fired on the XMLHttpRequestUpload object should use
loaded=0 and total=req’s body’s total bytes.
[1] https://xhr.spec.whatwg.org/#the-send()-method (step 11.2.)

(WebCore::XMLHttpRequest::didSendData):
As per [2], the progress / load / loadend should use loaded=transmitted and total=length.
[2] https://xhr.spec.whatwg.org/#ref-for-process-request-end-of-body (steps 5, 6 and 7)

(WebCore::XMLHttpRequest::didReceiveData):
As per [3], we should fire the readystatechange event *before* the progress event.
This is covered by web-platform-tests/xhr/send-response-event-order.htm which was failing
differently after the other changes in this patch.
[3] https://xhr.spec.whatwg.org/#ref-for-process-response (steps 9.4 and 9.5)

(WebCore::XMLHttpRequest::dispatchErrorEvents):
As per [4], in case of an error, we should fire the provided 'event' and 'loadend' with
loaded=0 and total=0.
[4] https://xhr.spec.whatwg.org/#request-error-steps (steps 7 and 8)

  • xml/XMLHttpRequestUpload.cpp:

(WebCore::XMLHttpRequestUpload::dispatchProgressEvent):

  • xml/XMLHttpRequestUpload.h:

Simplify XMLHttpRequestUpload. It no longer needs to store loaded / total as data
members now that they are always passed by the call site. lengthComputable is set
to !!total as [5] says to set it to true if length/total is not 0.
[5] https://xhr.spec.whatwg.org/#concept-event-fire-progress

3:39 PM Changeset in webkit [243764] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] Fix iokit-get-properties sandbox violation in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=196500
<rdar://problem/49497788>

Reviewed by Brent Fulgham.

Attempting to get the iokit properties 'product-description', 'artwork-display-gamut' and
'artwork-scale-factor' is causing sandbox violations.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
3:19 PM Changeset in webkit [243763] by Devin Rousso
  • 24 edits
    1 copy
    3 adds in trunk

Web Inspector: Canvas: add support for showing WebGPU contexts
https://bugs.webkit.org/show_bug.cgi?id=196413
<rdar://problem/49438898>

Reviewed by Timothy Hatcher.

Source/WebCore:

Tests: inspector/canvas/create-context-webgpu.html

inspector/canvas/resolveCanvasContext-webgpu.html

  • Modules/webgpu/GPUCanvasContext.idl:
  • Modules/webgpu/GPUCanvasContext.h:

(WebCore::GPUCanvasContext::canvas const): Added.

  • Modules/webgpu/GPUCanvasContext.cpp:

(WebCore::GPUCanvasContext::create):

  • testing/InternalSettings.idl:
  • testing/InternalSettings.h:
  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::setWebGPUEnabled): Added.

LayoutTests:

  • inspector/canvas/create-context-webgpu.html: Added.
  • inspector/canvas/create-context-webgpu-expected.txt: Added.
  • inspector/canvas/resolveCanvasContext-webgpu.html: Added.
  • inspector/canvas/resolveCanvasContext-webgpu-expected.txt: Added.
  • inspector/canvas/resources/create-context-utilities.js:

(createDetachedCanvas):
(createCSSCanvas):
(destroyCanvases):
(TestPage.registerInitializer.InspectorTest.CreateContextUtilities.initializeTestSuite): Added.
(TestPage.registerInitializer.InspectorTest.CreateContextUtilities.addSimpleTestCase): Added.
(TestPage.registerInitializer.InspectorTest.CreateContextUtilities.addCSSCanvasTestCase): Added.
(TestPage.registerInitializer.window.initializeTestSuite): Deleted.
(TestPage.registerInitializer.window.addSimpleTestCase): Deleted.
(TestPage.registerInitializer.window.addCSSCanvasTestCase): Deleted.

  • inspector/canvas/create-context-2d.html:
  • inspector/canvas/create-context-2d-expected.txt:
  • inspector/canvas/create-context-bitmaprenderer.html:
  • inspector/canvas/create-context-bitmaprenderer-expected.txt:
  • inspector/canvas/create-context-webgl.html:
  • inspector/canvas/create-context-webgl-expected.txt:
  • inspector/canvas/create-context-webgl2.html:
  • inspector/canvas/create-context-webgl2-expected.txt:
  • platform/gtk/TestExpectations:
  • platform/ios/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
  • platform/wincairo/TestExpectations:
  • platform/wpe/TestExpectations:
2:43 PM Changeset in webkit [243762] by Chris Dumez
  • 22 edits
    2 adds in trunk

[WK2] Add support for Window's beforeprint / afterprint events
https://bugs.webkit.org/show_bug.cgi?id=196478

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that more checks are passing.

  • web-platform-tests/html/browsers/the-window-object/security-window/window-security.https-expected.txt:
  • web-platform-tests/html/browsers/the-window-object/security-window/window-security.sub-expected.txt:
  • web-platform-tests/html/browsers/the-window-object/window-properties.https-expected.txt:
  • web-platform-tests/html/dom/interfaces-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/event-handler-attributes-body-window-expected.txt:

Source/WebCore:

Add support for Window's beforeprint / afterprint events as per:

Blink and Gecko already support this.

Test: printing/printing-events.html

  • dom/EventNames.h:
  • html/HTMLAttributeNames.in:
  • html/HTMLBodyElement.cpp:

(WebCore::HTMLBodyElement::createWindowEventHandlerNameMap):

  • page/Page.cpp:

(WebCore::dispatchPrintEvent):
(WebCore::Page::dispatchBeforePrintEvent):
(WebCore::Page::dispatchAfterPrintEvent):

  • page/Page.h:
  • page/WindowEventHandlers.idl:

Source/WebKit:

Add support for Window's beforeprint / afterprint events as per:

Blink and Gecko already support this.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::beginPrinting):
(WebKit::WebPage::endPrinting):

Tools:

Add minimal implementation for printFrame in WebKitTestRunner.

  • WebKitTestRunner/TestController.cpp:

(WTR::printFrame):
(WTR::TestController::createOtherPage):
(WTR::TestController::createWebViewWithOptions):

LayoutTests:

Add layout test coverage.

  • TestExpectations:
  • platform/wk2/TestExpectations:
  • printing/printing-events-expected.txt: Added.
  • printing/printing-events.html: Added.
2:15 PM Changeset in webkit [243761] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-app] Status bubble hover over message should clearly indicate that build is in-progress
https://bugs.webkit.org/show_bug.cgi?id=196491

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
2:11 PM Changeset in webkit [243760] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[ContentChangeObserver] Hover menus do not function on fidelity.com
https://bugs.webkit.org/show_bug.cgi?id=196507
<rdar://problem/49496520>

Reviewed by Simon Fraser.

Source/WebCore:

fidelity.com has 400ms hover intent timer to bring up the main menus.

Test: fast/events/touch/ios/content-observation/400ms-hover-intent.html

  • page/ios/ContentChangeObserver.cpp:

LayoutTests:

  • fast/events/touch/ios/content-observation/400ms-hover-intent-expected.txt: Added.
  • fast/events/touch/ios/content-observation/400ms-hover-intent.html: Added.
2:09 PM Changeset in webkit [243759] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[ews-build] Configure buildbot try credentials in environment variables
https://bugs.webkit.org/show_bug.cgi?id=196501

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/loadConfig.py: Read credentials from environment variables.
  • BuildSlaveSupport/ews-app/ews/common/buildbot.py: Rename BUILDBOT_PB_USERNAME to BUILDBOT_TRY_USERNAME.
  • BuildSlaveSupport/ews-app/ews/config.py: Ditto.
2:06 PM Changeset in webkit [243758] by timothy@apple.com
  • 2 edits in trunk/Source/WebCore

NSAttributedString crashes when encoding text attachment cell for missing image.
https://bugs.webkit.org/show_bug.cgi?id=196504
rdar://problem/49161281

Reviewed by Tim Horton.

Clean up and fix a couple of errors and crashes in the missing image path of our
attributed string converter.

Fixes include:

  • Removed manual call to release on a RetainPtr, leading to autorelease pool crash.
  • No longer try to load an image that is missing on disk and has long been renamed.
  • No longer use a NSTextAttachmentCell in the Mac code path which can't be encoded for sending to the UIProcess, so it was pretty useless in the web content process.
  • Stopped using NSFileWrapper for the missing image so the attachment can contain the retina versions of the missing image.
  • Simplified bundle finding code, since WebCore is assumed to be loaded.
  • Fix leak of attachment by adding missing adoptNS().
  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::_addAttachmentForElement): Unify and simplify missing image path.
(_NSFirstPathForDirectoriesInDomains): Deleted.
(_NSSystemLibraryPath): Deleted.
(_webKitBundle): Deleted.

1:48 PM Changeset in webkit [243757] by Chris Dumez
  • 4 edits in trunk

[Fetch API] Allow used body replacement in Request constructor
https://bugs.webkit.org/show_bug.cgi?id=183703
<rdar://problem/49425609>

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT test now that one more check is passing.

  • web-platform-tests/fetch/api/request/request-disturbed-expected.txt:

Source/WebCore:

Allow used body replacement in Request constructor as per:

No new tests, rebaseline existing test.

  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::initializeWith):

1:30 PM Changeset in webkit [243756] by Chris Dumez
  • 15 edits in trunk

Unreviewed, rolling out r243551.

Seems to have broken file uploads to SoundCloud

Reverted changeset:

"XMLHttpRequestUpload's loadstart event not correct
initialized"
https://bugs.webkit.org/show_bug.cgi?id=196174
https://trac.webkit.org/changeset/243551

12:59 PM Changeset in webkit [243755] by Justin Fan
  • 20 edits
    4 copies
    4 adds in trunk

Source/WebCore:
[Web GPU] Implement blend states and color write mask for GPUColorStateDescriptor
https://bugs.webkit.org/show_bug.cgi?id=196474

Reviewed by Myles C. Maxfield.

Blend states and color write masks must now be specified on GPUColorStateDescriptor instead of
relying on underlying MTLRenderPipelineColorAttachmentDescriptor defaults.

Test: webgpu/blend-triangle-strip.html, webgpu/color-write-mask-triangle-strip.html

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/webgpu/GPUBlendDescriptor.idl:
  • Modules/webgpu/GPUColorStateDescriptor.idl:
  • Modules/webgpu/GPUColorWriteBits.idl:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:
  • platform/graphics/gpu/GPUBlendDescriptor.h:
  • platform/graphics/gpu/GPUColorStateDescriptor.h:
  • platform/graphics/gpu/GPUColorWriteBits.h:
  • platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:

(WebCore::mtlColorWriteMaskForGPUColorWriteFlags):
(WebCore::mtlBlendOperationForGPUBlendOperation):
(WebCore::mtlBlendFactorForGPUBlendFactor):
(WebCore::setColorStatesForColorAttachmentArray):
(WebCore::tryCreateMtlRenderPipelineState):
(WebCore::trySetColorStatesForColorAttachmentArray): Deleted.

LayoutTests:
[Web GPU] Implement blend states and color write mask for GPUColorStateDescriptor
https://bugs.webkit.org/show_bug.cgi?id=196474

Reviewed by Myles C. Maxfield.

Add blend-triangle-strip to test color blending and color-write-mask-triangle-strip.html to test color write mask.
Update other tests to specify blend states when creating a GPURenderPipeline.

  • webgpu/blend-triangle-strip-expected.html: Added.
  • webgpu/blend-triangle-strip.html: Added.
  • webgpu/buffer-command-buffer-races.html:
  • webgpu/buffer-resource-triangles.html:
  • webgpu/color-write-mask-triangle-strip-expected.html: Added.
  • webgpu/color-write-mask-triangle-strip.html: Added.
  • webgpu/depth-enabled-triangle-strip.html:
  • webgpu/js/webgpu-functions.js:
  • webgpu/render-pipelines.html:
  • webgpu/texture-triangle-strip.html:
  • webgpu/vertex-buffer-triangle-strip.html:
  • webgpu/whlsl.html:
12:56 PM Changeset in webkit [243754] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Crash in Options::setOptions() using --configFile option and libgmalloc
https://bugs.webkit.org/show_bug.cgi?id=196506

Reviewed by Keith Miller.

Changed to call CString::data() while making the call to Options::setOptions(). This keeps
the implicit CString temporary alive until after setOptions() returns.

  • runtime/ConfigFile.cpp:

(JSC::ConfigFile::parse):

12:46 PM Changeset in webkit [243753] by Wenson Hsieh
  • 4 edits in trunk

REGRESSION (r243726): Crash at unrecognized selector: -[WKWebpagePreferences webpagePreferences]
https://bugs.webkit.org/show_bug.cgi?id=196496
<rdar://problem/49521634>

Reviewed by Chris Dumez.

Source/WebKit:

r243726 made an incorrect assumption that all callers of -decidePolicyForNavigationAction:decisionHandler: and
-decidePolicyForNavigationAction:userInfo:decisionHandler: must be instances of _WKWebsitePolicies, as opposed
to the new WKWebpagePreferences. However, it's possible for clients (in this case, Safari) to already generate
and pass in an instance of WKWebpagePreferences by bridging the C API opaque ref (WKWebsitePoliciesRef) into the
Objective-C object (which is now WKWebpagePreferences, after my change).

To maintain binary compatibility of trunk WebKit against prior versions of Safari, we need to handle both
WKWebpagePreferences and the soon-to-be-deprecated _WKWebsitePolicies in the navigation action policy decision
handler.

Tests: WebKit.WebsitePoliciesWithBridgingCast

WebKit.WebsitePoliciesWithUnexpectedType

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

Tools:

Add new API tests (see WebKit ChangeLog for more detail).

  • TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:

(-[WebsitePoliciesNavigationDelegate _webView:decidePolicyForNavigationAction:userInfo:decisionHandler:]):
(TEST):

12:43 PM Changeset in webkit [243752] by Alan Bujtas
  • 5 edits
    6 adds in trunk

[ContentChangeObserver] Ignore reconstructed renderers when checking for visibility change
https://bugs.webkit.org/show_bug.cgi?id=196483
<rdar://problem/49288174>

Reviewed by Simon Fraser.

Source/WebCore:

This patch fixes the cases when the content gets reconstructed in a way that existing and visible elements gain
new renderers within one style recalc. We failed to recognize such cases and ended up detecting the newly constructed renderers
as "visible change" thereby triggering hover.

Test: fast/events/touch/ios/content-observation/visible-content-gains-new-renderer.html

  • page/ios/ContentChangeObserver.cpp:

(WebCore::ContentChangeObserver::renderTreeUpdateDidStart):
(WebCore::ContentChangeObserver::renderTreeUpdateDidFinish):
(WebCore::ContentChangeObserver::reset):
(WebCore::ContentChangeObserver::willDestroyRenderer):
(WebCore::ContentChangeObserver::StyleChangeScope::StyleChangeScope):
(WebCore::ContentChangeObserver::RenderTreeUpdateScope::RenderTreeUpdateScope):
(WebCore::ContentChangeObserver::RenderTreeUpdateScope::~RenderTreeUpdateScope):

  • page/ios/ContentChangeObserver.h:

(WebCore::ContentChangeObserver::visibleRendererWasDestroyed const):

  • rendering/updating/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateRenderTree):
(WebCore::RenderTreeUpdater::tearDownRenderers):

LayoutTests:

  • fast/events/touch/ios/content-observation/visible-content-gains-new-renderer-expected.txt: Added.
  • fast/events/touch/ios/content-observation/visible-content-gains-new-renderer.html: Added.
12:41 PM Changeset in webkit [243751] by ddkilzer@apple.com
  • 2 edits in trunk/Tools

Rename CLANG_ADDRESS_SANITIZER Xcode variable to ENABLE_ADDRESS_SANITIZER
<https://webkit.org/b/196499>

Reviewed by Alexey Proskuryakov.

  • asan/asan.xcconfig: Change CLANG_ADDRESS_SANITIZER to

ENABLE_ADDRESS_SANITIZER.

12:08 PM Changeset in webkit [243750] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

accessibility/mac/press-not-work-for-disabled-menu-list.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196505

Unreviewed test gardening.

  • platform/mac/TestExpectations: Updating test expectations for flaky failure
11:36 AM Changeset in webkit [243749] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

media/video-background-tab-playback.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196502

Unreviewed test gardening

  • platform/mac-wk1/TestExpectations: Updating test expectations for flaky failure
10:51 AM Changeset in webkit [243748] by Kocsen Chung
  • 11 edits in branches/safari-607-branch/Tools

Cherry-pick r243732. rdar://problem/49356714

run-api-tests: Upload test results
https://bugs.webkit.org/show_bug.cgi?id=196323
<rdar://problem/49356714>

Reviewed by Lucas Forschler.

  • Scripts/webkitpy/api_tests/manager.py: (Manager): (Manager.run): Upload results to a results database.
  • Scripts/webkitpy/api_tests/run_api_tests.py: (parse_args): Add upload arguments.
  • Scripts/webkitpy/port/base.py: (Port): (Port.configuration_for_upload): Creates a configuration dictionary for uploading results. (Port.commits_for_upload): Create a list of commits from the WebKit repository tests are run from along with commits from any other associated repositories.
  • Scripts/webkitpy/port/device.py: (Device): (Device.build_version): Access build_versoin of underlying platform device.
  • Scripts/webkitpy/port/ios_simulator_unittest.py: (IOSSimulatorTest): (IOSSimulatorTest.test_configuration_for_upload):
  • Scripts/webkitpy/port/device_port.py: (DevicePort): (DevicePort.configuration_for_upload): Devices are unique because their configuration is not the same as the machine uploading results.
  • Scripts/webkitpy/port/mac.py: (MacPort): (MacPort.configuration_for_upload): Define SDK in upload configuration for Mac.
  • Scripts/webkitpy/port/mac_unittest.py: (MacTest): (MacTest.test_configuration_for_upload):
  • Scripts/webkitpy/xcode/simulated_device.py: (SimulatedDeviceManager._create_device_with_runtime): (SimulatedDevice.init): Create simulated device with a build_version.
  • Scripts/webkitpy/xcode/simulated_device_unittest.py: (test_existing_simulator):

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

10:46 AM Changeset in webkit [243747] by Keith Rollin
  • 2 edits in trunk/Source/WTF

Inhibit CFNetwork logging in private sessions
https://bugs.webkit.org/show_bug.cgi?id=196268
<rdar://problem/48210793>

Fix a conditional in Platform.h where IOS should have been used
instead of IOS_FAMILY. The latter happened to work, but we really want
to be using the proper symbol here.

Reviewed by Alexey Proskuryakov.

  • wtf/Platform.h:
9:33 AM Changeset in webkit [243746] by Fujii Hironori
  • 12 edits in trunk

[CMake] WEBKIT_MAKE_FORWARDING_HEADERS shouldn't use POST_BUILD to copy generated headers
https://bugs.webkit.org/show_bug.cgi?id=182757

Reviewed by Don Olmstead.

.:

Some generated headers need to be exported to its client modules.
Before this change, WEBKIT_MAKE_FORWARDING_HEADERS copies all *.h
files in the directory specified by DERIVED_SOURCE_DIRECTORIES
parameter. The copy operation was triggered by POST_BUILD event.

This caused build dependency issues for Ninja builds. This change
remove the DERIVED_SOURCE_DIRECTORIES parameter. And list all
generated headers explicitly which need to be copied.

  • Source/cmake/WebKitMacros.cmake: Removed

DERIVED_SOURCE_DIRECTORIES parameter of
WEBKIT_MAKE_FORWARDING_HEADERS. Accept absolute paths for FILES
parameter.

Source/JavaScriptCore:

  • CMakeLists.txt: Do not use DERIVED_SOURCE_DIRECTORIES parameter

of WEBKIT_MAKE_FORWARDING_HEADERS. Added generated headers to
JavaScriptCore_PRIVATE_FRAMEWORK_HEADERS.

Source/WebCore:

No new tests because no behavior changes.

  • PlatformWin.cmake: Do not use DERIVED_SOURCE_DIRECTORIES of

WEBKIT_MAKE_FORWARDING_HEADERS. Added
WebCore_PRIVATE_FRAMEWORK_HEADERS.

  • WebCoreMacros.cmake (GENERATE_DOM_NAMES): Added

${_namespace}ElementTypeHelpers.h to _outputfiles.

Source/WebKitLegacy:

  • PlatformWin.cmake: Do not use DERIVED_SOURCE_DIRECTORIES

parameter of WEBKIT_MAKE_FORWARDING_HEADERS. Added
WebKitLegacyGUID_PRIVATE_FRAMEWORK_HEADERS.

Tools:

  • TestWebKitAPI/PlatformGTK.cmake: Removed the workaround of using an intermediate target.
  • TestWebKitAPI/PlatformWPE.cmake: Ditto.
9:23 AM Changeset in webkit [243745] by Shawn Roberts
  • 3 edits in trunk/LayoutTests

inspector/audit/basic.html is a flaky timeout on bots
https://bugs.webkit.org/show_bug.cgi?id=196448

Unreviewed test gardening

  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations: Updating test expectaions for flaky timeout
8:58 AM Changeset in webkit [243744] by sbarati@apple.com
  • 5 edits
    2 adds in trunk/Source/JavaScriptCore

Add a ValueRepReduction phase
https://bugs.webkit.org/show_bug.cgi?id=196234

Reviewed by Filip Pizlo.

This patch adds a ValueRepReduction phase. The main idea here is
to try to reduce DoubleRep(RealNumberUse:ValueRep(DoubleRepUse:@x))
to just be @x. This patch handles such above strengh reduction rules
as long as we prove that all users of the ValueRep can be converted
to using the incoming double value. That way we prevent introducing
a parallel live range for the double value.

This patch tracks the uses of the ValueRep through Phi variables,
so we can convert entire Phi variables to being Double instead
of JSValue if the Phi also has only double uses.

This is implemented through a simple escape analysis. DoubleRep(RealNumberUse:)
and OSR exit hints are not counted as escapes. All other uses are counted
as escapes. Connected Phi graphs are converted to being Double only if the
entire graph is ok with the result being Double.

Some ways we could extend this phase in the future:

  • There are a lot of DoubleRep(NumberUse:@ValueRep(@x)) uses. This ensures that the result of the DoubleRep of @x is not impure NaN. We could handle this case if we introduced a PurifyNaN node and replace the DoubleRep with PurifyNaN(@x). Alternatively, we could see if certain users of this DoubleRep are okay with impure NaN flowing into them and we'd need to ensure their output type is always treated as if the input is impure NaN.
  • We could do sinking of ValueRep where we think it's profitable. So instead of an escape making it so we never represent the variable as a Double, we could make the escape reconstruct the JSValueRep where profitable.
  • We can extend this phase to handle Int52Rep if it's profitable.
  • We can opt other nodes into accepting incoming Doubles so we no longer treat them as escapes.

This patch is somewhere between neutral and a 1% progression on JetStream 2.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):

  • dfg/DFGValueRepReductionPhase.cpp: Added.

(JSC::DFG::ValueRepReductionPhase::ValueRepReductionPhase):
(JSC::DFG::ValueRepReductionPhase::run):
(JSC::DFG::ValueRepReductionPhase::convertValueRepsToDouble):
(JSC::DFG::performValueRepReduction):

  • dfg/DFGValueRepReductionPhase.h: Added.
  • runtime/Options.h:
8:57 AM Changeset in webkit [243743] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

fast/viewport/ios/constant-width-viewport-after-changing-view-scale.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=195341

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations: Updating test expecations for flaky failure
8:50 AM Changeset in webkit [243742] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

fast/viewport/ios/viewport-shrink-to-fit-on-new-navigation.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196495

Unreviewed test gardening

  • platform/ios-simulator-wk2/TestExpectations: Updating test expectations for flaky failure
7:47 AM Changeset in webkit [243741] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

[GSteamer][WebRTC] Fix building libwebrtc on ARM
https://bugs.webkit.org/show_bug.cgi?id=196157

Patch by Thibault Saunier <tsaunier@igalia.com> on 2019-04-02
Reviewed by Philippe Normand.

Making sure neon files are built as required

  • CMakeLists.txt:
7:31 AM Changeset in webkit [243740] by Diego Pino Garcia
  • 4 edits in trunk/LayoutTests

REGRESSION(r243512): Change locale of test in intl-datetimeformat.js
https://bugs.webkit.org/show_bug.cgi?id=196395

r243512 modifes Intl.DateTimeFormat to obey 2-digit hour. A test was
added to test 2-digit hour in Russian using 12-hour setting as true and
false. In the former case, the expected string appends the string 'AM'
in Russian. This localised string made GTK-based ports fail since
according to Glib the 'am_pm' values in Russian are not localised.

This patch keeps the same test but changes locale to 'en' to prevent
the test from failing.

Reviewed by Michael Catanzaro.

  • js/intl-datetimeformat-expected.txt:
  • js/script-tests/intl-datetimeformat.js:
  • platform/gtk/js/intl-datetimeformat-expected.txt:
3:59 AM Changeset in webkit [243739] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Update the status of ResizeObserver in features.json.
https://bugs.webkit.org/show_bug.cgi?id=196443

Patch by Cathie Chen <cathiechen> on 2019-04-02
Reviewed by Rob Buis.

  • features.json:

Apr 1, 2019:

11:44 PM Changeset in webkit [243738] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Nullptr crash in Document::open after calling policyChecker().stopCheck()
https://bugs.webkit.org/show_bug.cgi?id=196479

Reviewed by Antti Koivisto.

Added a missing nullptr check in Document::open after calling m_frame->loader().policyChecker().stopCheck()
since it invokes m_willSubmitFormCompletionHandlers in WebKit2, and that could clear m_frame.

Unfortunately, we don't have any reproducible test case.

  • dom/Document.cpp:

(WebCore::Document::open):

11:23 PM Changeset in webkit [243737] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

Skip the tests added in r236519 on iOS. This feature was never implemented in iOS.

  • platform/ios/TestExpectations:
9:01 PM Changeset in webkit [243736] by timothy@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix.

  • crypto/mac/SerializedCryptoKeyWrapMac.mm:

(WebCore::createAndStoreMasterKey): Add ALLOW_DEPRECATED_DECLARATIONS_BEGIN/END
around SecTrustedApplicationCreateFromPath call.

8:16 PM Changeset in webkit [243735] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Remove some unused iOS scrolling-related code in Frame
https://bugs.webkit.org/show_bug.cgi?id=196473

Reviewed by Zalan Bujtas.

This code has no callers.

  • page/Frame.cpp:

(WebCore::Frame::Frame):
(WebCore::Frame::scrollOverflowLayer): Deleted.
(WebCore::Frame::overflowAutoScrollTimerFired): Deleted.
(WebCore::Frame::startOverflowAutoScroll): Deleted.
(WebCore::Frame::checkOverflowScroll): Deleted.

  • page/Frame.h:
8:14 PM Changeset in webkit [243734] by Chris Dumez
  • 4 edits in trunk

Attr nodes are not cloned properly
https://bugs.webkit.org/show_bug.cgi?id=196466

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline WPT test now that one more check is passing.

  • web-platform-tests/dom/nodes/Document-importNode-expected.txt:

Source/WebCore:

Attr nodes are not cloned properly according to:

A cloned Attr node should retain its prefix and namespace.

Both Gecko and Blink agree with the DOM specification here.

No new tests, rebaselined existing test.

  • dom/Document.cpp:

(WebCore::Document::importNode):

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

Unreviewed, drop debug logging landed as part of r242903 by mistake.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::decidePolicyForNavigationAction):

7:57 PM Changeset in webkit [243732] by Jonathan Bedard
  • 11 edits in trunk/Tools

run-api-tests: Upload test results
https://bugs.webkit.org/show_bug.cgi?id=196323
<rdar://problem/49356714>

Reviewed by Lucas Forschler.

  • Scripts/webkitpy/api_tests/manager.py:

(Manager):
(Manager.run): Upload results to a results database.

  • Scripts/webkitpy/api_tests/run_api_tests.py:

(parse_args): Add upload arguments.

  • Scripts/webkitpy/port/base.py:

(Port):
(Port.configuration_for_upload): Creates a configuration dictionary for uploading results.
(Port.commits_for_upload): Create a list of commits from the WebKit repository tests are run from along
with commits from any other associated repositories.

  • Scripts/webkitpy/port/device.py:

(Device):
(Device.build_version): Access build_versoin of underlying platform device.

  • Scripts/webkitpy/port/ios_simulator_unittest.py:

(IOSSimulatorTest):
(IOSSimulatorTest.test_configuration_for_upload):

  • Scripts/webkitpy/port/device_port.py:

(DevicePort):
(DevicePort.configuration_for_upload): Devices are unique because their configuration is not
the same as the machine uploading results.

  • Scripts/webkitpy/port/mac.py:

(MacPort):
(MacPort.configuration_for_upload): Define SDK in upload configuration for Mac.

  • Scripts/webkitpy/port/mac_unittest.py:

(MacTest):
(MacTest.test_configuration_for_upload):

  • Scripts/webkitpy/xcode/simulated_device.py:

(SimulatedDeviceManager._create_device_with_runtime):
(SimulatedDevice.init): Create simulated device with a build_version.

  • Scripts/webkitpy/xcode/simulated_device_unittest.py:

(test_existing_simulator):

7:04 PM Changeset in webkit [243731] by commit-queue@webkit.org
  • 2 edits
    2 adds in trunk/Source/WebKit

Add SPI to give injected bundles access to displayed PDFDocuments
https://bugs.webkit.org/show_bug.cgi?id=196471
<rdar://problem/48080768>

Patch by Remy Demarest <rdemarest@apple.com> on 2019-04-01
Reviewed by Tim Horton.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/c/mac/WKBundlePageMac.h: Added.
  • WebProcess/InjectedBundle/API/c/mac/WKBundlePageMac.mm: Added.

(WKBundlePageGetPDFDocumentInFrame):

6:31 PM Changeset in webkit [243730] by commit-queue@webkit.org
  • 51 edits
    15 deletes in trunk

Remove the SVG tear off objects for SVGMatrix, SVGTransfrom, SVGTransformList and SVGAnimatedTransformList
https://bugs.webkit.org/show_bug.cgi?id=196086

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

Source/WebCore:

The IDL changes:

SVGTransform.idl:

Remove the NewObject qualifier from matrix attribute. This matches
the specs: https://www.w3.org/TR/SVG11/coords.html#InterfaceSVGTransform.
SVGTransform will internally hold an SVGMatrix. A change in this
SVGMatrix will affect the container SVGTransform.

SVGTransformList.idl:

Remove the NewObject qualifier from consolidate() method. This matches
the specs:
https://www.w3.org/TR/SVG11/coords.html#__svg__SVGTransformList__consolidate
The method consolidate() should return a reference to the first item
in the list after consolidating it.

Code changes:

-- SVGMatrix is now a superclass of SVGValueProperty<AffineTransform>.

No need for SVGMatrixValue since it was wrapper of AffineTransform.

-- SVGTransformValue now holds a Ref<SVGMatrix> member in addition to the

angle and the rotationCenter. Ref<SVGMatrix> is what SVGTransform.matrix
will return. So a change in this matrix will change the owner SVGTransform.

-- SVGTransform is now the owner of SVGMatrix via its SVGTransformValue.

-- SVGTransformList is now a superclass of SVGValuePropertyList<SVGTransform>.

It is responsible for parsing a String to items of SVGTransform.

-- SVGAnimatedTransformList is now defined as SVGAnimatedPropertyList<

SVGTransformList>.

Note the ownership chain of these objects is the following:

-- SVGAnimatedTransformList owns the SVGTransformList via its baseVal

and animVal members.

-- SVGTransformList owns SVGTransform via its list of items

-- SVGTransform owns SVGMatrix via its SVGTransformValue.

So a change in SVGMatrix will propagate to the owner SVGElement through
the following ownership chain:

SVGMatrix

|_ SVGTransfrom

|_ SVGTransformList

|_ SVGAmimatedTransformList

|_ SVGElement

To get the mechanics of this change right, a new accessor, a new animator
and animation functions are added for the SVGAnimatedTransformList.

-- SVGViewSpec used to hold an SVGAnimatedTransformListAttribute for the
member m_transform although this member should not be animated. See the
comment in the old SVGViewSpec::transform(). This has been changed in this
patch. SVGViewSpec now holds Ref<SVGTransformList> which matches the specs:
https://www.w3.org/TR/SVG11/types.html#InterfaceSVGViewSpec.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • svg/SVGAnimateElementBase.cpp:

(WebCore::SVGAnimateElementBase::attributeAnimationController):
(WebCore::SVGAnimateElementBase::hasValidAttributeType const):
(WebCore::SVGAnimateElementBase::calculateToAtEndOfDurationValue):
(WebCore::SVGAnimateElementBase::calculateFromAndToValues):
(WebCore::SVGAnimateElementBase::calculateFromAndByValues):

  • svg/SVGAnimateElementBase.h:

(WebCore::SVGAnimateElementBase::animateRangeString const):

  • svg/SVGAnimateTransformElement.cpp:

(WebCore::SVGAnimateTransformElement::animateRangeString const):

  • svg/SVGAnimateTransformElement.h:

This change is needed because animating the transform attribute can be

written as

<animate ... from="translate(100)" to="translate(200)"/>

or

<animateTransform type="translate" from="100" to="200"/>"

So we need to surround the animation range string with the type qualifier
for animateTransform.

  • svg/SVGAnimatedTransformList.cpp: Removed.
  • svg/SVGAnimatedTransformList.h: Removed.
  • svg/SVGAnimatedType.h: Removed.
  • svg/SVGAnimatedTypeAnimator.cpp: Removed.
  • svg/SVGAnimatedTypeAnimator.h: Removed.
  • svg/SVGAnimationElement.cpp:

(WebCore::SVGAnimationElement::adjustForInheritance): Deleted.

  • svg/SVGAnimationElement.h:

(WebCore::SVGAnimationElement::adjustForInheritance): Deleted.
(WebCore::SVGAnimationElement::adjustFromToListValues): Deleted.
(WebCore::SVGAnimationElement::animateDiscreteType): Deleted.
These functions were used by SVGLegacyAttributeAnimationController.

  • svg/SVGAnimatorFactory.h: Removed.
  • svg/SVGExternalResourcesRequired.h:

(WebCore::SVGExternalResourcesRequired::isKnownAttribute):

  • svg/SVGFEImageElement.h:
  • svg/SVGFEMorphologyElement.h:
  • svg/SVGFETileElement.h:
  • svg/SVGFitToViewBox.h:

(WebCore::SVGFitToViewBox::isKnownAttribute):

  • svg/SVGGradientElement.cpp:

(WebCore::SVGGradientElement::SVGGradientElement):
(WebCore::SVGGradientElement::parseAttribute):
(WebCore::SVGGradientElement::registerAttributes): Deleted.

  • svg/SVGGradientElement.h:

(WebCore::SVGGradientElement::gradientTransform const):
(WebCore::SVGGradientElement::gradientTransformAnimated):
(WebCore::SVGGradientElement::isKnownAttribute):

  • svg/SVGGraphicsElement.cpp:

(WebCore::SVGGraphicsElement::SVGGraphicsElement):
(WebCore::SVGGraphicsElement::animatedLocalTransform const):
(WebCore::SVGGraphicsElement::parseAttribute):
(WebCore::SVGGraphicsElement::svgAttributeChanged):
There is one attribute for this element which is "SVGNames::transformAttr"
So there is no need to check for it twice.

(WebCore::SVGGraphicsElement::registerAttributes): Deleted.

  • svg/SVGGraphicsElement.h:

(WebCore::SVGGraphicsElement::transform const):
(WebCore::SVGGraphicsElement::transformAnimated):
(WebCore::SVGGraphicsElement::isKnownAttribute): Deleted.

  • svg/SVGLangSpace.cpp:

(WebCore::SVGLangSpace::SVGLangSpace):
(WebCore::SVGLangSpace::xmlspace const):
(WebCore::SVGLangSpace::isKnownAttribute):
(WebCore::SVGLangSpace::svgAttributeChanged):
(WebCore::SVGLangSpace::registerAttributes): Deleted.

  • svg/SVGLangSpace.h:

(WebCore::SVGLangSpace::xmllang const):
(WebCore::SVGLangSpace::setXmllang):
(WebCore::SVGLangSpace::setXmlspace):
(WebCore::SVGLangSpace::attributeRegistry): Deleted.
(WebCore::SVGLangSpace::isKnownAttribute): Deleted.

  • svg/SVGLegacyAttributeAnimationController.cpp: Removed.
  • svg/SVGLegacyAttributeAnimationController.h: Removed.
  • svg/SVGLinearGradientElement.cpp:

(WebCore::setGradientAttributes):

  • svg/SVGMaskElement.h:
  • svg/SVGMatrix.h:

(WebCore::SVGMatrix::create):
(WebCore::SVGMatrix::a const):
(WebCore::SVGMatrix::setA):
(WebCore::SVGMatrix::b const):
(WebCore::SVGMatrix::setB):
(WebCore::SVGMatrix::c const):
(WebCore::SVGMatrix::setC):
(WebCore::SVGMatrix::d const):
(WebCore::SVGMatrix::setD):
(WebCore::SVGMatrix::e const):
(WebCore::SVGMatrix::setE):
(WebCore::SVGMatrix::f const):
(WebCore::SVGMatrix::setF):
(WebCore::SVGMatrix::multiply const):
(WebCore::SVGMatrix::inverse const):
(WebCore::SVGMatrix::translate const):
(WebCore::SVGMatrix::scale const):
(WebCore::SVGMatrix::scaleNonUniform const):
(WebCore::SVGMatrix::rotate const):
(WebCore::SVGMatrix::rotateFromVector const):
(WebCore::SVGMatrix::flipX const):
(WebCore::SVGMatrix::flipY const):
(WebCore::SVGMatrix::skewX const):
(WebCore::SVGMatrix::skewY const):

  • svg/SVGPatternElement.cpp:

(WebCore::SVGPatternElement::SVGPatternElement):
(WebCore::SVGPatternElement::parseAttribute):
(WebCore::SVGPatternElement::svgAttributeChanged):
(WebCore::SVGPatternElement::collectPatternAttributes const):
(WebCore::SVGPatternElement::localCoordinateSpaceTransform const):
(WebCore::SVGPatternElement::registerAttributes): Deleted.

  • svg/SVGPatternElement.h:
  • svg/SVGPoint.h:

(WebCore::SVGPoint::matrixTransform const):

  • svg/SVGPolyElement.h:

(WebCore::SVGPolyElement::isKnownAttribute): Deleted.

  • svg/SVGRadialGradientElement.cpp:

(WebCore::setGradientAttributes):

  • svg/SVGSVGElement.cpp:

(WebCore::SVGSVGElement::createSVGTransform):
(WebCore::SVGSVGElement::createSVGTransformFromMatrix):
(WebCore::SVGSVGElement::viewBoxToViewTransform const):

  • svg/SVGTextElement.cpp:

(WebCore::SVGTextElement::animatedLocalTransform const):

  • svg/SVGTransform.cpp: Removed.
  • svg/SVGTransform.h:

(WebCore::SVGTransform::create):
(WebCore::SVGTransform::~SVGTransform):
(WebCore::SVGTransform::clone const):
(WebCore::SVGTransform::type):
(WebCore::SVGTransform::angle):
(WebCore::SVGTransform::matrix):
(WebCore::SVGTransform::setMatrix):
(WebCore::SVGTransform::setTranslate):
(WebCore::SVGTransform::setScale):
(WebCore::SVGTransform::setRotate):
(WebCore::SVGTransform::setSkewX):
(WebCore::SVGTransform::setSkewY):
(WebCore::SVGTransform::SVGTransform):

  • svg/SVGTransform.idl:
  • svg/SVGTransformList.h:
  • svg/SVGTransformList.idl:
  • svg/SVGTransformListValues.cpp: Removed.
  • svg/SVGTransformListValues.h: Removed.
  • svg/SVGTransformValue.cpp: Removed.
  • svg/SVGTransformValue.h:

(WebCore::SVGTransformValue::SVGTransformValue):
(WebCore::SVGTransformValue::operator=):
(WebCore::SVGTransformValue::matrix const):
(WebCore::SVGTransformValue::rotationCenter const):
(WebCore::SVGTransformValue::isValid const):
(WebCore::SVGTransformValue::setMatrix):
(WebCore::SVGTransformValue::matrixDidChange):
(WebCore::SVGTransformValue::translate const):
(WebCore::SVGTransformValue::setTranslate):
(WebCore::SVGTransformValue::scale const):
(WebCore::SVGTransformValue::setScale):
(WebCore::SVGTransformValue::setRotate):
(WebCore::SVGTransformValue::setSkewX):
(WebCore::SVGTransformValue::setSkewY):
(WebCore::SVGTransformValue::valueAsString const):
(WebCore::SVGTransformValue::prefixForTransfromType):
(WebCore::SVGTransformValue::appendNumbers const):
(WebCore::SVGTransformValue::appendMatrix const):
(WebCore::SVGTransformValue::appendTranslate const):
(WebCore::SVGTransformValue::appendScale const):
(WebCore::SVGTransformValue::appendRotate const):
(WebCore::SVGTransformValue::appendSkewX const):
(WebCore::SVGTransformValue::appendSkewY const):
(WebCore::SVGTransformValue::matrix): Deleted.

  • svg/SVGTransformable.cpp:

(WebCore::SVGTransformable::parseAndSkipType):
(WebCore::parseAndSkipType): Deleted.
(WebCore::SVGTransformable::parseTransformAttribute): Deleted.
The code of this function was moved to SVGTransformList::parse().

  • svg/SVGTransformable.h:

There is no need for enum TransformParsingMode. It was used by
SVGViewSpec::parseViewSpec() to tell SVGTransformable::parseTransformAttribute()
not to clear the list. SVGTransfromList now has two parse() functions:
one public and the second is private. The public one clear the list
before parsing the input String. The private one just does the parsing.
SVGViewSpec::parseViewSpec() calls the private once since it is a friend
of SVGTransfromList.

  • svg/SVGValue.h: Removed.
  • svg/SVGViewSpec.cpp:

(WebCore::SVGViewSpec::SVGViewSpec):
(WebCore::SVGViewSpec::reset):
(WebCore::SVGViewSpec::parseViewSpec):
(WebCore::SVGViewSpec::registerAttributes): Deleted.
(WebCore::SVGViewSpec::transform): Deleted.

  • svg/SVGViewSpec.h:
  • svg/properties/SVGAnimatedPropertyAccessorImpl.h:
  • svg/properties/SVGAnimatedPropertyAnimatorImpl.h:
  • svg/properties/SVGAnimatedPropertyImpl.h:
  • svg/properties/SVGAnimatedTransformListPropertyTearOff.h: Removed.
  • svg/properties/SVGAnimationAdditiveListFunctionImpl.h:

(WebCore::SVGAnimationTransformListFunction::progress):

  • svg/properties/SVGAnimationAdditiveValueFunctionImpl.h:
  • svg/properties/SVGAttributeRegistry.h:
  • svg/properties/SVGMatrixTearOff.h: Removed.
  • svg/properties/SVGPropertyAccessorImpl.h:
  • svg/properties/SVGPropertyOwnerRegistry.h:

(WebCore::SVGPropertyOwnerRegistry::registerProperty):

LayoutTests:

  • svg/dom/SVGTransformList-basics-expected.txt:
  • svg/dom/SVGTransformList-basics.xhtml:

These changes are required because SVGTransfromList will be following the
SVG2 specs regarding adding new items to the list.

See https://www.w3.org/TR/SVG/types.html#TermListInterface.

6:08 PM Changeset in webkit [243729] by Fujii Hironori
  • 2 edits in trunk

[CMake] Remove EXTRA_DIRECTORIES parameter of WEBKIT_MAKE_FORWARDING_HEADERS
https://bugs.webkit.org/show_bug.cgi?id=196436

Reviewed by Darin Adler.

The parameter was only for WebCore/ForwardingHeaders which was
removed in Bug 182347.

  • Source/cmake/WebKitMacros.cmake: Remove unused EXTRA_DIRECTORIES parameter.
5:26 PM Changeset in webkit [243728] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Remove extra newline characters (Follow-up fix to r243707)

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
5:20 PM Changeset in webkit [243727] by Devin Rousso
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: Debugger: modernize serialization of breakpoints and the maps that hold them
https://bugs.webkit.org/show_bug.cgi?id=196230
<rdar://problem/49236485>

Reviewed by Joseph Pecoraro.

  • UserInterface/Controllers/DebuggerManager.js:

(WI.DebuggerManager):
(WI.DebuggerManager.prototype.breakpointsForSourceCode):
(WI.DebuggerManager.prototype.addBreakpoint):
(WI.DebuggerManager.prototype.removeBreakpoint):
(WI.DebuggerManager.prototype._setBreakpoint):
(WI.DebuggerManager.prototype._setBreakpoint.didSetBreakpoint):

  • UserInterface/Models/Breakpoint.js:

(WI.Breakpoint):
(WI.Breakpoint.fromJSON): Added.
(WI.Breakpoint.prototype.toJSON):
(WI.Breakpoint.prototype.set resolved):
(WI.Breakpoint.prototype.recreateAction):
(WI.Breakpoint.prototype.saveIdentityToCookie):
(WI.Breakpoint.prototype._isSpecial): Added.
(WI.Breakpoint.set resolved.isSpecialBreakpoint): Deleted.
(WI.Breakpoint.serializeOptions): Deleted.

  • UserInterface/Models/BreakpointAction.js:

(WI.BreakpointAction):
(WI.BreakpointAction.fromJSON): Added.
(WI.BreakpointAction.prototype.toProtocol): Added.

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WI.DebuggerSidebarPanel.prototype._addBreakpointsForSourceCode):

  • UserInterface/Views/SourceCodeTextEditor.js:

(WI.SourceCodeTextEditor.prototype._prepareEditorForInitialContent):
(WI.SourceCodeTextEditor.prototype._breakpointsEnabledDidChange):

5:01 PM Changeset in webkit [243726] by Wenson Hsieh
  • 9 edits
    4 copies in trunk/Source/WebKit

[WebKit2] Introduce a public version of WKWebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=195989
<rdar://problem/47228232>

Reviewed by Tim Horton.

Expose the existing _WKWebsitePolicies object as WKWebpagePreferences, in what will eventually become a public
header in the WebKit SDK (WKWebpagePreferences.h). Following a similar transitioning strategy as
_WKWebsiteDataStore and WKWebsiteDataStore, we move existing logic from _WKWebsitePolicies to WKWebpagePreferences
and make _WKWebsitePolicies a wrapper around WKWebpagePreferences.

No change in behavior.

  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

Wrap API::WebsitePolicies with WKWebpagePreferences.

  • SourcesCocoa.txt:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _updateWebsitePolicies:]):

  • UIProcess/API/Cocoa/WKWebpagePreferences.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h.
  • UIProcess/API/Cocoa/WKWebpagePreferences.mm: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.mm.

Introduce WKWebpagePreferences.

(+[WKWebpagePreferences defaultPreferences]):
(-[WKWebpagePreferences dealloc]):
(-[WKWebpagePreferences init]):
(-[WKWebpagePreferences _setContentBlockersEnabled:]):
(-[WKWebpagePreferences _contentBlockersEnabled]):
(-[WKWebpagePreferences _setAllowedAutoplayQuirks:]):
(-[WKWebpagePreferences _allowedAutoplayQuirks]):
(-[WKWebpagePreferences _setAutoplayPolicy:]):
(-[WKWebpagePreferences _autoplayPolicy]):
(-[WKWebpagePreferences _setDeviceOrientationAndMotionAccessPolicy:]):
(-[WKWebpagePreferences _deviceOrientationAndMotionAccessPolicy]):
(-[WKWebpagePreferences _setPopUpPolicy:]):
(-[WKWebpagePreferences _popUpPolicy]):
(-[WKWebpagePreferences _customHeaderFields]):
(-[WKWebpagePreferences _setCustomHeaderFields:]):
(-[WKWebpagePreferences _websiteDataStore]):
(-[WKWebpagePreferences _setWebsiteDataStore:]):
(-[WKWebpagePreferences _setCustomUserAgent:]):
(-[WKWebpagePreferences _customUserAgent]):
(-[WKWebpagePreferences _setCustomJavaScriptUserAgentAsSiteSpecificQuirks:]):
(-[WKWebpagePreferences _customJavaScriptUserAgentAsSiteSpecificQuirks]):
(-[WKWebpagePreferences _setCustomNavigatorPlatform:]):
(-[WKWebpagePreferences _customNavigatorPlatform]):
(-[WKWebpagePreferences _apiObject]):

  • UIProcess/API/Cocoa/WKWebpagePreferencesInternal.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h.
  • UIProcess/API/Cocoa/WKWebpagePreferencesPrivate.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKWebsitePolicies.h.

Reintroduce all the interfaces currently available on _WKWebsitePolicies as underscore-prefixed SPI on
WKWebpagePreferences.

  • UIProcess/API/Cocoa/_WKWebsitePolicies.h:
  • UIProcess/API/Cocoa/_WKWebsitePolicies.mm:

Make _WKWebsitePolicies wrap WKWebpagePreferences, and plumb all existing SPI on WKWebsitePolicies through to
WKWebpagePreferences.

(-[_WKWebsitePolicies init]):
(-[_WKWebsitePolicies webpagePreferences]):
(-[_WKWebsitePolicies setContentBlockersEnabled:]):
(-[_WKWebsitePolicies contentBlockersEnabled]):
(-[_WKWebsitePolicies setAllowedAutoplayQuirks:]):
(-[_WKWebsitePolicies allowedAutoplayQuirks]):
(-[_WKWebsitePolicies setAutoplayPolicy:]):
(-[_WKWebsitePolicies autoplayPolicy]):
(-[_WKWebsitePolicies setDeviceOrientationAndMotionAccessPolicy:]):
(-[_WKWebsitePolicies deviceOrientationAndMotionAccessPolicy]):
(-[_WKWebsitePolicies setPopUpPolicy:]):
(-[_WKWebsitePolicies popUpPolicy]):
(-[_WKWebsitePolicies customHeaderFields]):
(-[_WKWebsitePolicies setCustomHeaderFields:]):
(-[_WKWebsitePolicies websiteDataStore]):
(-[_WKWebsitePolicies setWebsiteDataStore:]):
(-[_WKWebsitePolicies setCustomUserAgent:]):
(-[_WKWebsitePolicies customUserAgent]):
(-[_WKWebsitePolicies setCustomJavaScriptUserAgentAsSiteSpecificQuirks:]):
(-[_WKWebsitePolicies customJavaScriptUserAgentAsSiteSpecificQuirks]):
(-[_WKWebsitePolicies setCustomNavigatorPlatform:]):
(-[_WKWebsitePolicies customNavigatorPlatform]):
(-[_WKWebsitePolicies description]):
(-[_WKWebsitePolicies _apiObject]):
(-[_WKWebsitePolicies dealloc]): Deleted.

  • UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h:
  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):

  • WebKit.xcodeproj/project.pbxproj:
5:00 PM Changeset in webkit [243725] by Alan Coon
  • 7 edits in tags/Safari-608.1.13.4/Source

Versioning.

4:54 PM Changeset in webkit [243724] by Alan Coon
  • 3 edits
    2 adds in tags/Safari-608.1.13.4

Cherry-pick r243684. rdar://problem/49454962

[iOS] Crash when changing inputmode for certain types of focusable elements
https://bugs.webkit.org/show_bug.cgi?id=196431
<rdar://problem/49454962>

Reviewed by Tim Horton.

Source/WebKit:

The crash is happening because WebPage::focusedElementDidChangeInputMode assumes that the document's focused
element must be the same as m_focusedElement in WebPage. However, this is not the case, since m_focusedElement
is only set for certain types of elements that require user input (e.g. text fields, editable content, select
menus, etc.). The function then attempts to dereference m_focusedElement, which may be null if the document's
focused element doesn't fall into one of the aforementioned categories.

To fix this, bail if the element that is changing inputmode is not equal to the WebPage's current focused
element. See below for more details.

Test: fast/forms/change-inputmode-crash.html

  • WebProcess/WebPage/WebPage.cpp: (WebKit::isTextFormControlOrEditableContent):

Clean up some existing logic by introducing a helper method for determining whether an element should
propagate inputmode attribute changes to the UI process. Also, check the element type using type traits instead
of checking against the tag name.

(WebKit::WebPage::elementDidFocus):
(WebKit::WebPage::focusedElementDidChangeInputMode):

LayoutTests:

Add a layout test that exercises the edge case; see WebKit ChangeLogs for more details.

  • fast/forms/change-inputmode-crash-expected.txt: Added.
  • fast/forms/change-inputmode-crash.html: Added.

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

4:54 PM Changeset in webkit [243723] by Alan Coon
  • 20 edits
    3 adds
    1 delete in tags/Safari-608.1.13.4

Cherry-pick r243671. rdar://problem/47859936

Move WebResourceLoadStatisticsStore IPC calls from the UI process to the network process
https://bugs.webkit.org/show_bug.cgi?id=196407
<rdar://problem/47859936>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/storageAccess/grant-storage-access-under-opener-at-popup-user-gesture.html

This patch removes old code for the batching into "statistics updated" calls.
Since the move of Resource Load Statistics to the network process, all such
collection is done directly through dedicated calls to the network process.

The remaining functionality was renamed to make it more clear, i.e.
ResourceLoadObserver::notifyObserver() renamed to
ResourceLoadObserver::updateCentralStatisticsStore().

  • loader/ResourceLoadObserver.cpp: (WebCore::ResourceLoadObserver::setStatisticsUpdatedCallback): (WebCore::ResourceLoadObserver::setRequestStorageAccessUnderOpenerCallback): (WebCore::ResourceLoadObserver::logSubresourceLoading): (WebCore::ResourceLoadObserver::logWebSocketLoading): (WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution): (WebCore::ResourceLoadObserver::requestStorageAccessUnderOpener): (WebCore::ResourceLoadObserver::updateCentralStatisticsStore): (WebCore::ResourceLoadObserver::clearState): (WebCore::ResourceLoadObserver::setNotificationCallback): Deleted. (WebCore::ResourceLoadObserver::ResourceLoadObserver): Deleted. (WebCore::ResourceLoadObserver::scheduleNotificationIfNeeded): Deleted. (WebCore::ResourceLoadObserver::notifyObserver): Deleted.
  • loader/ResourceLoadObserver.h:
  • testing/Internals.cpp: (WebCore::Internals::notifyResourceLoadObserver):

Source/WebKit:

The two WebResourceLoadStatisticsStore IPC endpoints were left behind when we
moved Resource Load Statistics from the UI process to the network process. One
of the endpoints is the message RequestStorageAccessUnderOpener which underpins
our compatibility fix for federated logins using popups. This patch redirects
these IPC calls to the network process and cleans up some assumptions around
them.

  • CMakeLists.txt:

Removed the old IPC receiver.

  • DerivedSources.make:

Removed the old IPC receiver.

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp: (WebKit::WebResourceLoadStatisticsStore::requestUpdate): Deleted.

This is no longer needed since there is a dedicated update mechanism
that actually sends the update.

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:
  • NetworkProcess/NetworkConnectionToWebProcess.cpp: (WebKit::NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated): (WebKit::NetworkConnectionToWebProcess::requestStorageAccessUnderOpener):

Two new IPC receivers to pipe the calls to the network process.

(WebKit::NetworkConnectionToWebProcess::requestResourceLoadStatisticsUpdate): Deleted.

NetworkConnectionToWebProcess::resourceLoadStatisticsUpdated now serves
this purpose.

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • UIProcess/WebResourceLoadStatisticsStore.messages.in: Removed.

Removed the old IPC receiver.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/API/c/WKBundle.cpp: (WKBundleResourceLoadStatisticsNotifyObserver):

Function name update.

  • WebProcess/WebProcess.cpp:

Now calls IPC to the network process instead of the UI process.

LayoutTests:

  • http/tests/storageAccess/deny-storage-access-under-opener-expected.txt:
  • http/tests/storageAccess/deny-storage-access-under-opener-if-auto-dismiss-expected.txt:
  • http/tests/storageAccess/grant-storage-access-under-opener-at-popup-user-gesture-expected.txt: Added.
  • http/tests/storageAccess/grant-storage-access-under-opener-at-popup-user-gesture.html: Added.
  • http/tests/storageAccess/resources/get-cookies.php:
  • http/tests/storageAccess/resources/produce-user-gesture-set-cookie-and-report-back.html: Added.

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

4:38 PM Changeset in webkit [243722] by Devin Rousso
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: DOMDebugger: disabling a breakpoint for a specific event listener removes it from the UI
https://bugs.webkit.org/show_bug.cgi?id=196453
<rdar://problem/49489318>

Reviewed by Joseph Pecoraro.

Allow breakpoints for specific event listeners to be disabled, rather than immeditately
removing/deleting them when they are about to become disabled. This preserves the existing
functionality, but now allows for the tree element to stay in the UI in a disabled state.

  • UserInterface/Controllers/DOMManager.js:

(WI.DOMManager):
(WI.DOMManager.prototype.setBreakpointForEventListener):
(WI.DOMManager.prototype.removeBreakpointForEventListener):
(WI.DOMManager.prototype.removeEventListenerBreakpointsForNode): Added.
(WI.DOMManager.prototype._updateEventBreakpoint): Added.
(WI.DOMManager.prototype._handleEventBreakpointDisabledStateChanged): Added.

  • UserInterface/Controllers/DOMDebuggerManager.js:

(WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged):

  • UserInterface/Views/EventBreakpointTreeElement.js:

(WI.EventBreakpointTreeElement.prototype.populateContextMenu):
(WI.EventBreakpointTreeElement.prototype._toggleBreakpoint):

  • UserInterface/Views/ContextMenuUtilities.js:

(WI.appendContextMenuItemsForDOMNodeBreakpoints):

  • UserInterface/Views/DOMNodeTreeElement.js:

(WI.DOMNodeTreeElement.prototype.ondelete):

4:13 PM Changeset in webkit [243721] by Alan Coon
  • 1 copy in tags/Safari-608.1.13.4

New tag.

3:41 PM Changeset in webkit [243720] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Canvas: auto-record after page load sometimes shows the wrong UI
https://bugs.webkit.org/show_bug.cgi?id=196320
<rdar://problem/49356686>

Reviewed by Joseph Pecoraro.

It was previously possible that the timing of a recording being started and the preview
image being loaded would not always be in the same order.

Utilize the existing View.prototype.layout mechanics to ensure that updates are coalesced
and that the changes are always applied in a particular order.

  • UserInterface/Views/CanvasContentView.js:

(WI.CanvasContentView):
(WI.CanvasContentView.prototype.refreshPreview): Added.
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.layout):
(WI.CanvasContentView.prototype.shown):
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype._refreshPixelSize):
(WI.CanvasContentView.prototype.refresh): Deleted.
(WI.CanvasContentView.prototype._recordingStarted): Deleted.
(WI.CanvasContentView.prototype._recordingProgress): Deleted.
(WI.CanvasContentView.prototype._recordingStopped): Deleted.
(WI.CanvasContentView.prototype._shaderProgramAdded): Deleted.
(WI.CanvasContentView.prototype._shaderProgramRemoved): Deleted.

  • UserInterface/Views/CanvasOverviewContentView.js:

(WI.CanvasOverviewContentView.prototype._refreshPreviews):

3:41 PM Changeset in webkit [243719] by Devin Rousso
  • 5 edits in trunk

Web Inspector: DOMDebugger: breakpoints for attribute modifications still fire when breakpoints are disabled
https://bugs.webkit.org/show_bug.cgi?id=196456
<rdar://problem/49489747>

Reviewed by Joseph Pecoraro.

Source/WebCore:

Test: inspector/dom-debugger/dom-breakpoints.html

  • inspector/agents/InspectorDOMDebuggerAgent.cpp:

(WebCore::InspectorDOMDebuggerAgent::didInvalidateStyleAttr):
(WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent):

LayoutTests:

  • inspector/dom-debugger/dom-breakpoints.html:
  • inspector/dom-debugger/dom-breakpoints-expected.txt:
3:38 PM Changeset in webkit [243718] by Devin Rousso
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Canvas: add compatibility support for WebMetal
https://bugs.webkit.org/show_bug.cgi?id=196412
<rdar://problem/49439417>

Reviewed by Joseph Pecoraro.

  • UserInterface/Models/Canvas.js:

(WI.Canvas.fromPayload):
(WI.Canvas.displayNameForContextType):

  • UserInterface/Protocol/Legacy/12.2/InspectorBackendCommands.js:
  • Versions/Inspector-iOS-12.2.json:
3:35 PM Changeset in webkit [243717] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: "Copy as HTML" appears twice when showing a context menu for a logged node
https://bugs.webkit.org/show_bug.cgi?id=196271
<rdar://problem/49290676>

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/ObjectTreeBaseTreeElement.js:

(WI.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):

  • Localizations/en.lproj/localizedStrings.js:
2:57 PM Changeset in webkit [243716] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

[ews-app] Use API_KEY to accept results data
https://bugs.webkit.org/show_bug.cgi?id=196461

Reviewed by Dewei Zhu.

  • BuildSlaveSupport/ews-app/ews/views/results.py:

(Results.post): Validate EWS_API_KEY before accepting any data.

  • BuildSlaveSupport/ews-build/events.py:

(Events.sendData): Send EWS_API_KEY if available along with event data.

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

Web Inspector: Debugger: breakpoints don't populate in inspector2 on first load
https://bugs.webkit.org/show_bug.cgi?id=196063
<rdar://problem/49097787>

Reviewed by Joseph Pecoraro.

In the case that a breakpoint becomes resolved after the resource has finished loaded, there
won't be an already existing TreeElement for the breakpoint to replace.

This can realistically only happen if the IndexedDB lookup is super slow, or the resource is
extremely fast (e.g. a data url).

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WI.DebuggerSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):
(WI.DebuggerSidebarPanel.prototype._addDebuggerObject): Deleted.

  • UserInterface/Views/SourcesNavigationSidebarPanel.js:

(WI.SourcesNavigationSidebarPanel.prototype._addBreakpoint):
(WI.SourcesNavigationSidebarPanel.prototype._addBreakpointsForSourceCode):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):

2:27 PM Changeset in webkit [243714] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

[Win10] Look into platform specific layout test failures
https://bugs.webkit.org/show_bug.cgi?id=196463

Unreviewed test gardening.

  • platform/win/TestExpectations:
2:21 PM Changeset in webkit [243713] by Wenson Hsieh
  • 9 edits in trunk

Unable to copy and paste a PDF from Notes into Mail compose body
https://bugs.webkit.org/show_bug.cgi?id=196442
<rdar://problem/48573098>

Reviewed by Tim Horton.

Source/WebCore:

Refactor some logic for inserting attachment elements upon paste or drop. Currently, we only prefer inserting
content as attachment elements if the items are annotated with UIPreferredPresentationStyleAttachment. However,
many data sources around the system (both first and third party) have not adopted this API, which makes it
difficult to determine whether a given item provider should be treated as a file or not. In this bug in
particular, no preferred presentation style is set, so we fail to handle the paste command by inserting an
attachment element.

However, most apps around the system that write file or attachment-like data to the pasteboard will at least
offer a suggested name for the file, in the form of -[NSItemProvider suggestedName]. To address this, instead of
relying solely on the preferredPresentationStyle, additionally take a suggested name as an indicator that the
item is probably a file.

In fact, Pasteboard::fileContentState already has similar logic to check for either a suggested file name or
explicitly specified presentation style. We pull this out into a separate helper method on PasteboardItemInfo,
and use it for both Pasteboard::fileContentState and prefersAttachmentRepresentation.

Tests: WKAttachmentTestsIOS.InsertPastedContactAsAttachment

WKAttachmentTestsIOS.InsertPastedMapItemAsAttachment

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::mimeTypeFromContentType):

Work around <rdar://problem/49478229> by using the "text/vcard" MIME type to handle "public.vcard". CoreServices
currently maps "public.vcard" to "text/directory" when using UTTypeCopyPreferredTagWithClass, despite the SPI
-[NSURLFileTypeMappings MIMETypeForExtension:] returning "text/vcard" for a ".vcf" file.

  • platform/PasteboardItemInfo.h:

(WebCore::PasteboardItemInfo::canBeTreatedAsAttachmentOrFile const):

Add a helper method to determine whether the PasteboardItemInfo prefers to be represented as inline data, or an
attachment, or neither. This differs slightly from the existing value of preferredPresentationStyle in that we
consider having a suggested file name as a strong indicator that the item should be treated as an attachment,
even if the presentation style is unspecified.

  • platform/cocoa/PasteboardCocoa.mm:

(WebCore::Pasteboard::fileContentState):

Use PasteboardItemInfo::canBeTreatedAsAttachmentOrFile().

  • platform/ios/PasteboardIOS.mm:

(WebCore::prefersAttachmentRepresentation):

Use PasteboardItemInfo::canBeTreatedAsAttachmentOrFile().

Source/WebKit:

Relax the -canPerformAction: logic in the case of pasting an attachment. Consider an NSItemProvider to possibly
paste as an attachment if either it has a preferred presentation style of UIPreferredPresentationStyleAttachment
or has a style of UIPreferredPresentationStyleUnspecified, but has a suggested file name.

This allows for the "Paste" action to be shown in the callout menu when copying and pasting a non-text file.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView canPerformActionForWebView:withSender:]):

Tools:

Add new API tests to exercise pasting CNContact and MKMapItem-backed item providers. Additionally, adjust an
existing test that pastes a PDF file as an attachment to not require UIPreferredPresentationStyleAttachment
to be specified on the item providers.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(TestWebKitAPI::mapItemForTesting):
(TestWebKitAPI::contactItemForTesting):

2:08 PM Changeset in webkit [243712] by timothy_horton@apple.com
  • 7 edits in trunk

Make UIWKDocumentContext rects per-character instead of per-word
https://bugs.webkit.org/show_bug.cgi?id=196459

Reviewed by Wenson Hsieh.

Source/WebCore:

No new tests; adjusted expected results of WebKit.DocumentEditingContext.

  • editing/TextIterator.cpp:

(WebCore::CharacterIterator::CharacterIterator):

  • editing/TextIterator.h:

(WebCore::CharacterIterator::atEnd const):
(WebCore::CharacterIterator::text const):
Add WEBCORE_EXPORT to some things.
Introduce a CharacterIterator constructor that takes Positions, like one that TextIterator has.
Move initializers to the header.

Source/WebKit:

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::requestDocumentEditingContext):
Switch to CharacterIterator instead of TextIterator directly, to get
per-character rects as the API requests.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/DocumentEditingContext.mm:

(TEST):
Adjust test results due to switching to per-character rects.

1:52 PM Changeset in webkit [243711] by Chris Dumez
  • 9 edits in trunk

UIProcess crash when a prewarmed process is terminated
https://bugs.webkit.org/show_bug.cgi?id=196451
<rdar://problem/49245471>

Reviewed by Geoffrey Garen.

Source/WebKit:

Stop assuming that WebProcessProxy::m_websiteDataStore is non-null as this is no longer
true after r243384. For example, prewarmed WebContent processe do not get a data store
until they actually get used.

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _prewarmedProcessIdentifier]):

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

(WebKit::WebProcessPool::networkProcessIdentifier):
(WebKit::WebProcessPool::prewarmedProcessIdentifier):

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

(WebKit::WebProcessProxy::didClose):
(WebKit::WebProcessProxy::didFinishLaunching):
(WebKit::WebProcessProxy::requestTermination):
(WebKit::WebProcessProxy::isReleaseLoggingAllowed const):

  • UIProcess/WebProcessProxy.h:

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessPreWarming.mm:

(TEST):

1:46 PM Changeset in webkit [243710] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

accessibility/Mac/async-increment-decrement-action.html is crashing and blaming other tests on bots
https://bugs.webkit.org/show_bug.cgi?id=187391

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations: Updating test expectations to skip crashing test
12:53 PM Changeset in webkit [243709] by Antti Koivisto
  • 5 edits
    2 adds in trunk

Update event region when toggling pointer-events:none
https://bugs.webkit.org/show_bug.cgi?id=195902
<rdar://problem/48988384>

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/scrolling/ios/event-region-pointer-events.html

Normally paint invalidation requests compositing configuration update whenever anything that would
affect event region changes. However mutating 'pointer-events' property does not cause paint invalidation.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::styleWillChange):

Request compositing update explicitly from the containing layer.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::invalidateEventRegion):

  • rendering/RenderLayer.h:

LayoutTests:

  • fast/scrolling/ios/event-region-pointer-events-expected.txt: Added.
  • fast/scrolling/ios/event-region-pointer-events.html: Added.
12:51 PM Changeset in webkit [243708] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

[GTK][WPE] Add more websitedatastore directories to web process sandbox
https://bugs.webkit.org/show_bug.cgi?id=196447

Patch by Patrick Griffis <Patrick Griffis> on 2019-04-01
Reviewed by Michael Catanzaro.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::bubblewrapSpawn):

  • UIProcess/glib/WebProcessProxyGLib.cpp:

(WebKit::WebProcessProxy::platformGetLaunchOptions):

12:48 PM Changeset in webkit [243707] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-app] Display OS and Xcode configuration in status-bubble's hover-over message
https://bugs.webkit.org/show_bug.cgi?id=196449

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-app/ews/views/statusbubble.py:

(StatusBubble.get_os_details): Method to get OS and Xcode details.
(StatusBubble._build_bubble): Moved the timestamp logic to common method.
(StatusBubble.get_build_timestamp): Method to get the timestamp to display for the build.

12:45 PM Changeset in webkit [243706] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Remove force schedulers from OpenSource EWS Buildbot
https://bugs.webkit.org/show_bug.cgi?id=196444

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/ews-build/loadConfig.py: Remove ForceSchedulers.
12:05 PM Changeset in webkit [243705] by Chris Dumez
  • 7 edits
    5 adds in trunk

Support "noreferrer" for window.open()
https://bugs.webkit.org/show_bug.cgi?id=194533

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline WPT test now that all checks are passing.

  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noreferrer-expected.txt:

Source/WebCore:

Support "noreferrer" for window.open() as per:

Tests: imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noreferrer.html

http/wpt/html/browsers/the-window-object/window-open-noopener-webkit.html

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::createWindow):

  • page/WindowFeatures.cpp:

(WebCore::setWindowFeature):

  • page/WindowFeatures.h:

LayoutTests:

Add equivalent test to imported/w3c/web-platform-tests/html/browsers/the-window-object/window-open-noopener.html
but which relies on localStorage instead of BroadcastChannel so that it works with WebKit.

  • http/wpt/html/browsers/the-window-object/support/noreferrer-target-webkit.html: Added.
  • http/wpt/html/browsers/the-window-object/window-open-noopener-webkit-expected.txt: Added.
  • http/wpt/html/browsers/the-window-object/window-open-noopener-webkit.html: Added.
11:54 AM Changeset in webkit [243704] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: CPU Usage Timeline - Adjust Energy Impact Threshholds
https://bugs.webkit.org/show_bug.cgi?id=196421
<rdar://problem/49125703>

Reviewed by Devin Rousso.

  • Low - Keep Below 3% to continue to encourage idle pages stay below 3% Might want to reduce to 2.5 or 2 after fixing bug 196419.
  • High - Make Above 30% instead of 50% to encourage long running interactivity to stay below 30% Depends on interaction, but sustained (1-2min) at 30%+ will certainly impact battery.
  • Very High - Make above 100% instead of 150% CPU Usage spikes around page load and is quite often still under 100% despite many threads. Drop this a bit as we dropped High down.

Reduce the size of the Medium section, and increase the High section
Having 70% of the chart be "Medium" is just too much Medium, and
we've now made it more possible to be in the High range.

  • UserInterface/Views/CPUTimelineView.js:

(WI.CPUTimelineView.prototype.get mediumEnergyThreshold):
(WI.CPUTimelineView.prototype.get highEnergyThreshold):
(WI.CPUTimelineView.prototype.get lowEnergyGraphBoundary):
(WI.CPUTimelineView.prototype.get mediumEnergyGraphBoundary):
(WI.CPUTimelineView.prototype.get highEnergyGraphBoundary):
(WI.CPUTimelineView.prototype.initialLayout):
(WI.CPUTimelineView.prototype.layout.bestThreadLayoutMax):
(WI.CPUTimelineView.prototype._layoutEnergyChart):

11:46 AM Changeset in webkit [243703] by commit-queue@webkit.org
  • 12 edits
    1 delete in trunk

SVGMatrix.IDL methods do not conform to the specs
https://bugs.webkit.org/show_bug.cgi?id=196263

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

Source/WebCore:

I think there was a misconception about these functions. The specs link
is: https://www.w3.org/TR/SVG11/coords.html#InterfaceSVGMatrix.

Notice that the specs does not state that the SVGMethod methods should
raise the exception NO_MODIFICATION_ALLOWED_ERR if the object is read
only. Notice setting the attribute 'a' for example may raise this
exception. Therefore, I think the specs wanted to make these operations
read-only. None of the methods should raise the exception
NO_MODIFICATION_ALLOWED_ERR.

In fact the SVG code was doing the right thing. For example SVGMatrix::scale()
was calling SVGMatrixValue::scale() which was making a copy of itself,
applying the scale on the copy and then returning the copy. When
SVGMatrix::scale() receives the copy of the SVGMatrixValue it creates and
returns a new SVGMatrix object.

  • WebCore.xcodeproj/project.pbxproj:
  • svg/SVGMatrix.h:

(WebCore::SVGMatrix::create):
(WebCore::SVGMatrix::a const):
(WebCore::SVGMatrix::b const):
(WebCore::SVGMatrix::c const):
(WebCore::SVGMatrix::d const):
(WebCore::SVGMatrix::e const):
(WebCore::SVGMatrix::f const):
(WebCore::SVGMatrix::multiply const):
(WebCore::SVGMatrix::inverse const):
(WebCore::SVGMatrix::translate const):
(WebCore::SVGMatrix::scale const):
(WebCore::SVGMatrix::scaleNonUniform const):
(WebCore::SVGMatrix::rotate const):
(WebCore::SVGMatrix::rotateFromVector const):
(WebCore::SVGMatrix::flipX const):
(WebCore::SVGMatrix::flipY const):
(WebCore::SVGMatrix::skewX const):
(WebCore::SVGMatrix::skewY const):
(WebCore::SVGMatrix::a): Deleted.
(WebCore::SVGMatrix::b): Deleted.
(WebCore::SVGMatrix::c): Deleted.
(WebCore::SVGMatrix::d): Deleted.
(WebCore::SVGMatrix::e): Deleted.
(WebCore::SVGMatrix::f): Deleted.
(WebCore::SVGMatrix::multiply): Deleted.
(WebCore::SVGMatrix::inverse): Deleted.
(WebCore::SVGMatrix::translate): Deleted.
(WebCore::SVGMatrix::scale): Deleted.
(WebCore::SVGMatrix::scaleNonUniform): Deleted.
(WebCore::SVGMatrix::rotate): Deleted.
(WebCore::SVGMatrix::rotateFromVector): Deleted.
(WebCore::SVGMatrix::flipX): Deleted.
(WebCore::SVGMatrix::flipY): Deleted.
(WebCore::SVGMatrix::skewX): Deleted.
(WebCore::SVGMatrix::skewY): Deleted.
(WebCore::SVGMatrix::SVGMatrix): Deleted.

  • svg/SVGMatrix.idl:
  • svg/SVGMatrixValue.h: Removed.
  • svg/SVGTransform.cpp:

(WebCore::SVGTransform::matrix):

  • svg/SVGTransformDistance.cpp:

(WebCore::SVGTransformDistance::addToSVGTransform const):

  • svg/SVGTransformValue.h:

(WebCore::SVGTransformValue::matrix const):
(WebCore::SVGTransformValue::matrix):
(WebCore::SVGTransformValue::svgMatrix): Deleted.
(WebCore::operator==): Deleted.
(WebCore::operator!=): Deleted.

  • svg/properties/SVGMatrixTearOff.h:
  • svg/properties/SVGPropertyTearOff.h:

(WebCore::SVGPropertyTearOff::propertyReference const):

LayoutTests:

  • svg/dom/SVGMatrix-expected.txt:
  • svg/dom/SVGMatrix.html:

Clean this test. Make it test the case when valid arguments are passed to
the methods of the SVGMatrix. Make sure the methods are read-only. All
of them should be making a copy of the matrix, applying the transform and
returning the copy.

11:33 AM Changeset in webkit [243702] by ysuzuki@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] JSRunLoopTimer::Manager should be small
https://bugs.webkit.org/show_bug.cgi?id=196425

Reviewed by Darin Adler.

Using very large Key or Value in HashMap potentially bloats memory since HashMap pre-allocates large size of
memory ((sizeof(Key) + sizeof(Value)) * N) for its backing storage's array. Using std::unique_ptr<> for JSRunLoopTimer's
PerVMData to keep HashMap's backing store size small.

  • runtime/JSRunLoopTimer.cpp:

(JSC::JSRunLoopTimer::Manager::timerDidFire):
(JSC::JSRunLoopTimer::Manager::registerVM):
(JSC::JSRunLoopTimer::Manager::scheduleTimer):
(JSC::JSRunLoopTimer::Manager::cancelTimer):
(JSC::JSRunLoopTimer::Manager::timeUntilFire):
(JSC::JSRunLoopTimer::Manager::didChangeRunLoop):

  • runtime/JSRunLoopTimer.h:
11:33 AM Changeset in webkit [243701] by Simon Fraser
  • 11 edits in trunk/Source/WebCore

Plumb through a ScrollType value that indicates whether a scroll was a user or programmatic scroll
https://bugs.webkit.org/show_bug.cgi?id=196424

Reviewed by Zalan Bujtas.

In preparation for fixing webkit.org/b/195584, we need to know if an overflow scroll
is programmatic, so plumb through an enum value. The functions touched by this patch are
only ever called for programmatic scrolls.

  • dom/Element.cpp:

(WebCore::Element::scrollTo):
(WebCore::Element::setScrollLeft):
(WebCore::Element::setScrollTop):

  • platform/ScrollTypes.h:
  • rendering/RenderBox.cpp:

(WebCore::RenderBox::setScrollLeft):
(WebCore::RenderBox::setScrollTop):

  • rendering/RenderBox.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollToXPosition):
(WebCore::RenderLayer::scrollToYPosition):

  • rendering/RenderLayer.h:
  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::setScrollLeft):
(WebCore::RenderListBox::setScrollTop):

  • rendering/RenderListBox.h:
  • rendering/RenderTextControlSingleLine.cpp:

(WebCore::RenderTextControlSingleLine::setScrollLeft):
(WebCore::RenderTextControlSingleLine::setScrollTop):

  • rendering/RenderTextControlSingleLine.h:
11:25 AM Changeset in webkit [243700] by stephan.szabo@sony.com
  • 3 edits
    3 adds in trunk

[PlayStation] Add initialization for JSC shell for PlayStation port
https://bugs.webkit.org/show_bug.cgi?id=195411

Reviewed by Ross Kirsling.

.:

Add functions for doing the automatic libc, floating point
initializations, signing of binaries and libraries and
wrapping of libc functions on PlayStation port.

  • Source/cmake/OptionsPlayStation.cmake:

Source/JavaScriptCore:

Add ps options

  • shell/PlatformPlayStation.cmake: Added.
  • shell/playstation/Initializer.cpp: Added.

(initializer):

11:23 AM Changeset in webkit [243699] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Crash when loading Twitter with autoplay video enabled.
https://bugs.webkit.org/show_bug.cgi?id=196446
<rdar://problem/49060359>

Reviewed by Brent Fulgham.

This is caused by a syscall violation.

  • WebProcess/com.apple.WebProcess.sb.in:
11:21 AM Changeset in webkit [243698] by commit-queue@webkit.org
  • 5 edits
    1 add in trunk

Add SPI to canonicalize NSURLs with WTF::URL
https://bugs.webkit.org/show_bug.cgi?id=196415
<rdar://problem/44980271>

Patch by Alex Christensen <achristensen@webkit.org> on 2019-04-01
Reviewed by Darin Adler.

Source/WebKitLegacy/mac:

  • Misc/WebNSURLExtras.h:
  • Misc/WebNSURLExtras.mm:

(-[NSURL _webkit_canonicalize_with_wtf]):
_webkit_canonicalize is old and changing it causes strange bugs like rdar://problem/5315926
Instead, make a new version that uses WTF::URL to canonicalize an NSURL.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitLegacy/mac/URLCanonicalization.mm: Added.

(TestWebKitAPI::TEST):

10:27 AM Changeset in webkit [243697] by Michael Catanzaro
  • 10 edits in trunk/Source

Stop trying to support building JSC with clang 3.8
https://bugs.webkit.org/show_bug.cgi?id=195947
<rdar://problem/49069219>

Reviewed by Darin Adler.

It seems WebKit hasn't built with clang 3.8 in a while, no devs are using this compiler, we
don't know how much effort it would be to make JSC work again, and it's making the code
Source/JavaScriptCore:

worse. Remove my hacks to support clang 3.8 from JSC.

  • bindings/ScriptValue.cpp:

(Inspector::jsToInspectorValue):

  • bytecode/GetterSetterAccessCase.cpp:

(JSC::GetterSetterAccessCase::create):
(JSC::GetterSetterAccessCase::clone const):

  • bytecode/InstanceOfAccessCase.cpp:

(JSC::InstanceOfAccessCase::clone const):

  • bytecode/IntrinsicGetterAccessCase.cpp:

(JSC::IntrinsicGetterAccessCase::clone const):

  • bytecode/ModuleNamespaceAccessCase.cpp:

(JSC::ModuleNamespaceAccessCase::clone const):

  • bytecode/ProxyableAccessCase.cpp:

(JSC::ProxyableAccessCase::clone const):

Source/WTF:

worse. Remove my hacks to support clang 3.8 from WTF.

  • wtf/MetaAllocator.cpp:

(WTF::MetaAllocator::allocate):

  • wtf/text/StringConcatenate.h:

(WTF::tryMakeStringFromAdapters):

10:21 AM Changeset in webkit [243696] by Shawn Roberts
  • 2 edits in trunk/LayoutTests

storage/indexeddb/modern/deletedatabase-2-private.html is a flaky failure on Mac Debug
https://bugs.webkit.org/show_bug.cgi?id=196445

Unreviewed test gardening

  • platform/ios-simulator-wk2/TestExpectations: Updating test expectations for flaky test
9:45 AM Changeset in webkit [243695] by Wenson Hsieh
  • 5 edits in trunk/Source/WebCore

[iOS] Refactor some logic for inserting pasted or dropped virtual card files as attachment elements
https://bugs.webkit.org/show_bug.cgi?id=196435
Work towards <rdar://problem/48573098>

Reviewed by Darin Adler.

Refactor some existing codepaths on iOS for inserting VCard files as attachment elements. Instead of using a
separate readVirtualContactFile method for converting a vcard file or data into an attachment element (possibly
accompanied by a link), use the existing readFilePaths WebContentReader method.

To handle links which may accompany the attachment element, add a helper method in PasteboardIOS that reads a
titled URL prior to inserting an attachment element, in the case of pasting or dropping a VCF.

This means we no longer need to handle attachment reading in readPasteboardWebContentDataForType, so we can
simply bail before reading "public.vcard" here and defer to reading other data types.

Covered by existing API tests in WKAttachmentTests and DragAndDropTestsIOS.

  • editing/WebContentReader.h:
  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::WebContentReader::readVirtualContactFile): Deleted.

  • platform/Pasteboard.h:
  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::readPasteboardWebContentDataForType):
(WebCore::readURLAlongsideAttachmentIfNecessary):
(WebCore::prefersAttachmentRepresentation):
(WebCore::Pasteboard::read):
(WebCore::Pasteboard::readRespectingUTIFidelities):

9:38 AM Changeset in webkit [243694] by Antti Koivisto
  • 4 edits
    2 adds in trunk

Trying to scroll the compose pane on gmail.com scrolls the message list behind
https://bugs.webkit.org/show_bug.cgi?id=196426
<rdar://problem/49402667>

Reviewed by Darin Adler.

Source/WebCore:

Test: fast/scrolling/ios/event-region-visibility-hidden.html

We fail to gather event region from desdendants of non-overflowing elements with 'visibility:hidden'.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::paintObject):

Skip the subtree walk only if the current region covers the box already.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::paintList):

Remove the (wrong) optimization, we bail out quickly on first renderer if possible so this is not high value.

LayoutTests:

  • fast/scrolling/ios/event-region-visibility-hidden-expected.txt: Added.
  • fast/scrolling/ios/event-region-visibility-hidden.html: Added.
6:36 AM Changeset in webkit [243693] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Change expectation for imported/w3c/web-platform-tests/resize-observer/eventloop.html.
https://bugs.webkit.org/show_bug.cgi?id=196422

Patch by Cathie Chen <cathiechen> on 2019-04-01
Reviewed by Frédéric Wang.

At current implement, notifyResizeObservers is not synchronized to requestAnimationFrame, so the test would be flaky.

  • TestExpectations: eventloop.html is flaky because it depend on the order of requestAnimationFrame and ResizeObserver timer.
6:02 AM Changeset in webkit [243692] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

[GTK][WPE] Fix seccomp rule for blacklisting TIOCSTI
https://bugs.webkit.org/show_bug.cgi?id=196297

Patch by Patrick Griffis <Patrick Griffis> on 2019-04-01
Reviewed by Michael Catanzaro.

More information can be found here: https://www.exploit-db.com/exploits/46594

Note that this sandbox never made it into production so does not
warrant any CVE specific to WebKit.

  • UIProcess/Launcher/glib/BubblewrapLauncher.cpp:

(WebKit::setupSeccomp):

5:50 AM Changeset in webkit [243691] by emilio
  • 13 edits in trunk

Be less strict about closing blocks in attribute and functional pseudo-element selectors.
https://bugs.webkit.org/show_bug.cgi?id=142167

Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

  • web-platform-tests/dom/nodes/selectors.js: Add tests for ::slotted

Source/WebCore:

This was also an issue for, e.g., "::slotted(foo", turns out.

This matches Chromium, Firefox, and the spec:

https://drafts.csswg.org/css-syntax/#parse-error:

Certain points in the parsing algorithm are said to be parse errors. The error
handling for parse errors is well-defined: user agents must either act as
described below when encountering such problems, or must abort processing at
the first error that they encounter for which they do not wish to apply the
rules described below.

https://drafts.csswg.org/css-syntax/#consume-simple-block:

<EOF-token>

This is a parse error. Return the block.

Tests: web-platform-tests/dom/nodes/selectors.js (and probably others)

  • css/parser/CSSSelectorParser.cpp:

(WebCore::CSSSelectorParser::consumeAttribute):
(WebCore::CSSSelectorParser::consumePseudo):

2:47 AM Changeset in webkit [243690] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Build failure after r243644 in GTK Linux 64-bit stable builds
https://bugs.webkit.org/show_bug.cgi?id=196440

Patch by Pablo Saavedra <Pablo Saavedra> on 2019-04-01
Reviewed by Philippe Normand.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::updateTextureMapperFlags):

2:07 AM Changeset in webkit [243689] by zandobersek@gmail.com
  • 3 edits in trunk/Tools

[WPE] EventSenderProxy constructor is called before a PlatformWindow is usable
https://bugs.webkit.org/show_bug.cgi?id=196441

Reviewed by Carlos Garcia Campos.

Don't cache the wpe_view_backend object that might not exist yet at the
time of EventSenderProxy constructor invocation, but instead retrieve
that object whenever it's required for event dispatching. This should
avoid crashes in this constructor now that it's invoked before any
PlatformWindow has been set up (as changed in r243496).

  • WebKitTestRunner/EventSenderProxy.h:
  • WebKitTestRunner/wpe/EventSenderProxyWPE.cpp:

(WTR::viewBackend):
(WTR::EventSenderProxy::EventSenderProxy):
(WTR::EventSenderProxy::mouseDown):
(WTR::EventSenderProxy::mouseUp):
(WTR::EventSenderProxy::mouseMoveTo):
(WTR::EventSenderProxy::mouseScrollBy):
(WTR::EventSenderProxy::keyDown):
(WTR::EventSenderProxy::prepareAndDispatchTouchEvent):

Mar 31, 2019:

11:51 PM Changeset in webkit [243688] by ysuzuki@apple.com
  • 21 edits in trunk/Source

[JSC] Butterfly allocation from LargeAllocation should try "realloc" behavior if collector thread is not active
https://bugs.webkit.org/show_bug.cgi?id=196160

Reviewed by Saam Barati.

Source/JavaScriptCore:

"realloc" can be effective in terms of peak/current memory footprint when realloc succeeds because,

  1. It does not allocate additional memory while expanding a vector
  2. It does not deallocate an old memory, just reusing the current memory by expanding, so that memory footprint is tight even before scavenging

We found that we can "realloc" large butterflies in certain conditions are met because,

  1. If it goes to LargeAllocation, this memory region is never reused until GC sweeps it.
  2. Butterflies are owned by owner JSObjects, so we know the lifetime of Butterflies.

This patch attempts to use "realloc" onto butterflies if,

  1. Butterflies are allocated in LargeAllocation kind
  2. Concurrent collector is not active
  3. Butterflies do not have property storage

The condition (2) is required to avoid deallocating butterflies while the concurrent collector looks into it. The condition (3) is
also required to avoid deallocating butterflies while the concurrent compiler looks into it.

We also change LargeAllocation mechanism to using "malloc" and "free" instead of "posix_memalign". This allows us to use "realloc"
safely in all the platforms. Since LargeAllocation uses alignment to distinguish LargeAllocation and MarkedBlock, we manually adjust
16B alignment by allocating 8B more memory in "malloc".

Speedometer2 and JetStream2 are neutral. RAMification shows about 1% progression (even in some of JIT tests).

  • heap/AlignedMemoryAllocator.h:
  • heap/CompleteSubspace.cpp:

(JSC::CompleteSubspace::tryAllocateSlow):
(JSC::CompleteSubspace::reallocateLargeAllocationNonVirtual):

  • heap/CompleteSubspace.h:
  • heap/FastMallocAlignedMemoryAllocator.cpp:

(JSC::FastMallocAlignedMemoryAllocator::tryAllocateMemory):
(JSC::FastMallocAlignedMemoryAllocator::freeMemory):
(JSC::FastMallocAlignedMemoryAllocator::tryReallocateMemory):

  • heap/FastMallocAlignedMemoryAllocator.h:
  • heap/GigacageAlignedMemoryAllocator.cpp:

(JSC::GigacageAlignedMemoryAllocator::tryAllocateMemory):
(JSC::GigacageAlignedMemoryAllocator::freeMemory):
(JSC::GigacageAlignedMemoryAllocator::tryReallocateMemory):

  • heap/GigacageAlignedMemoryAllocator.h:
  • heap/IsoAlignedMemoryAllocator.cpp:

(JSC::IsoAlignedMemoryAllocator::tryAllocateMemory):
(JSC::IsoAlignedMemoryAllocator::freeMemory):
(JSC::IsoAlignedMemoryAllocator::tryReallocateMemory):

  • heap/IsoAlignedMemoryAllocator.h:
  • heap/LargeAllocation.cpp:

(JSC::isAlignedForLargeAllocation):
(JSC::LargeAllocation::tryCreate):
(JSC::LargeAllocation::tryReallocate):
(JSC::LargeAllocation::LargeAllocation):
(JSC::LargeAllocation::destroy):

  • heap/LargeAllocation.h:

(JSC::LargeAllocation::indexInSpace):
(JSC::LargeAllocation::setIndexInSpace):
(JSC::LargeAllocation::basePointer const):

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::sweepLargeAllocations):
(JSC::MarkedSpace::prepareForConservativeScan):

  • heap/WeakSet.h:

(JSC::WeakSet::isTriviallyDestructible const):

  • runtime/Butterfly.h:
  • runtime/ButterflyInlines.h:

(JSC::Butterfly::reallocArrayRightIfPossible):

  • runtime/JSObject.cpp:

(JSC::JSObject::ensureLengthSlow):

Source/WTF:

  • wtf/FastMalloc.h:

(WTF::FastMalloc::tryRealloc):

  • wtf/Gigacage.cpp:

(Gigacage::tryRealloc):

  • wtf/Gigacage.h:
11:42 PM Changeset in webkit [243687] by Manuel Rego Casasnovas
  • 3 edits
    2 adds in trunk

Scroll position gets reset when overflow:scroll is inside grid
https://bugs.webkit.org/show_bug.cgi?id=196337
<rdar://problem/49385784>

Reviewed by Simon Fraser.

Fix scroll position when there are changes inside a grid item with "overflow: scroll".

Source/WebCore:

Test: fast/css-grid-layout/grid-item-content-scroll-position.html

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::layoutBlock): Use beginUpdateScrollInfoAfterLayoutTransaction()
and endAndCommitUpdateScrollInfoAfterLayoutTransaction().

LayoutTests:

  • fast/css-grid-layout/grid-item-content-scroll-position-expected.txt: Added.
  • fast/css-grid-layout/grid-item-content-scroll-position.html: Added.
7:03 PM Changeset in webkit [243686] by rniwa@webkit.org
  • 4 edits in trunk/Source/WebCore

Reduce the size of Node::deref by eliminating an explicit parentNode check
https://bugs.webkit.org/show_bug.cgi?id=195776

Reviewed by Darin Adler.

Address post-commit review comments.

  • dom/Document.cpp:

(WebCore::Document::removedLastRef):

  • dom/Node.cpp:

(WebCore::Node::~Node):
(WebCore::Node::removedLastRef):

  • dom/Node.h:

(WebCore::Node::deref):
(WebCore::Node::setParentNode):

6:38 PM Changeset in webkit [243685] by Fujii Hironori
  • 3 edits in trunk/Tools

[Win][WebKit] MiniBrowser should support high DPI display
https://bugs.webkit.org/show_bug.cgi?id=196391

Reviewed by Alex Christensen.

  • MiniBrowser/win/WebKitBrowserWindow.cpp:

(WebKitBrowserWindow::WebKitBrowserWindow): Call resetZoom to set the page zoom factor.
(WebKitBrowserWindow::resetZoom): Changed the default page zoom factor from 1 to the device scale factor.

  • MiniBrowser/win/stdafx.h: Define WEBCORE_EXPORT.
1:01 PM Changeset in webkit [243684] by Wenson Hsieh
  • 3 edits
    2 adds in trunk

[iOS] Crash when changing inputmode for certain types of focusable elements
https://bugs.webkit.org/show_bug.cgi?id=196431
<rdar://problem/49454962>

Reviewed by Tim Horton.

Source/WebKit:

The crash is happening because WebPage::focusedElementDidChangeInputMode assumes that the document's focused
element must be the same as m_focusedElement in WebPage. However, this is not the case, since m_focusedElement
is only set for certain types of elements that require user input (e.g. text fields, editable content, select
menus, etc.). The function then attempts to dereference m_focusedElement, which may be null if the document's
focused element doesn't fall into one of the aforementioned categories.

To fix this, bail if the element that is changing inputmode is not equal to the WebPage's current focused
element. See below for more details.

Test: fast/forms/change-inputmode-crash.html

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::isTextFormControlOrEditableContent):

Clean up some existing logic by introducing a helper method for determining whether an element should
propagate inputmode attribute changes to the UI process. Also, check the element type using type traits instead
of checking against the tag name.

(WebKit::WebPage::elementDidFocus):
(WebKit::WebPage::focusedElementDidChangeInputMode):

LayoutTests:

Add a layout test that exercises the edge case; see WebKit ChangeLogs for more details.

  • fast/forms/change-inputmode-crash-expected.txt: Added.
  • fast/forms/change-inputmode-crash.html: Added.
12:29 PM Changeset in webkit [243683] by weinig@apple.com
  • 14 edits in trunk

Remove more i386 specific configurations
https://bugs.webkit.org/show_bug.cgi?id=196430

Reviewed by Alexey Proskuryakov.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

  • Configurations/ToolExecutable.xcconfig:

ARC can be enabled unconditionally now.

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

Source/WebKit:

  • Configurations/BaseTarget.xcconfig:

WK_HAVE_CORE_PREDICTION can now be enabled unconditionally.

  • Configurations/FeatureDefines.xcconfig:

ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

ENABLE_WEB_AUTHN_macosx can now be enabled unconditionally on macOS.

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

ENABLE_WEB_AUTHN_macosx and ENABLE_WEB_RTC_macosx can now be enabled unconditionally on macOS.

10:37 AM Changeset in webkit [243682] by aestes@apple.com
  • 24 edits
    1 move in trunk

[iOS] WebKit should consult the navigation response policy delegate before previewing a QuickLook document
https://bugs.webkit.org/show_bug.cgi?id=196433
<rdar://problem/49293305>

Reviewed by Tim Horton.

Source/WebCore:

When ResourceLoader would encounter a response with a MIME type that QuickLook supports, the
response would be implicitly allowed and a QuickLook preview would be generated. After
generating, the client's navigation response policy delegate would be notified of the
preview response, but not the underlying response. Notably, the preview response has a URL
scheme of "x-apple-ql-id", does not include any underlying HTTP headers, and usually has a
MIME type of "text/html" or "application/pdf" rather than the underlying response MIME type.

To allow clients to make better navigation response policy decisions, this patch changes the
above behavior for WKWebView clients that have linked against a version of WebKit that
includes this change. Rather than notifying the client's navigation response policy delegate
of the preview response, we notify the client of the underlying response. Only if the client
responds with a policy of "allow" will the QuickLook preview response be loaded (without
another call to the navigation response policy delegate).

Non-WKWebView clients and clients that have linked against a version of WebKit that does not
include this change will retain the original behavior.

Covered by existing layout tests and new and existing API tests.

  • WebCore.xcodeproj/project.pbxproj:
  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::shouldCreatePreviewLoaderForResponse const):
(WebCore::SubresourceLoader::didReceiveResponse):

  • loader/ios/PreviewLoader.h:
  • loader/ios/PreviewLoader.mm:

(-[WebPreviewLoader initWithResourceLoader:resourceResponse:]):
(-[WebPreviewLoader _loadPreviewIfNeeded]):
(-[WebPreviewLoader connection:didReceiveData:lengthReceived:]):
(-[WebPreviewLoader connectionDidFinishLoading:]):
(-[WebPreviewLoader connection:didFailWithError:]):
(WebCore::PreviewLoader::create):
(WebCore::PreviewLoader::didReceiveResponse):
(-[WebPreviewLoader _sendDidReceiveResponseIfNecessary]): Deleted.
(WebCore::PreviewLoader::shouldCreateForMIMEType): Deleted.

  • page/Settings.yaml:
  • platform/MIMETypeRegistry.cpp:

(WebCore::MIMETypeRegistry::canShowMIMEType):

  • platform/network/ios/PreviewConverter.h:
  • platform/network/ios/PreviewConverter.mm:

(WebCore::PreviewConverter::supportsMIMEType):

Source/WebKit:

Added WKWebViewConfiguration SPI for setting the QuickLook navigation response policy
decision behavior. The configuration setting defaults to YES for clients linked on or after
this WebKit change and NO otherwise.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::shouldInterruptLoadForCSPFrameAncestorsOrXFrameOptions):

  • Shared/WebPreferences.yaml:
  • Shared/ios/QuickLookDocumentData.cpp:

(WebKit::QuickLookDocumentData::isEmpty const):

  • Shared/ios/QuickLookDocumentData.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(defaultShouldDecidePolicyBeforeLoadingQuickLookPreview):
(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration encodeWithCoder:]):
(-[WKWebViewConfiguration initWithCoder:]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _shouldDecidePolicyBeforeLoadingQuickLookPreview]):
(-[WKWebViewConfiguration _setShouldDecidePolicyBeforeLoadingQuickLookPreview:]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/Cocoa/VersionChecks.h:
  • WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.cpp:

(WebKit::WebPreviewLoaderClient::didReceiveDataArray):

Source/WTF:

  • wtf/NeverDestroyed.h:

(WTF::NeverDestroyed::operator->):
(WTF::NeverDestroyed::operator-> const):

Tools:

Enhanced API test coverage to include all navigation response policy decisions in both
linked-before and linked-on-or-after modes. Also added new expectations for all tests.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/ios/PreviewConverter.cpp: Renamed from Tools/TestWebKitAPI/Tests/WebCore/ios/PreviewLoader.cpp.

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/QuickLook.mm:

(readFile):
(-[QuickLookDelegate initWithExpectedFileURL:responsePolicy:]):
(-[QuickLookDelegate initWithExpectedFileURL:previewMIMEType:responsePolicy:]):
(-[QuickLookDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[QuickLookDelegate _webView:didStartLoadForQuickLookDocumentInMainFrameWithFileName:uti:]):
(-[QuickLookDelegate _webView:didFinishLoadForQuickLookDocumentInMainFrame:]):
(-[QuickLookDelegate webView:didFailProvisionalNavigation:withError:]):
(-[QuickLookDelegate _webViewWebProcessDidCrash:]):
(-[QuickLookDelegate _downloadDidStart:]):
(-[QuickLookDelegate _download:didReceiveResponse:]):
(-[QuickLookDelegate _download:didReceiveData:]):
(-[QuickLookDelegate _download:decideDestinationWithSuggestedFilename:completionHandler:]):
(-[QuickLookDelegate _downloadDidFinish:]):
(-[QuickLookDelegate _download:didFailWithError:]):
(-[QuickLookDelegate _downloadDidCancel:]):
(-[QuickLookDelegate verifyDownload]):
(runTest):
(runTestDecideBeforeLoading):
(runTestDecideAfterLoading):
(TEST):
(-[QuickLookAsyncDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[QuickLookPasswordDelegate _webViewDidRequestPasswordForQuickLookDocument:]):
(-[QuickLookFrameLoadDelegate webView:didFinishLoadForFrame:]):
(-[QuickLookNavigationDelegate _webView:didStartLoadForQuickLookDocumentInMainFrameWithFileName:uti:]): Deleted.
(-[QuickLookNavigationDelegate _webView:didFinishLoadForQuickLookDocumentInMainFrame:]): Deleted.
(-[QuickLookNavigationDelegate webView:didFinishNavigation:]): Deleted.
(-[QuickLookAsyncNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]): Deleted.
(-[QuickLookAsyncNavigationDelegate _webView:didStartLoadForQuickLookDocumentInMainFrameWithFileName:uti:]): Deleted.
(-[QuickLookAsyncNavigationDelegate _webView:didFinishLoadForQuickLookDocumentInMainFrame:]): Deleted.
(-[QuickLookAsyncNavigationDelegate webView:didFinishNavigation:]): Deleted.
(-[QuickLookDecidePolicyDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]): Deleted.
(-[QuickLookDecidePolicyDelegate webView:didFailProvisionalNavigation:withError:]): Deleted.
(-[QuickLookDecidePolicyDelegate _webViewWebProcessDidCrash:]): Deleted.
(-[QuickLookPasswordNavigationDelegate _webViewDidRequestPasswordForQuickLookDocument:]): Deleted.

Note: See TracTimeline for information about the timeline view.