⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



May 21, 2019:

11:15 PM Changeset in webkit [245616] by Dewei Zhu
  • 4 edits in trunk/Websites/perf.webkit.org

Perf dashboard erroneously rejects a build request to build owned components when there are no patches.
https://bugs.webkit.org/show_bug.cgi?id=197928

Reviewed by Ryosuke Niwa.

Fix a bug that build type build request that only builds owned components failed to pass sanity check when there
is no repository accepts patch in triggerable repository group.
Add a sanity check to throw an error when build request type is build but there is no repository group template.

  • tools/js/buildbot-syncer.js:

(BuildbotSyncer.prototype._propertiesForBuildRequest): Changed sanity check the always requires repository accepts patch when there is a build to make it also works for build request only builds owned components.
(BuildbotSyncer._parseRepositoryGroup): Added check for repository group templates not null when build requiest type is build.

  • unit-tests/buildbot-syncer-tests.js: Added unit tests for this change.
  • unit-tests/resources/mock-v3-models.js: Added mock date for unit tests.
10:54 PM Changeset in webkit [245615] by Ryan Haddad
  • 2 edits in branches/safari-607-branch/Tools

Unreviewed, attempt to fix the TestWebKitAPI build.

  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:
10:37 PM Changeset in webkit [245614] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

Media controls don't show in WK2 video fullscreen sometimes
https://bugs.webkit.org/show_bug.cgi?id=198094
<rdar://problem/50970661>

Reviewed by Tim Horton.

Ensure that the WebAVPlayerLayer never allows hit testing, as this keeps touches from reaching
AVKit's controls.

  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(-[WebAVPlayerLayer init]):

8:18 PM Changeset in webkit [245613] by sbarati@apple.com
  • 10 edits
    3 adds in trunk/Source/WebCore

WHLSL: Add an AST dumper
https://bugs.webkit.org/show_bug.cgi?id=198059

Reviewed by Myles Maxfield.

This patch makes it so we can dump the WHLSL program's AST.
This will become useful when we're debugging passes that
transform the AST.

The dumper mostly prints in a style where the dump is almost
valid WHLSL code. E.g, this WHLSL program:
`
int foo(int arg) {

return arg + 1;

}
`

gets dumped as:
`
int foo(int arg) {

return operator+(arg, 1);

}
`

This patch also adds a way to dump between each pass, after
parsing, or at the end of all passes. Currently, this is controlled
by a static variable. I'll make these runtime configurable in a follow
up: https://bugs.webkit.org/show_bug.cgi?id=198097

No new tests because this is used for logging.

  • Modules/webgpu/WHLSL/AST/WHLSLAST.h: Added.
  • Modules/webgpu/WHLSL/AST/WHLSLAddressSpace.h:

(WebCore::WHLSL::AST::toString):

  • Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:

(WebCore::WHLSL::AST::BuiltInSemantic::toString const):

  • Modules/webgpu/WHLSL/AST/WHLSLEntryPointType.h:

(WebCore::WHLSL::AST::toString):

  • Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.h:

(WebCore::WHLSL::AST::ResourceSemantic::toString):

  • Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:

(WebCore::WHLSL::Metal::toString): Deleted.

  • Modules/webgpu/WHLSL/WHLSLASTDumper.cpp: Added.

(WebCore::WHLSL::ASTDumper::visit):

  • Modules/webgpu/WHLSL/WHLSLASTDumper.h: Added.

(WebCore::WHLSL::ASTDumper::toString):
(WebCore::WHLSL::ASTDumper::Indent::Indent):
(WebCore::WHLSL::ASTDumper::bumpIndent):
(WebCore::WHLSL::toString):
(WebCore::WHLSL::dumpAST):

  • Modules/webgpu/WHLSL/WHLSLPrepare.cpp:

(WebCore::WHLSL::dumpASTIfNeeded):
(WebCore::WHLSL::dumpASTAfterParsingIfNeeded):
(WebCore::WHLSL::dumpASTBetweenEachPassIfNeeded):
(WebCore::WHLSL::dumpASTAtEndIfNeeded):
(WebCore::WHLSL::prepareShared):

  • Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
8:05 PM Changeset in webkit [245612] by sbarati@apple.com
  • 2 edits in trunk/Source/WebCore

WHLSL: Parsing negative int literals parses the positive value instead
https://bugs.webkit.org/show_bug.cgi?id=198096

Reviewed by Dean Jackson.

I also made the code around < INT_MIN a bit easier to follow along with.

No new tests because we haven't imported WHLSL test suite yet.
Verified this works using the AST dumper.

  • Modules/webgpu/WHLSL/WHLSLParser.cpp:

(WebCore::WHLSL::intLiteralToInt):

7:48 PM Changeset in webkit [245611] by bshafiei@apple.com
  • 1 copy in tags/Safari-608.1.24.40.2

Tag Safari-608.1.24.40.2.

7:45 PM Changeset in webkit [245610] by bshafiei@apple.com
  • 2 edits in branches/safari-608.1.24.40-branch/Source/WebKitLegacy/mac

Cherry-pick r245596. rdar://problem/50939725

Fix IOSMAC build
https://bugs.webkit.org/show_bug.cgi?id=198082
<rdar://problem/50939725>

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

  • Misc/WebDownload.h:

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

7:43 PM Changeset in webkit [245609] by bshafiei@apple.com
  • 7 edits in branches/safari-608.1.24.40-branch/Source

Versioning.

6:01 PM Changeset in webkit [245608] by Alan Coon
  • 1 copy in tags/Safari-608.1.24.20.1

Tag Safari-608.1.24.20.1.

6:00 PM Changeset in webkit [245607] by Alan Coon
  • 1 copy in tags/Safari-608.1.24.40.1

Tag Safari-608.1.24.40.1.

5:54 PM Changeset in webkit [245606] by Ross Kirsling
  • 10 edits
    1 move
    2 adds in trunk/Source

[PlayStation] Don't call fcntl.
https://bugs.webkit.org/show_bug.cgi?id=197961

Reviewed by Fujii Hironori.

Source/JavaScriptCore:

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

(Inspector::Socket::setup):
Use WTF::setCloseOnExec and WTF::setNonBlock.

Source/WebKit:

  • Platform/IPC/unix/ConnectionUnix.cpp:

(IPC::Connection::open):
Use WTF::setNonBlock.

Source/WTF:

  • wtf/PlatformGTK.cmake:
  • wtf/PlatformJSCOnly.cmake:
  • wtf/PlatformPlayStation.cmake:
  • wtf/PlatformWPE.cmake:
  • wtf/UniStdExtras.h:
  • wtf/playstation/UniStdExtrasPlayStation.cpp: Added.

(WTF::setCloseOnExec):
(WTF::dupCloseOnExec):
(WTF::setNonBlock):

  • wtf/unix/UniStdExtrasUnix.cpp: Renamed from Source/WTF/wtf/UniStdExtras.cpp.

(WTF::setNonBlock):
Move UniStdExtras to unix/, add a PlayStation version that doesn't use fcntl, add an abstraction for O_NONBLOCK.

5:43 PM Changeset in webkit [245605] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[ews-build] Use custom templates for Buildbot (follow-up fix)
https://bugs.webkit.org/show_bug.cgi?id=198076

Unreviewed minor follow-up fix.

  • BuildSlaveSupport/ews-build/templates/build.jade:
5:38 PM Changeset in webkit [245604] by achristensen@apple.com
  • 2 edits in trunk/Tools

Fix branch build.
<rdar://problem/50625279>

  • TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:

We need to explicitly include WebKit.h on the branch.

5:34 PM Changeset in webkit [245603] by aakash_jain@apple.com
  • 2 edits
    2 adds in trunk/Tools

[ews-build] Use custom templates for Buildbot
https://bugs.webkit.org/show_bug.cgi?id=198076

Rubber-stamped by Jonathan Bedard.

5:12 PM Changeset in webkit [245602] by Simon Fraser
  • 9 edits
    17 adds in trunk

Layer flashing and poor perf during scrolling of message list on gmail.com and hotmail.com - overlap testing needs to constrained to clipping scopes
https://bugs.webkit.org/show_bug.cgi?id=198091
<rdar://problem/49403082>

Reviewed by Antti Koivisto.
Source/WebCore:

When overflow:scroll is scrolled asynchronously, we need to have already created compositing layers where necessary
for clipped-out layers in the scrolled content so that we have something to reveal. We also have ensure
that layers inside the scroller (but scrolled out of view) don't trigger overlap with layers outside the scroller.
All this has to work when the containing block hierarchy (clipping/scrolling) doesn't match the paint order hierarchy (structure
of the z-order and compositing trees).

Overlap testing previously simply used a list of rectangles per compositing container (OverlapMapContainer). This is
a series of layer bounds, built up as we traver the layer tree in z-order. Layers contribute to container N-2, and test
against container N-1.

To handle overlap with non-stacking-context scrollers, introduce the concept of a ClippingScope, which encompasses
a set of layers sharing the same composited-scrolling containing-block ancestor. Within a ClippingScope, layer bounds
are computed unclipped. Between them, bounds are tested clipped.

Conceptually, each OverlapMapContainer has a tree of ClippingScopes (reflecting the containing-block order tree of
composited overflow scroll), and rects are added to the appropriate ClippingScope. This tree is currently always
root-relative; the root node is the RenderView's RenderLayer, and will accumulate the bounds of layers not inside
composited overflow scroll (just like the old code).

When a OverlapMapContainer is popped, the list of rectangles in its ClippingScope tree is merged with that of the previous
container.

Tests: compositing/layer-creation/clipping-scope/nested-scroller-overlap.html

compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html
compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html
compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html
compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html

  • rendering/LayerOverlapMap.cpp:

(WebCore::operator<<):
(WebCore::OverlapMapContainer::OverlapMapContainer):
(WebCore::OverlapMapContainer::ClippingScope::ClippingScope):
(WebCore::OverlapMapContainer::ClippingScope::childWithLayer const):
(WebCore::OverlapMapContainer::ClippingScope::addChildWithLayerAndBounds):
(WebCore::OverlapMapContainer::ClippingScope::addChild):
(WebCore::OverlapMapContainer::ClippingScope::appendRect):
(WebCore::OverlapMapContainer::clippingScopeContainingLayerChildRecursive):
(WebCore::OverlapMapContainer::scopeContainingLayer const):
(WebCore::OverlapMapContainer::rootScope const):
(WebCore::OverlapMapContainer::rootScope):
(WebCore::OverlapMapContainer::add):
(WebCore::OverlapMapContainer::overlapsLayers const):
(WebCore::OverlapMapContainer::mergeClippingScopesRecursive):
(WebCore::OverlapMapContainer::append):
(WebCore::OverlapMapContainer::ensureClippingScopeForLayers):
(WebCore::OverlapMapContainer::findClippingScopeForLayers const):
(WebCore::OverlapMapContainer::recursiveOutputToStream const):
(WebCore::OverlapMapContainer::dump const):
(WebCore::LayerOverlapMap::LayerOverlapMap):
(WebCore::LayerOverlapMap::add):
(WebCore::LayerOverlapMap::overlapsLayers const):
(WebCore::LayerOverlapMap::pushCompositingContainer):
(WebCore::LayerOverlapMap::popCompositingContainer):
(WebCore::OverlapMapContainer::unite): Deleted.
(WebCore::OverlapMapContainer::rectList const): Deleted.

  • rendering/LayerOverlapMap.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer):
(WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal):
(WebCore::RenderLayerCompositor::updateCompositingLayers):
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::traverseUnchangedSubtree):
(WebCore::RenderLayerCompositor::computeExtent const):
(WebCore::createsClippingScope):
(WebCore::enclosingClippingScopes):
(WebCore::RenderLayerCompositor::addToOverlapMap const):
(WebCore::RenderLayerCompositor::updateOverlapMap const):
(WebCore::RenderLayerCompositor::layerOverlaps const):

  • rendering/RenderLayerCompositor.h:

Source/WebCore/../../LayoutTests:

  • TestExpectations:
  • compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added.
  • compositing/layer-creation/clipping-scope/nested-scroller-overlap.html: Added.
  • compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added.
  • compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller.html: Added.
  • compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added.
  • compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller.html: Added.
  • compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added.
  • compositing/layer-creation/clipping-scope/scroller-with-negative-z-children.html: Added.
  • compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added.
  • compositing/layer-creation/clipping-scope/shared-layers-in-scroller.html: Added.
  • platform/ios-wk2/TestExpectations:
  • platform/ios-wk2/compositing/layer-creation/clipping-scope/nested-scroller-overlap-expected.txt: Added.
  • platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-scroller-expected.txt: Added.
  • platform/ios-wk2/compositing/layer-creation/clipping-scope/overlap-constrained-inside-stacking-context-scroller-expected.txt: Added.
  • platform/ios-wk2/compositing/layer-creation/clipping-scope/scroller-with-negative-z-children-expected.txt: Added.
  • platform/ios-wk2/compositing/layer-creation/clipping-scope/shared-layers-in-scroller-expected.txt: Added.
  • platform/mac-wk2/TestExpectations:
4:44 PM Changeset in webkit [245601] by Chris Dumez
  • 7 edits in trunk

[PSON] Assertion hit when navigating back after a process swap forced by the client
https://bugs.webkit.org/show_bug.cgi?id=198006

Reviewed by Alex Christensen.

Source/WebKit:

After r245198, we construct a SuspendedPageProxy when a process-swap is forced by the client
and we delay to closing of the WebPage in the old WebProcess until it is safe to do so without
flashing (by calling SuspendedPageProxy::closeWithoutFlashing()). The issue is that our logic
deciding if we should reuse a SuspendedPageProxy's WebPage relied on the SuspendedPageProxy's
m_suspensionState not being set to FailedToSuspend. In the case of a process-swap forced by the
client with delayed page closing, the suspended state may be suspended but is still not usable
because it is about to get closed. We would wrongly believe there is a WebPage to be reused so
the ProvisionalPageProxy would construct a proxy for the main frame in its constructor, we would
then hit the ASSERT(!m_mainFrame) assertion in ProvisionalPageProxy::didCreateMainFrame() when
the WebContent process would unexpectedly create a main frame.

To address the issue, stop relying on the suspended state to determine if we can reuse a WebPage
or not and introduce a new pageIsClosedOrClosing() getter on the SuspendedPageProxy instead
which indicates if the WebPage in the WebContent process has been closed or is about to be.

  • UIProcess/ProvisionalPageProxy.cpp:

(WebKit::ProvisionalPageProxy::ProvisionalPageProxy):

  • UIProcess/SuspendedPageProxy.cpp:

(WebKit::SuspendedPageProxy::pageEnteredAcceleratedCompositingMode):
(WebKit::SuspendedPageProxy::pageIsClosedOrClosing const):
(WebKit::SuspendedPageProxy::didProcessRequestToSuspend):

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

(WebKit::WebPageProxy::receivedNavigationPolicyDecision):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
4:42 PM Changeset in webkit [245600] by stephan.szabo@sony.com
  • 2 edits in trunk/Source/JavaScriptCore

[PlayStation] Update initializer for changed port options
https://bugs.webkit.org/show_bug.cgi?id=198057

Reviewed by Ross Kirsling.

  • shell/playstation/Initializer.cpp:

(initializer): Remove loading of shared JavaScriptCore
library.

4:30 PM Changeset in webkit [245599] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

Sandbox violation is making the WebContent process crash
https://bugs.webkit.org/show_bug.cgi?id=198089
<rdar://problem/50999499>

Reviewed by Brent Fulgham.

A new syscall rule needs to be added to the sandbox on iOS and macOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
  • WebProcess/com.apple.WebProcess.sb.in:
4:20 PM Changeset in webkit [245598] by mmaxfield@apple.com
  • 8 edits
    12 adds in trunk

font-optical-sizing applies the wrong variation value
https://bugs.webkit.org/show_bug.cgi?id=197528
<rdar://problem/50152854>

Reviewed by Antti Koivisto.

Source/WebCore:

The OpenType spec says in
https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxistag_opsz

"Scale interpretation: Values can be interpreted as text size, in points."

It turns out that it means "typographic point size" which is equal to CSS pixels, not
CSS points.

There are two parts of the font that are sensitive to optical sizing: variation values and
the trak table. We don't want to set the variation value directly because then the trak table
won't be affected. Instead, we can use kCTFontOpticalSizeAttribute to set both of them together.
We will only do this when the CSS says text-rendering:optimizeLegibility or when the font has
an opsz axis but no STAT table. Otherwise, we won't do anything special, which lets CoreText
handle the default behavior for us. This gives us the same default behavior as the rest of the
system.

Tests: fast/text/variations/optical-sizing-trak-2.html

fast/text/variations/optical-sizing-trak.html
fast/text/variations/optical-sizing-units.html
fast/text/variations/optical-sizing-units-2.html

  • platform/graphics/cocoa/FontCacheCoreText.cpp:

(WebCore::FontType::FontType):
(WebCore::preparePlatformFont):
(WebCore::fontWithFamily):
(WebCore::FontCache::systemFallbackForCharacters):

  • platform/graphics/cocoa/FontCacheCoreText.h:
  • platform/graphics/cocoa/FontFamilySpecificationCoreText.cpp:

(WebCore::FontFamilySpecificationCoreText::fontRanges const):

  • platform/graphics/mac/FontCustomPlatformData.cpp:

(WebCore::FontCustomPlatformData::fontPlatformData):

LayoutTests:

  • fast/text/variations/optical-sizing-trak-2-expected-mismatch.html: Added.
  • fast/text/variations/optical-sizing-trak-2.html: Added.
  • fast/text/variations/optical-sizing-trak-expected.html: Added.
  • fast/text/variations/optical-sizing-trak.html: Added.
  • fast/text/variations/optical-sizing-units-2-expected-mismatch.html: Added.
  • fast/text/variations/optical-sizing-units-2.html: Added.
  • fast/text/variations/optical-sizing-units-expected.html: Added.
  • fast/text/variations/optical-sizing-units.html: Added.
  • fast/text/variations/resources/Amstelvar/Amstelvar-Roman-VF104.ttf: Added.

This font havariations/s been approved by the lawyers to add for layout tests.

  • fast/text/variations/resources/Amstelvar/COPYRIGHT.md: Added.
  • fast/text/variations/resources/Amstelvar/OFL.txt: Added.
3:02 PM Changeset in webkit [245597] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Mark WKUIDelegate webView:shouldPreviewElement: and webView:previewingViewControllerForElement:defaultActions: as deprecated
https://bugs.webkit.org/show_bug.cgi?id=198083
<rdar://problem/50735687>

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

  • UIProcess/API/Cocoa/WKUIDelegate.h:
3:01 PM Changeset in webkit [245596] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKitLegacy/mac

Fix IOSMAC build
https://bugs.webkit.org/show_bug.cgi?id=198082
<rdar://problem/50939725>

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

  • Misc/WebDownload.h:
2:54 PM Changeset in webkit [245595] by Wenson Hsieh
  • 7 edits in trunk/Source/WebKit

The cost of WebViewImpl::hasMarkedTextWithCompletionHandler should not increase with document size
https://bugs.webkit.org/show_bug.cgi?id=198075
<rdar://problem/37560103>

Reviewed by Tim Horton.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::hasMarkedTextWithCompletionHandler):

Refactor hasMarkedTextWithCompletionHandler to use Editor::hasComposition, instead of computing the actual
marked text range. The latter is more expensive and unnecessary, since it uses TextIterator from the document
root to find editing offsets. This makes the cost of determining whether there is marked text proportional to
the document size.

This matches behavior in legacy WebKit, as well as iOS.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::hasMarkedText):

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::hasMarkedText):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
1:30 PM Changeset in webkit [245594] by Tadeu Zagallo
  • 2 edits in trunk/Source/JavaScriptCore

Fix production build after r245564
https://bugs.webkit.org/show_bug.cgi?id=197898

Reviewed by Keith Miller.

The production configuration should not set CODE_SIGN_IDENTITY.

  • Configurations/ToolExecutable.xcconfig:
1:01 PM Changeset in webkit [245593] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, add mistakenly ommited initializer.

  • runtime/RegExpInlines.h:
12:59 PM Changeset in webkit [245592] by Kocsen Chung
  • 8 edits in branches/safari-608.1.24.20-branch

Revert r245505. rdar://problem/50801608

12:54 PM Changeset in webkit [245591] by Kocsen Chung
  • 6 edits
    2 deletes in branches/safari-608.1.24.40-branch

Revert r245465. rdar://problem/50252398

12:25 PM Changeset in webkit [245590] by Kocsen Chung
  • 45 edits
    82 deletes in branches/safari-608.1.24.20-branch

Revert r245502. rdar://problem/50993950
Revert r245490. rdar://problem/50993950
Revert r245471. rdar://problem/50993950
Revert r245375. rdar://problem/50993950
Revert r245373. rdar://problem/50993950
Revert r245371. rdar://problem/50993950
Revert r245370. rdar://problem/50993950
Revert r245336. rdar://problem/50993950
Revert r245326. rdar://problem/50993950
Revert r245221. rdar://problem/50993950
Revert r245220. rdar://problem/50993950
Revert r245219. rdar://problem/50993950
Revert r245218. rdar://problem/50993950
Revert r245212. rdar://problem/50993950
Revert r245208. rdar://problem/50993950
Revert r245207. rdar://problem/50993950
Revert r245205. rdar://problem/50993950
Revert r245181. rdar://problem/50993950
Revert r245175. rdar://problem/50993950
Revert r245170. rdar://problem/50993950
Revert r245147. rdar://problem/50993950

12:03 PM Changeset in webkit [245589] by jiewen_tan@apple.com
  • 3 edits in trunk/Source/WebKit

[WebAuthN] Make WebAuthN default on only on macOS
https://bugs.webkit.org/show_bug.cgi?id=198068
<rdar://problem/50971874>

Reviewed by Brent Fulgham.

  • Shared/WebPreferences.yaml:
  • Shared/WebPreferencesDefaultValues.h:
11:27 AM Changeset in webkit [245588] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed build fix add UNUSED_PARAM.

  • runtime/RegExpInlines.h:

(JSC::PatternContextBufferHolder::PatternContextBufferHolder):

10:57 AM Changeset in webkit [245587] by Pablo Saavedra
  • 2 edits in trunk/Source/WebKit

Undefined reference platformCloseFrontendPageAndWindow() linking against libWPEWebKit-1.0.so after r245536
https://bugs.webkit.org/show_bug.cgi?id=198069

Reviewed by Ross Kirsling.

  • UIProcess/RemoteWebInspectorProxy.cpp:
10:57 AM Changeset in webkit [245586] by keith_miller@apple.com
  • 7 edits
    2 adds in trunk

Cleanup Yarr regexp code around paren contexts.
https://bugs.webkit.org/show_bug.cgi?id=198063

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/regexp-many-named-sequential-capture-groups.js: Added.

(i.s):

  • stress/regexp-many-unnamed-sequential-capture-groups.js: Added.

Source/JavaScriptCore:

There are three refactoring changes around paren contexts:

  1. Make EncodedMatchResult the same type as MatchResult on X86_64 and arm64 and uint64_t elsewhere.
  2. All function pointer types for Yarr JIT generated code reserve space for paren contexts.
  3. initParenContextFreeList should bail based on VM::patternContextBufferSize as that's the buffer size anyway.
  • runtime/MatchResult.h:

(JSC::MatchResult::MatchResult):

  • runtime/RegExpInlines.h:

(JSC::PatternContextBufferHolder::PatternContextBufferHolder):
(JSC::PatternContextBufferHolder::~PatternContextBufferHolder):
(JSC::PatternContextBufferHolder::size):
(JSC::RegExp::matchInline):

  • runtime/VM.h:
  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::initParenContextFreeList):

  • yarr/YarrJIT.h:

(JSC::Yarr::YarrCodeBlock::execute):

10:50 AM Changeset in webkit [245585] by graouts@webkit.org
  • 6 edits in trunk

[macOS] Compatibility mouse events aren't prevented by calling preventDefault() on pointerdown
https://bugs.webkit.org/show_bug.cgi?id=198072
<rdar://problem/50983361>

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

Mark the WPT test progression after fixing this bug.

  • web-platform-tests/pointerevents/pointerevent_suppress_compat_events_on_click-expected.txt:

Source/WebCore:

The Pointer Events spec says that "compatibility" mouse events, which means all mouse events save for "click",
should not be dispatched for a given pointer if preventDefault() was called during the dispatch of the "pointerdown"
event. Additionally, calling preventDefault() during the dispatch of "pointerup" has no effect.

  • dom/Element.cpp:

(WebCore::Element::dispatchMouseEvent):

  • page/PointerCaptureController.cpp:

(WebCore::PointerCaptureController::preventsCompatibilityMouseEventsForIdentifier):
(WebCore::PointerCaptureController::pointerEventWasDispatched):

  • page/PointerCaptureController.h:
10:49 AM Changeset in webkit [245584] by graouts@webkit.org
  • 7 edits in trunk/LayoutTests/imported/w3c

[Pointer Events] Do not dispatch pointermove events when the pointer is not down in WPT testdriver
https://bugs.webkit.org/show_bug.cgi?id=198071

Reviewed by Dean Jackson.

WPT actions sequences may move the pointer prior to pressing it down. In this case, we need to make sure we don't
end up queuing a "moved" touch and instead save the pointer position for when the pointer is pressed. It's important
to also generate a different touch id for each time we pause or end a touch sequence. This allows a few more WPT
touch tests to pass without any source change in our Pointer Events implementation.

  • web-platform-tests/pointerevents/pointerevent_pointerleave_after_pointercancel_touch-expected.txt:
  • web-platform-tests/pointerevents/pointerevent_pointerout_after_pointercancel_touch-expected.txt:
  • web-platform-tests/pointerevents/pointerevent_touch-action-auto-css_touch-expected.txt:
  • web-platform-tests/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-expected.txt:
  • web-platform-tests/pointerevents/pointerevent_touch-action-pan-x-pan-y_touch-expected.txt:
  • web-platform-tests/resources/testdriver-vendor.js:
10:30 AM Changeset in webkit [245583] by Kocsen Chung
  • 4 edits
    2 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245502. rdar://problem/50865946

Layers painting into shared backing need to contribute to overlap
https://bugs.webkit.org/show_bug.cgi?id=198021

Reviewed by Zalan Bujtas.
Source/WebCore:

Layers that paint into a composited (non-root) layer get added to the overlap map so
that later layers correct overlap them; this is done via the test against currentState.compositingAncestor.

We need the same logic for layers that paint into shared backing; they need to behave
the same way in terms of how they contribute to overlap. We already had currentState.backingSharingAncestor
which was unused, but now use it for this, and correctly null it out when a layer composites.

Bug was noticed during testing, and not known to affect any websites (though it probably does).

Also move the overlap container popping into updateOverlapMap() so the two callers can
share the code, and more explicitly track whether a container was pushed.

Test: compositing/shared-backing/sharing-child-contributes-to-overlap.html

  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::updateOverlapMap const):
  • rendering/RenderLayerCompositor.h:

LayoutTests:

  • compositing/shared-backing/sharing-child-contributes-to-overlap-expected.html: Added.
  • compositing/shared-backing/sharing-child-contributes-to-overlap.html: Added.

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

10:30 AM Changeset in webkit [245582] by Kocsen Chung
  • 6 edits
    2 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245490. rdar://problem/50865946

REGRESSION (r245170): gmail.com inbox table header flickers
https://bugs.webkit.org/show_bug.cgi?id=198005
<rdar://problem/50907718>

Reviewed by Antti Koivisto.

Source/WebCore:

When a layer started as painting into shared backing, but then became independently
composited (e.g. by having to clip composited children), it wouldn't have the "overlap"
indirect compositing reason. This allowed requiresOwnBackingStore() to say that it
could paint into some ancestor, but this breaks overlap. So in this code path,
put IndirectCompositingReason::Overlap back on the layer which restores the previous
behavior.

Make some logging changes to help diagnose things like this.

Test: compositing/shared-backing/overlap-after-end-sharing.html

  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::calculateClipRects const): (WebCore::outputPaintOrderTreeLegend): (WebCore::outputPaintOrderTreeRecursive):
  • rendering/RenderLayer.h:
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::updateBacking): (WebCore::RenderLayerCompositor::requiresOwnBackingStore const): (WebCore::RenderLayerCompositor::reasonsForCompositing const): (WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason const):
  • rendering/RenderLayerCompositor.h:

LayoutTests:

  • compositing/shared-backing/overlap-after-end-sharing-expected.html: Added.
  • compositing/shared-backing/overlap-after-end-sharing.html: Added.

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

10:30 AM Changeset in webkit [245581] by Kocsen Chung
  • 3 edits
    2 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245471. rdar://problem/50865946

REGRESSION (r245170): gmail.com header flickers when hovering over the animating buttons
https://bugs.webkit.org/show_bug.cgi?id=197975
<rdar://problem/50865946>

Reviewed by Antti Koivisto.

Source/WebCore:

When computeCompositingRequirements() determined that a layer could paint into shared backing, it
pushed an overlap container. If that layer then converted to normal composting, we'd push a second
overlap container, which left the overlap map in a bad state for the rest of the compositing
traversal, causing layers to not get composited when necessary.

Test: compositing/shared-backing/overlap-after-shared-to-composited.html

  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements):

LayoutTests:

  • compositing/shared-backing/overlap-after-shared-to-composited-expected.html: Added.
  • compositing/shared-backing/overlap-after-shared-to-composited.html: Added.

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

10:30 AM Changeset in webkit [245580] by Kocsen Chung
  • 2 edits in branches/safari-608.1.24.20-branch/Source/WebCore

Cherry-pick r245375. rdar://problem/50865946

Avoid a recursive descendants layer walk sometimes
https://bugs.webkit.org/show_bug.cgi?id=197939

Reviewed by Zalan Bujtas.

If a layer got composited post-descendants because it needs to clip, for example, we'd do a recursive
descendant tree walk to add layers to the overlap map. However, all the descendants would already
have contributed to the overlap map if some non-root ancestor was already composited. So we can
skip the addDescendantsToOverlapMapRecursive() if we know, before descendants, whether there's
a non-root composited ancestor.

  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::CompositingState::hasNonRootCompositedAncestor const): (WebCore::RenderLayerCompositor::computeCompositingRequirements):

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

10:30 AM Changeset in webkit [245579] by Kocsen Chung
  • 4 edits in branches/safari-608.1.24.20-branch/Source/WebCore

Cherry-pick r245373. rdar://problem/50865946

Clean up code related to compositing overlap map maintenance
https://bugs.webkit.org/show_bug.cgi?id=197936

Reviewed by Zalan Bujtas.

Clarify the logic around updating the overlap map:

When a layer becomes composited, or paints into a non-root composited layer, we add it to the overlap map
after traversing descendants (since it only affets layers later in traversal).

If a layer became composited after traversing descendants, we need to go back and add all the descendants
to the overlap map with a recursive traversal.

We can do all this near the end of computeCompositingRequirements/traverseUnchangedSubtree because
we only check overlap when we enter this function on later layers.

Add a CompositingOverlap log channel and use it to log the state of the overlap map.

  • platform/Logging.h:
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::addToOverlapMap const): (WebCore::RenderLayerCompositor::addDescendantsToOverlapMapRecursive const): (WebCore::RenderLayerCompositor::updateOverlapMap const): (WebCore::RenderLayerCompositor::addToOverlapMap): Deleted. (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): Deleted.
  • rendering/RenderLayerCompositor.h:

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

10:30 AM Changeset in webkit [245578] by Kocsen Chung
  • 4 edits in branches/safari-608.1.24.20-branch/Source/WebCore

Cherry-pick r245371. rdar://problem/50865946

Clean up RenderLayerCompositor::computeCompositingRequirements() and traverseUnchangedSubtree()
https://bugs.webkit.org/show_bug.cgi?id=197931

Reviewed by Zalan Bujtas.

These functions have grown and become hard to maintain, so try to undo some technical debt.

Rename "childState" to "currentState" since it's the state we pass to children, but also
is state we change when the current layer becomes composited.

Separate the layerWillComposite() lambda from layerWillCompositePostDescendants().

Group the chunks of code at end of the functions into:

  • updating bits on RenderLayer
  • updating compositingState with changes from children and our state
  • doing post-traversal work on overlapMap and backingSharingState

Code shared between the two functions is pushed into CompositingState::updateWithDescendantStateAndLayer().

This moves code around but should not cause any behavior change.

  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateConfiguration):
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::OverlapExtent::knownToBeHaveExtentUncertainty const): (WebCore::RenderLayerCompositor::CompositingState::updateWithDescendantStateAndLayer): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::clipsCompositingDescendants): (WebCore::RenderLayerCompositor::CompositingState::propagateStateFromChildren): Deleted. (WebCore::RenderLayerCompositor::CompositingState::propagateStateFromChildrenForUnchangedSubtree): Deleted. (WebCore::RenderLayerCompositor::clipsCompositingDescendants const): Deleted.
  • rendering/RenderLayerCompositor.h:

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

10:30 AM Changeset in webkit [245577] by Kocsen Chung
  • 3 edits in branches/safari-608.1.24.20-branch/Source/WebCore

Cherry-pick r245370. rdar://problem/50865946

Make LayerOverlapMap able to output to a TextStream
https://bugs.webkit.org/show_bug.cgi?id=197923

Reviewed by Zalan Bujtas.

Make it possible output LayerOverlapMap to a TextStream for logging.

  • rendering/LayerOverlapMap.cpp: (WebCore::OverlapMapContainer::rectList const): (WebCore::operator<<):
  • rendering/LayerOverlapMap.h: (WebCore::LayerOverlapMap::overlapStack const):

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

10:30 AM Changeset in webkit [245576] by Kocsen Chung
  • 7 edits in branches/safari-608.1.24.20-branch/Source

Cherry-pick r245336. rdar://problem/50865946

Make LOG_WITH_STREAM more efficient
https://bugs.webkit.org/show_bug.cgi?id=197905

Reviewed by Alex Christensen.
Source/WebCore:

No longer need to conditionalize ClipRects logging on the channel being enabled
since LOG_WITH_STREAM fix the performance problem.

Convert some RenderLayerCompositor logging to use LOG_WITH_STREAM.

  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::calculateClipRects const): (WebCore::clipRectsLogEnabled): Deleted.
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree):

Source/WebCore/PAL:

Make the LOG_WITH_STREAM macro check that the log channel is enabled before
building the stream.

  • pal/LogMacros.h:

Source/WTF:

Add a streamable Repeat() class that can be used to output a series of characters.
This is useful for indenting output.

  • wtf/text/TextStream.h: (WTF::TextStream::repeat::repeat): (WTF::TextStream::operator<<):

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

10:30 AM Changeset in webkit [245575] by Kocsen Chung
  • 5 edits
    2 adds in branches/safari-608.1.24.20-branch/Source/WebCore

Cherry-pick r245326. rdar://problem/50865946

Move RenderLayerCompositor's OverlapMap to its own file
https://bugs.webkit.org/show_bug.cgi?id=197915

Reviewed by Alex Christensen.

Move OverlapMap to its own file.
Make use of RectList, which was in the file but unused!
Allocate OverlapMapContainer on the heap both to avoid header pollution of internals,
and because they will get bigger in future.

No behavior change.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • rendering/LayerOverlapMap.cpp: Added. (WebCore::RectList::append): (WebCore::RectList::intersects const): (WebCore::OverlapMapContainer::add): (WebCore::OverlapMapContainer::overlapsLayers const): (WebCore::OverlapMapContainer::unite): (WebCore::LayerOverlapMap::LayerOverlapMap): (WebCore::LayerOverlapMap::add): (WebCore::LayerOverlapMap::overlapsLayers const): (WebCore::LayerOverlapMap::pushCompositingContainer): (WebCore::LayerOverlapMap::popCompositingContainer):
  • rendering/LayerOverlapMap.h: Added. (WebCore::LayerOverlapMap::isEmpty const): (WebCore::LayerOverlapMap::geometryMap const): (WebCore::LayerOverlapMap::geometryMap):
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::computeExtent const): (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::OverlapMapContainer::add): Deleted. (WebCore::OverlapMapContainer::overlapsLayers const): Deleted. (WebCore::OverlapMapContainer::unite): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::OverlapMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::add): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::overlapsLayers const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::isEmpty const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::pushCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::popCompositingContainer): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap const): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::geometryMap): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::append): Deleted. (WebCore::RenderLayerCompositor::OverlapMap::RectList::intersects const): Deleted.
  • rendering/RenderLayerCompositor.h:

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

10:30 AM Changeset in webkit [245574] by Kocsen Chung
  • 2 edits in branches/safari-608.1.24.20-branch/LayoutTests

Cherry-pick r245221. rdar://problem/50865946

REGRESSION (r245208): compositing/shared-backing/sharing-bounds-non-clipping-shared-layer.html asserts
https://bugs.webkit.org/show_bug.cgi?id=197818

Approved by Jon Lee.

Skip this test until a fix for bug 197818 lands.

  • platform/ios-wk2/TestExpectations:

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

10:30 AM Changeset in webkit [245573] by Kocsen Chung
  • 6 edits in branches/safari-608.1.24.20-branch/Source/WebCore

Cherry-pick r245219. rdar://problem/50865946

Add logging for RenderLayer clip rects
https://bugs.webkit.org/show_bug.cgi?id=197547

Reviewed by Zalan Bujtas.

Add a ClipRects log channel, and stream output for ClipRect and ClipRects.

The ClipRect code is performance sensitive, even in debug, so guard the log sites
with clipRectsLogEnabled() because the macro still evaluates its arguments even if
the channel is disabled (we need some better way to log that doesn't do this).

  • platform/Logging.h:
  • rendering/ClipRect.cpp: (WebCore::operator<<):
  • rendering/ClipRect.h:
  • rendering/RenderLayer.cpp: (WebCore::operator<<): (WebCore::RenderLayer::calculateClipRects const):
  • rendering/RenderLayer.h:

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

10:30 AM Changeset in webkit [245572] by Kocsen Chung
  • 6 edits
    3 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245212. rdar://problem/50865946

Overflow scroll that becomes non-scrollable should stop being composited
https://bugs.webkit.org/show_bug.cgi?id=197817
<rdar://problem/50697290>

Reviewed by Antti Koivisto.

Source/WebCore:

Remove the iOS-specific #ifdef around code that triggers a compositing re-evaluation
when scrolling state changes.

Test: compositing/scrolling/async-overflow-scrolling/become-non-scrollable.html

  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::updateScrollInfoAfterLayout):

LayoutTests:

Put in a compositing/scrolling/async-overflow-scrolling dir so we can enable it only
for platforms that have async overflow scrolling.

  • TestExpectations:
  • compositing/scrolling/async-overflow-scrolling/become-non-scrollable-expected.txt: Added.
  • compositing/scrolling/async-overflow-scrolling/become-non-scrollable.html: Added.
  • platform/ios-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:

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

10:30 AM Changeset in webkit [245571] by Kocsen Chung
  • 3 edits
    8 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245208. rdar://problem/50865946

Layer bounds are incorrect for sharing layers that paint with transforms
https://bugs.webkit.org/show_bug.cgi?id=197768
<rdar://problem/50695493>

Reviewed by Zalan Bujtas.

Source/WebCore:

We don't need to traverse shared layers if the backing-provider has overflow clip,
because we know they are containing-block descendants and therefore clipped.

Note tha the CSS "clip" property doesn't guarantee this, because the clip rect
can be larger than the element, so in that case we just traverse shared layers.

Tests: compositing/shared-backing/sharing-bounds-clip.html

compositing/shared-backing/sharing-bounds-non-clipping-shared-layer.html
compositing/shared-backing/sharing-bounds-transformed-sharing-layer.html
compositing/shared-backing/sharing-bounds.html

  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateCompositedBounds):

LayoutTests:

Tests for backing-shared layer bounds in various configurations.

  • compositing/shared-backing/sharing-bounds-clip-expected.txt: Added.
  • compositing/shared-backing/sharing-bounds-clip.html: Added.
  • compositing/shared-backing/sharing-bounds-expected.txt: Added.
  • compositing/shared-backing/sharing-bounds-non-clipping-shared-layer-expected.txt: Added.
  • compositing/shared-backing/sharing-bounds-non-clipping-shared-layer.html: Added.
  • compositing/shared-backing/sharing-bounds-transformed-sharing-layer-expected.txt: Added.
  • compositing/shared-backing/sharing-bounds-transformed-sharing-layer.html: Added.
  • compositing/shared-backing/sharing-bounds.html: Added.

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

10:29 AM Changeset in webkit [245570] by Kocsen Chung
  • 4 edits
    2 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245207. rdar://problem/50865946

Translucent gradient rendering bug due to will-change transform
https://bugs.webkit.org/show_bug.cgi?id=197654
<rdar://problem/50547664>

Reviewed by Dean Jackson.
Source/WebCore:

We failed to re-evaluate 'contentsOpaque' when a background changed, because this
happened in updateGeometry() and that doesn't run for background changes.

However, 'contentsOpaque' also requires knowing about geometry because we have to
turn it off when there's subpixel positioning, and updateConfiguration()
runs before updateGeometry().

So compute m_hasSubpixelRounding in updateGeometry() and set contentsOpaque in
updateAfterDescendants().

Test: compositing/contents-opaque/background-change-to-transparent.html

  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateConfiguration): (WebCore::RenderLayerBacking::updateGeometry): (WebCore::RenderLayerBacking::updateAfterDescendants):
  • rendering/RenderLayerBacking.h:

LayoutTests:

  • compositing/contents-opaque/background-change-to-transparent-expected.txt: Added.
  • compositing/contents-opaque/background-change-to-transparent.html: Added.

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

10:07 AM Changeset in webkit [245569] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit
REGRESSION(r245540): ASSERTION FAILED: identifier.isNull()
RunLoop::isMain()

https://bugs.webkit.org/show_bug.cgi?id=198074

Reviewed by Youenn Fablet.

  • NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp:

(WebKit::LocalStorageDatabaseTracker::databasePath const):

8:53 AM Changeset in webkit [245568] by Antti Koivisto
  • 10 edits
    1 copy
    2 adds in trunk

RTL/overflow scroll tests fail with async overflow enabled
https://bugs.webkit.org/show_bug.cgi?id=196013
<rdar://problem/49066649>

Reviewed by Simon Fraser.

Source/WebCore:

Test: compositing/ios/rtl-overflow-scrolling-2.html

This patch makes the basic RTL cases work in the scrolling tree.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::minimumScrollPosition const):
(WebCore::ScrollingTreeScrollingNode::maximumScrollPosition const):

Add missing scroll offset <-> scroll position conversions.

Source/WebKit:

Add missing scroll offset <-> scroll position conversions.

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

(WebKit::ScrollingTreeScrollingNodeDelegateIOS::repositionScrollingLayers):
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollViewDidScroll):

LayoutTests:

  • compositing/ios/rtl-overflow-scrolling-2-expected.html: Added.
  • compositing/ios/rtl-overflow-scrolling-2.html: Added.

Add a reftest version for better coverage.

  • compositing/rtl/rtl-overflow-scrolling.html:
  • platform/ios-wk1/TestExpectations:
  • platform/ios-wk2/TestExpectations:
  • platform/ios-wk2/compositing/rtl/rtl-overflow-scrolling-expected.txt: Added.
6:10 AM Changeset in webkit [245567] by don.olmstead@sony.com
  • 5 edits
    6 adds in trunk

[WinCairo] Build WebDriver
https://bugs.webkit.org/show_bug.cgi?id=198056

Reviewed by Carlos Garcia Campos.

.:

Add ENABLE_WEBDRIVER as an experimental feature for WinCairo.

  • Source/cmake/OptionsWin.cmake:

Source/WebDriver:

Add the platform and source files to get WinCairo to compile a WebDriver executable.

  • CMakeLists.txt:
  • PlatformWin.cmake: Added.
  • Session.cpp:

(WebDriver::Session::go):
(WebDriver::Session::getCurrentURL):
(WebDriver::Session::back):
(WebDriver::Session::forward):
(WebDriver::Session::refresh):
(WebDriver::Session::getTitle):
(WebDriver::Session::switchToFrame):
(WebDriver::Session::switchToParentFrame):
(WebDriver::Session::setWindowRect):
(WebDriver::Session::maximizeWindow):
(WebDriver::Session::minimizeWindow):
(WebDriver::Session::fullscreenWindow):
(WebDriver::Session::findElements):
(WebDriver::Session::getActiveElement):
(WebDriver::Session::isElementSelected):
(WebDriver::Session::getElementText):
(WebDriver::Session::getElementTagName):
(WebDriver::Session::getElementRect):
(WebDriver::Session::isElementEnabled):
(WebDriver::Session::isElementDisplayed):
(WebDriver::Session::getElementAttribute):
(WebDriver::Session::getElementProperty):
(WebDriver::Session::getElementCSSValue):
(WebDriver::Session::elementClick):
(WebDriver::Session::elementClear):
(WebDriver::Session::elementSendKeys):
(WebDriver::Session::executeScript):
(WebDriver::Session::getAllCookies):
(WebDriver::Session::addCookie):
(WebDriver::Session::deleteCookie):
(WebDriver::Session::deleteAllCookies):
(WebDriver::Session::performActions):
(WebDriver::Session::takeScreenshot):
With nested lambdas MSVC believes the this pointer is for the enclosing lambda. Use a
protectedThis in the enclosing lambda and then use protectedThis.copyRef() in the nested
lambda.

  • socket/HTTPServerSocket.cpp: Added.

(WebDriver::HTTPServer::listen):
(WebDriver::HTTPServer::disconnect):
Add stubs for HTTPServer when using a raw socket.

  • socket/SessionHostSocket.cpp: Added.

(WebDriver::SessionHost::~SessionHost):
(WebDriver::SessionHost::connectToBrowser):
(WebDriver::SessionHost::isConnected const):
(WebDriver::SessionHost::startAutomationSession):
(WebDriver::SessionHost::sendMessageToBackend):
Add stubs for SessionHost when using a raw socket.

  • win/WebDriverServiceWin.cpp: Added.

(WebDriver::WebDriverService::platformCapabilities):
(WebDriver::WebDriverService::platformCompareBrowserVersions):
(WebDriver::WebDriverService::platformValidateCapability const):
(WebDriver::WebDriverService::platformMatchCapability const):
(WebDriver::WebDriverService::platformParseCapabilities const):
Add stubs for WebDriverService on Windows.

5:53 AM Changeset in webkit [245566] by Carlos Garcia Campos
  • 3 edits in trunk/Tools

Unreviewed. Fix the build with HAVE(ACCESSIBILITY) disabled

  • WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:

(WTR::AccessibilityController::elementAtPoint):

  • WebKitTestRunner/InjectedBundle/AccessibilityController.h:

(WTR::AccessibilityController::rootElement):
(WTR::AccessibilityController::focusedElement):

5:45 AM Changeset in webkit [245565] by Carlos Garcia Campos
  • 49 edits
    58 adds
    5 deletes in trunk

[WPE] Add initial accessibility support using ATK
https://bugs.webkit.org/show_bug.cgi?id=197413

Reviewed by Michael Catanzaro.

.:

Add ENABLE_ACCESSIBILITY public option to WPE.

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:

Source/WebCore:

Use USE(ATK) instead of PLATFORM(GTK) for ATK related code and use ATK when available for WPE port too.

  • PlatformWPE.cmake:
  • SourcesWPE.txt:
  • accessibility/AXObjectCache.h:
  • accessibility/AccessibilityList.cpp:

(WebCore::AccessibilityList::childHasPseudoVisibleListItemMarkers):

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::canSetValueAttribute const):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::textIteratorBehaviorForTextRange const):

  • accessibility/AccessibilityObject.h:
  • accessibility/AccessibilityObjectInterface.h:
  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::indexForVisiblePosition const):
(WebCore::AccessibilityRenderObject::shouldNotifyActiveDescendant const):

  • accessibility/AccessibilityTableColumn.cpp:

(WebCore::AccessibilityTableColumn::computeAccessibilityIsIgnored const):

  • accessibility/AccessibilityTableHeaderContainer.cpp:

(WebCore::AccessibilityTableHeaderContainer::computeAccessibilityIsIgnored const):

  • accessibility/atk/WebKitAccessible.cpp:

(webkitAccessibleGetAttributes):

  • accessibility/wpe/AXObjectCacheWPE.cpp: Removed.
  • accessibility/wpe/AccessibilityObjectWPE.cpp: Removed.
  • editing/FrameSelection.h:

Source/WebKit:

Rename WebKitWebViewBaseAccessible as WebKitWebViewAccessible and move it to glib removing its dependency on
GTK. WPEView now implements get_accessible to return its associated WebKitWebViewAccessible.

  • PlatformWPE.cmake:
  • SourcesGTK.txt:
  • SourcesWPE.txt:
  • UIProcess/API/glib/WebKitWebViewAccessible.cpp: Added.

(webkitWebViewAccessibleInitialize):
(webkitWebViewAccessibleRefStateSet):
(webkitWebViewAccessibleGetIndexInParent):
(webkit_web_view_accessible_class_init):
(webkitWebViewAccessibleNew):
(webkitWebViewAccessibleSetWebView):

  • UIProcess/API/glib/WebKitWebViewAccessible.h: Added.
  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseDispose):
(webkitWebViewBaseGetAccessible):

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

(WebKit::PageClientImpl::accessible):

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

(WKWPE::m_backend):
(WKWPE::View::~View):
(WKWPE::View::accessible):

  • UIProcess/API/wpe/WPEView.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/wpe/WebPageProxyWPE.cpp:

(WebKit::WebPageProxy::bindAccessibilityTree): Call atk_socket_embed() with the given plug ID.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/wpe/WebPageWPE.cpp:

(WebKit::WebPage::platformInitialize): Create the WebKitWebPageAccessibilityObject and send
BindAccessibilityTree message to the UI process.

  • WebProcess/wpe/WebProcessMainWPE.cpp:

(WebKit::initializeAccessibility): Implement AtkUtil interface and initialize the atk bridge.

Tools:

Add accessibility support in MiniBrowser and backends used by MiniBrowser and tests.

  • MiniBrowser/wpe/CMakeLists.txt:
  • MiniBrowser/wpe/main.cpp:

(main):

  • TestWebKitAPI/PlatformWPE.cmake:
  • WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
  • WebKitTestRunner/InjectedBundle/AccessibilityController.h:
  • WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
  • WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:

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

  • WebKitTestRunner/InjectedBundle/wpe/AccessibilityControllerWPE.cpp: Removed.
  • WebKitTestRunner/InjectedBundle/wpe/AccessibilityUIElementWPE.cpp: Removed.
  • WebKitTestRunner/PlatformWPE.cmake:
  • wpe/backends/CMakeLists.txt:
  • wpe/backends/HeadlessViewBackend.cpp:

(WPEToolingBackends::HeadlessViewBackend::HeadlessViewBackend):

  • wpe/backends/ViewBackend.cpp:

(WPEToolingBackends::addKeyEventListener):
(WPEToolingBackends::removeKeyEventListener):
(WPEToolingBackends::notifyAccessibilityKeyEventListeners):
(WPEToolingBackends::ViewBackend::initialize):
(WPEToolingBackends::ViewBackend::initializeAccessibility):
(WPEToolingBackends::ViewBackend::updateAccessibilityState):
(WPEToolingBackends::ViewBackend::setAccessibleChild):
(WPEToolingBackends::ViewBackend::addActivityState):
(WPEToolingBackends::ViewBackend::removeActivityState):
(WPEToolingBackends::ViewBackend::dispatchInputKeyboardEvent):

  • wpe/backends/ViewBackend.h:
  • wpe/backends/WebKitAccessibleApplication.cpp: Added.

(webkitAccessibleApplicationWindowInterfaceInit):
(webkitAccessibleApplicationFinalize):
(webkitAccessibleApplicationInitialize):
(webkitAccessibleApplicationGetNChildren):
(webkitAccessibleApplicationRefChild):
(webkitAccessibleApplicationGetName):
(webkit_accessible_application_class_init):
(webkit_accessible_application_init):
(webkitAccessibleApplicationNew):
(webkitAccessibleApplicationSetChild):

  • wpe/backends/WebKitAccessibleApplication.h: Added.
  • wpe/backends/WindowViewBackend.cpp:

(WPEToolingBackends::WindowViewBackend::WindowViewBackend):

  • wpe/jhbuild.modules:

LayoutTests:

Unskip accessibility tests that are passing now and add platform specific results.

  • platform/wpe/TestExpectations:
  • platform/wpe/accessibility/add-children-pseudo-element-expected.txt: Added.
  • platform/wpe/accessibility/aria-fallback-roles-expected.txt: Added.
  • platform/wpe/accessibility/aria-hidden-negates-no-visibility-expected.txt: Added.
  • platform/wpe/accessibility/aria-label-on-label-element-expected.txt: Added.
  • platform/wpe/accessibility/aria-labelledby-overrides-aria-label-expected.txt: Added.
  • platform/wpe/accessibility/aria-labelledby-overrides-label-expected.txt: Added.
  • platform/wpe/accessibility/aria-option-role-expected.txt: Added.
  • platform/wpe/accessibility/aria-roledescription-expected.txt: Added.
  • platform/wpe/accessibility/aria-switch-sends-notification-expected.txt: Added.
  • platform/wpe/accessibility/aria-tab-roles-expected.txt: Added.
  • platform/wpe/accessibility/aria-table-attributes-expected.txt: Added.
  • platform/wpe/accessibility/aria-table-content-expected.txt: Added.
  • platform/wpe/accessibility/aria-toggle-button-with-title-expected.txt: Added.
  • platform/wpe/accessibility/auto-fill-crash-expected.txt: Added.
  • platform/wpe/accessibility/button-with-aria-haspopup-role-expected.txt: Added.
  • platform/wpe/accessibility/color-well-expected.txt: Added.
  • platform/wpe/accessibility/deleting-iframe-destroys-axcache-expected.txt: Added.
  • platform/wpe/accessibility/dimensions-include-descendants-expected.txt: Added.
  • platform/wpe/accessibility/double-nested-inline-element-missing-from-tree-expected.txt: Added.
  • platform/wpe/accessibility/empty-image-with-title-expected.txt: Added.
  • platform/wpe/accessibility/file-upload-button-stringvalue-expected.txt: Added.
  • platform/wpe/accessibility/help-text-expected.txt: Added.
  • platform/wpe/accessibility/image-link-expected.txt: Added.
  • platform/wpe/accessibility/image-map1-expected.txt: Added.
  • platform/wpe/accessibility/image-map2-expected.txt: Added.
  • platform/wpe/accessibility/inline-continuations-expected.txt: Added.
  • platform/wpe/accessibility/label-with-pseudo-elements-expected.txt: Added.
  • platform/wpe/accessibility/list-detection-expected.txt: Added.
  • platform/wpe/accessibility/lists-expected.txt: Added.
  • platform/wpe/accessibility/math-multiscript-attributes-expected.txt: Added.
  • platform/wpe/accessibility/media-emits-object-replacement-expected.txt: Added.
  • platform/wpe/accessibility/menu-list-crash2-expected.txt: Added.
  • platform/wpe/accessibility/minimal-table-with-aria-is-data-table-expected.txt: Added.
  • platform/wpe/accessibility/press-targets-center-point-expected.txt: Added.
  • platform/wpe/accessibility/radio-button-title-label-expected.txt: Added.
  • platform/wpe/accessibility/render-counter-text-expected.txt: Added.
  • platform/wpe/accessibility/roles-computedRoleString-expected.txt: Added.
  • platform/wpe/accessibility/roles-exposed-expected.txt: Added.
  • platform/wpe/accessibility/set-selected-text-range-contenteditable-expected.txt: Added.
  • platform/wpe/accessibility/svg-remote-element-expected.txt: Added.
  • platform/wpe/accessibility/tabindex-elements-are-accessible-expected.txt: Added.
  • platform/wpe/accessibility/table-attributes-expected.txt: Added.
  • platform/wpe/accessibility/table-cell-spans-expected.txt: Added.
  • platform/wpe/accessibility/table-cells-expected.txt: Added.
  • platform/wpe/accessibility/table-cells-roles-expected.txt: Added.
  • platform/wpe/accessibility/table-column-headers-with-captions-expected.txt: Added.
  • platform/wpe/accessibility/table-one-cell-expected.txt: Added.
  • platform/wpe/accessibility/table-roles-hierarchy-expected.txt: Added.
  • platform/wpe/accessibility/table-sections-expected.txt: Added.
  • platform/wpe/accessibility/table-with-rules-expected.txt: Added.
  • platform/wpe/accessibility/text-alternative-calculation-hidden-nodes-expected.txt: Added.
  • platform/wpe/accessibility/transformed-element-expected.txt: Added.

May 20, 2019:

11:52 PM Changeset in webkit [245564] by Tadeu Zagallo
  • 7 edits
    2 adds in trunk/Source

Only cache bytecode for API clients in data vaults
https://bugs.webkit.org/show_bug.cgi?id=197898
Source/JavaScriptCore:

<rdar://problem/45945449>

Reviewed by Keith Miller.

Enforce that API clients only store cached bytecode in data vaults. This prevents
another process from compromising the current one by tampering with the bytecode.

  • API/JSScript.mm:

(validateBytecodeCachePath):
(+[JSScript scriptOfType:withSource:andSourceURL:andBytecodeCache:inVirtualMachine:error:]):
(+[JSScript scriptOfType:memoryMappedFromASCIIFile:withSourceURL:andBytecodeCache:inVirtualMachine:error:]):

  • API/tests/testapi.mm:

(cacheFileInDataVault):
(testModuleBytecodeCache):
(testProgramBytecodeCache):
(testBytecodeCacheWithSyntaxError):
(testBytecodeCacheWithSameCacheFileAndDifferentScript):
(testCacheFileFailsWhenItsAlreadyCached):
(testCanCacheManyFilesWithTheSameVM):
(testIsUsingBytecodeCacheAccessor):
(testBytecodeCacheValidation):
(testObjectiveCAPI):

  • Configurations/ToolExecutable.xcconfig:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • testapi.entitlements: Added.

Source/WTF:

Reviewed by Keith Miller.

Add SPI to check if a filesystem path is restricted as a data vault.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/spi/darwin/DataVaultSPI.h: Added.
11:31 PM Changeset in webkit [245563] by Tadeu Zagallo
  • 2 edits in trunk/Source/JavaScriptCore

Fix 32-bit btyecode cache crashes
https://bugs.webkit.org/show_bug.cgi?id=198035
<rdar://problem/49905560>

Reviewed by Michael Saboff.

There were 2 32-bit issues with the bytecode cache:

  • UnlinkedFunctionExecutable::m_cachedCodeBlockForConstructOffset was not initialized. The code was relying on the other member of the union, m_unlinkedCodeBlockForConstruct, initializing both m_cachedCodeBlockForCallOffset and m_cachedCodeBlockForConstructOffset. This is undefined behavior and is also incorrect in 32-bit. Since m_unlinkedCodeBlockForConstruct is 32-bit, it only initializes the first member of the struct.
  • Encoder::Page was not aligned at the end. This lead to unaligned allocations on subsequent pages, since the start of the following page would not be aligned.
  • runtime/CachedTypes.cpp:

(JSC::Encoder::release):
(JSC::Encoder::Page::alignEnd):
(JSC::Encoder::allocateNewPage):
(JSC::VariableLengthObject::buffer const):
(JSC::VariableLengthObject::allocate):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

10:31 PM Changeset in webkit [245562] by achristensen@apple.com
  • 4 edits
    3 adds in trunk/Source/WebKit

Revert r245501
https://bugs.webkit.org/show_bug.cgi?id=198007

That change did not fix <rdar://problem/49808949> but it caused <rdar://problem/50967271> so out it goes.

  • Shared/API/Cocoa/WKMain.h: Added.
  • Shared/API/Cocoa/WKMain.mm: Added.

(WKXPCServiceMain):

  • Shared/EntryPointUtilities/Cocoa/AuxiliaryProcessMain.cpp: Added.

(main):

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

(main): Deleted.

  • UIProcess/Launcher/mac/ProcessLauncherMac.mm:

(WebKit::ProcessLauncher::launchProcess):

  • WebKit.xcodeproj/project.pbxproj:
10:01 PM Changeset in webkit [245561] by Wenson Hsieh
  • 4 edits
    2 adds in trunk

[iOS] Layout viewport size on google.com increases after rotating to landscape and back
https://bugs.webkit.org/show_bug.cgi?id=198062
<rdar://problem/50547895>

Reviewed by Maciej Stachowiak.

Source/WebKit:

During an animated resize (e.g. when rotating the device on iOS), we currently immediately trigger the new
shrink-to-fit content size heuristic in the middle of dynamicViewportSizeUpdate, after the new view layout size
has been applied to the viewport configuration but before we've issued a resize event to the page.

Thus, on pages that use listen to the resize event and adjust their content accordingly to fit within the new
layout width, we prematurely declare that the page has horizontally overflowed, and try to lay out at a larger
width and scale down. This causes the page to unnecessarily shrink after rotating to landscale orientation and
back.

To fix this, we simply move the call to shrink-to-fit-content to the end of the dynamic viewport size update,
such that the page has had a chance to adjust to the new layout size.

Test: fast/events/ios/rotation/do-not-shrink-to-fit-content-after-rotation.html

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::dynamicViewportSizeUpdate):

LayoutTests:

Add a UIHelper method to simulate device rotation to a given orientation, and use it in a new layout test that
simulates rotation to and from landscape orientation, and verifies that the initial scale did not change from
its expected value of 1.

  • fast/events/ios/rotation/do-not-shrink-to-fit-content-after-rotation-expected.txt: Added.
  • fast/events/ios/rotation/do-not-shrink-to-fit-content-after-rotation.html: Added.
  • resources/ui-helper.js:

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

8:40 PM Changeset in webkit [245560] by Kocsen Chung
  • 6 edits
    2 copies in branches/safari-608.1.24.40-branch

Cherry-pick r245465. rdar://problem/50252398

[iOS] Respect scrolling="no" on composited frames
https://bugs.webkit.org/show_bug.cgi?id=197972
<rdar://problem/50252398>

Reviewed by Simon Fraser.

Source/WebKit:

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm: (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

Disallow scrolling based on canHaveScrollbars, similar to main frame.

(WebKit::ScrollingTreeScrollingNodeDelegateIOS::repositionScrollingLayers):
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollView const):

Factor into a function.

LayoutTests:

  • fast/scrolling/ios/body-overflow-hidden-frame-expected.html:
  • fast/scrolling/ios/body-overflow-hidden-frame.html:

Also fix overflow:hidden test so that the frame content forces composition.

  • fast/scrolling/ios/frame-scrolling-no-expected.html: Added.
  • fast/scrolling/ios/frame-scrolling-no.html: Added.

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

8:21 PM Changeset in webkit [245559] by Kocsen Chung
  • 2 edits in branches/safari-608.1.24.20-branch/Source/WebCore

Cherry-pick r245539. rdar://problem/48740417

Provide an explicit UIModalPresentation style when creating an AVPlayerViewController for fullscreen.
https://bugs.webkit.org/show_bug.cgi?id=198052

Reviewed by Tim Horton.

Make sure AVPlayerViewController has an "overFullScreen" modal style.

  • platform/ios/VideoFullscreenInterfaceAVKit.mm: (-[WebAVPlayerViewController initWithFullscreenInterface:]):

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

8:21 PM Changeset in webkit [245558] by Kocsen Chung
  • 2 edits in branches/safari-608.1.24.20-branch/Source/WebKit

Cherry-pick r245520. rdar://problem/50552974

Allow WebContent mach-lookup AGXCompilerService
https://bugs.webkit.org/show_bug.cgi?id=198031
<rdar://problem/50552974>

Patch by Zhifei Fang <zhifei_fang@apple.com> on 2019-05-20
Reviewed by Per Arne Vollan.

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

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

8:21 PM Changeset in webkit [245557] by Kocsen Chung
  • 8 edits in branches/safari-608.1.24.20-branch

Cherry-pick r245505. rdar://problem/50801608

[Pointer Events] A pointer should be marked as primary for all of its events
https://bugs.webkit.org/show_bug.cgi?id=197909
<rdar://problem/50801608>

Reviewed by Dean Jackson.

Source/WebCore:

Add an ivar for EventHandler which we'll use in WebKitAdditions code to track the touch identifier
of the very first touch to start in a given sequence.

  • page/EventHandler.h:

LayoutTests:

Update tests to match expectations that only the first touch of a sequence is the primary pointer,
which applies to all of its events, even after the even is no longer touching the digitizer.

  • pointerevents/ios/over-enter-out-leave.html:
  • pointerevents/ios/pointer-event-order.html:
  • pointerevents/ios/pointer-events-implicit-capture.html:
  • pointerevents/ios/pointer-events-is-primary-expected.txt:
  • pointerevents/ios/pointer-events-is-primary.html:

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

8:21 PM Changeset in webkit [245556] by Kocsen Chung
  • 11 edits
    7 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245483. rdar://problem/49078202

Add a website policy to disable the legacy -webkit-overflow-scrolling:touch behavior
https://bugs.webkit.org/show_bug.cgi?id=197943
<rdar://problem/49078202>

Reviewed by Brent Fulgham.

Source/WebCore:

Tests: fast/scrolling/ipad/overflow-scrolling-touch-enabled-stacking-modern-compatibility-mode.html

platform/ipad/fast/css/webkit-overflow-scrolling-parsing-modern-compatibility-mode.html

  • css/parser/CSSParserContext.cpp: (WebCore::CSSParserContext::CSSParserContext):
  • loader/DocumentLoader.h: (WebCore::DocumentLoader::legacyOverflowScrollingTouchPolicy const): (WebCore::DocumentLoader::setLegacyOverflowScrollingTouchPolicy):

Source/WebKit:

  • Shared/WebsiteLegacyOverflowScrollingTouchPolicy.h: Added.
  • Shared/WebsitePoliciesData.cpp: (WebKit::WebsitePoliciesData::encode const): (WebKit::WebsitePoliciesData::decode): (WebKit::WebsitePoliciesData::applyToDocumentLoader):
  • Shared/WebsitePoliciesData.h:
  • UIProcess/API/APIWebsitePolicies.cpp: (API::WebsitePolicies::copy const): (API::WebsitePolicies::data):
  • UIProcess/API/APIWebsitePolicies.h:
  • WebKit.xcodeproj/project.pbxproj:

LayoutTests:

  • fast/scrolling/ipad/overflow-scrolling-touch-enabled-stacking-modern-compatibility-mode-expected.html: Added.
  • fast/scrolling/ipad/overflow-scrolling-touch-enabled-stacking-modern-compatibility-mode.html: Added.
  • platform/ipad/fast/css/webkit-overflow-scrolling-parsing-modern-compatibility-mode-expected.txt: Added.
  • platform/ipad/fast/css/webkit-overflow-scrolling-parsing-modern-compatibility-mode.html: Added.
  • platform/ios/TestExpectations: Skip the new tests since they depend on code in WebKitAdditions.

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

8:21 PM Changeset in webkit [245555] by Kocsen Chung
  • 5 edits in branches/safari-608.1.24.20-branch/Source/WebKit

Cherry-pick r245480. rdar://problem/50564630

Avoid races in taking networking assertions for downloads by having both Networking and UIProcess do it.
<rdar://problem/50564630> and https://bugs.webkit.org/show_bug.cgi?id=197995

Reviewed by Chris Dumez.

There's a fairly indeterminant time gap between when the UIProcess decides a load becomes a download
and when the NetworkProcess Download object is created, and therefore the download assertion to be taken.

The time gap can be long enough for the Networking process to suspend before the download actually starts.

There's the reverse race when the UIProcess tells a download to stop, as well.

By having both the UIProcess and NetworkProcess take an assertion on behalf of the NetworkProcess we
avoid the race.

  • NetworkProcess/Downloads/DownloadMap.cpp: (WebKit::DownloadMap::add): (WebKit::DownloadMap::remove):
  • NetworkProcess/NetworkResourceLoader.cpp: (WebKit::NetworkResourceLoader::convertToDownload):
  • UIProcess/Downloads/DownloadProxyMap.cpp: (WebKit::DownloadProxyMap::createDownloadProxy): (WebKit::DownloadProxyMap::downloadFinished): (WebKit::DownloadProxyMap::invalidate):
  • UIProcess/Downloads/DownloadProxyMap.h:

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

8:21 PM Changeset in webkit [245554] by Kocsen Chung
  • 2 edits in branches/safari-608.1.24.20-branch/Source/WebCore

Cherry-pick r245472. rdar://problem/50895962

Fix a typo in some user agent string logic
https://bugs.webkit.org/show_bug.cgi?id=197992
<rdar://problem/50895962>

Reviewed by Brent Fulgham.

Adjust the major version number for the desktop user agent string.

  • platform/ios/UserAgentIOS.mm: (WebCore::standardUserAgentWithApplicationName):

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

8:21 PM Changeset in webkit [245553] by Kocsen Chung
  • 6 edits
    2 copies in branches/safari-608.1.24.20-branch

Cherry-pick r245465. rdar://problem/50252398

[iOS] Respect scrolling="no" on composited frames
https://bugs.webkit.org/show_bug.cgi?id=197972
<rdar://problem/50252398>

Reviewed by Simon Fraser.

Source/WebKit:

  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.mm: (WebKit::ScrollingTreeScrollingNodeDelegateIOS::commitStateAfterChildren):

Disallow scrolling based on canHaveScrollbars, similar to main frame.

(WebKit::ScrollingTreeScrollingNodeDelegateIOS::repositionScrollingLayers):
(WebKit::ScrollingTreeScrollingNodeDelegateIOS::scrollView const):

Factor into a function.

LayoutTests:

  • fast/scrolling/ios/body-overflow-hidden-frame-expected.html:
  • fast/scrolling/ios/body-overflow-hidden-frame.html:

Also fix overflow:hidden test so that the frame content forces composition.

  • fast/scrolling/ios/frame-scrolling-no-expected.html: Added.
  • fast/scrolling/ios/frame-scrolling-no.html: Added.

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

8:21 PM Changeset in webkit [245552] by Kocsen Chung
  • 3 edits
    2 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245220. rdar://problem/50686229

When the set of backing-sharing layers changes, we need to issue a repaint
https://bugs.webkit.org/show_bug.cgi?id=197825

Reviewed by Zalan Bujtas.

Source/WebCore:

If the set of layers painting into a shared backing store changes, we need
to repaint that backing store. This happens when scrolling as shared layers
enter the visible area.

Test: compositing/shared-backing/overflow-scroll/repaint-shared-on-scroll.html

  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::setBackingSharingLayers):

LayoutTests:

  • compositing/shared-backing/overflow-scroll/repaint-shared-on-scroll-expected.html: Added.
  • compositing/shared-backing/overflow-scroll/repaint-shared-on-scroll.html: Added.

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

8:21 PM Changeset in webkit [245551] by Kocsen Chung
  • 4 edits in branches/safari-608.1.24.20-branch/Source/WebCore

Cherry-pick r245218. rdar://problem/50705506

Refactor composited backing-sharing code
https://bugs.webkit.org/show_bug.cgi?id=197824

Reviewed by Zalan Bujtas.

Clean up the backing-sharing code to share more code, and make it easier to understand.

Moves more logic into member functions on BackingSharingState, which are named to make
their functions clearer: startBackingSharingSequence/endBackingSharingSequence.

computeCompositingRequirements() and traverseUnchangedSubtree() now just call
updateBeforeDescendantTraversal/updateAfterDescendantTraversal.

No behavior change.

  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::willBeDestroyed): (WebCore::RenderLayerBacking::setBackingSharingLayers): Remove the early return, since we need to call setBackingProviderLayer() on the sharing layers in both code paths. (WebCore::RenderLayerBacking::removeBackingSharingLayer): (WebCore::RenderLayerBacking::clearBackingSharingLayers):
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::BackingSharingState::backingProviderCandidate const): (WebCore::RenderLayerCompositor::BackingSharingState::appendSharingLayer): (WebCore::RenderLayerCompositor::BackingSharingState::startBackingSharingSequence): (WebCore::RenderLayerCompositor::BackingSharingState::endBackingSharingSequence): (WebCore::RenderLayerCompositor::BackingSharingState::updateBeforeDescendantTraversal): (WebCore::RenderLayerCompositor::BackingSharingState::updateAfterDescendantTraversal): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::BackingSharingState::resetBackingProviderCandidate): Deleted.
  • rendering/RenderLayerCompositor.h:

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

8:21 PM Changeset in webkit [245550] by Kocsen Chung
  • 6 edits
    14 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245205. rdar://problem/50652127

Backing-sharing layers with transforms render incorrectly
https://bugs.webkit.org/show_bug.cgi?id=197692
<rdar://problem/50652127>

Reviewed by Antti Koivisto.
Source/WebCore:

Layers that paint into shared backing need to enter the RenderLayer painting code
in a way that paints the filters, transforms, opacity and blending.

RenderLayerBacking::paintIntoLayer() normally enters at paintLayerContents(), because
the effects are rendered via the GraphicsLayer, but shared layers will paint effects.
Note that if the backing-provider has effects, it will be the stacking context
for the shared layers, so it's correct that sharing layers are impacted by effects
on the backing-provider.

In addition, we have to ensure that we don't over-eagerly make layers shared.
Consider:

<div class="clipping">

<div class="sharing">

<div class="inner">
</div>

</div>

</div>

Here "clipping" is the provider layer, "sharing" paints into shared backing, but
we don't want to also mark "inner" as sharing, since "sharing" will just paint it.
This is akin to avoiding unnecessary compositing of z-order descendants when they can just
paint.

To do this we need to ensure that sharing layers are treated like compositing layers
in the overlap map, i.e. when a layer is sharing, we call overlapMap.pushCompositingContainer(),
and later overlapMap.popCompositingContainer().

Tests: compositing/shared-backing/nested-shared-layers-with-opacity.html

compositing/shared-backing/shared-layer-has-blending.html
compositing/shared-backing/shared-layer-has-filter.html
compositing/shared-backing/shared-layer-has-opacity.html
compositing/shared-backing/shared-layer-has-reflection.html
compositing/shared-backing/shared-layer-has-transform.html
compositing/shared-backing/shared-layer-isolates-blending.html
compositing/shared-backing/shared-transformed-layer-bounds.html
compositing/shared-backing/sharing-layer-becomes-non-scrollable.html
compositing/shared-backing/sharing-layer-has-effect.html

  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::paintLayer): (WebCore::RenderLayer::paintLayerWithEffects):
  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::paintIntoLayer):
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::CompositingState::stateForPaintOrderChildren const): (WebCore::backingProviderLayerCanIncludeLayer): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree):

LayoutTests:

Ref tests for effects on sharing layers. The references make "clipping" be stacking context via z-index,
which eliminates sharing.

  • compositing/shared-backing/nested-shared-layers-with-opacity-expected.html: Added.
  • compositing/shared-backing/nested-shared-layers-with-opacity.html: Added.
  • compositing/shared-backing/shared-layer-has-blending-expected.html: Added.
  • compositing/shared-backing/shared-layer-has-blending.html: Added.
  • compositing/shared-backing/shared-layer-has-filter-expected.html: Added.
  • compositing/shared-backing/shared-layer-has-filter.html: Added.
  • compositing/shared-backing/shared-layer-has-opacity-expected.html: Added.
  • compositing/shared-backing/shared-layer-has-opacity.html: Added.
  • compositing/shared-backing/shared-layer-has-reflection-expected.html: Added.
  • compositing/shared-backing/shared-layer-has-reflection.html: Added.
  • compositing/shared-backing/shared-layer-has-transform-expected.html: Added.
  • compositing/shared-backing/shared-layer-has-transform.html: Added.
  • compositing/shared-backing/shared-layer-isolates-blending-expected.html: Added.
  • compositing/shared-backing/shared-layer-isolates-blending.html: Added.

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

8:21 PM Changeset in webkit [245549] by Kocsen Chung
  • 3 edits
    2 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245181. rdar://problem/50670806

ASSERT(isSelfPaintingLayer()
hasSelfPaintingLayerDescendant()) on nytimes.com after r245170

https://bugs.webkit.org/show_bug.cgi?id=197776

Reviewed by Zalan Bujtas.

Source/WebCore:

Only try to paint into shared backing for layers that are able to be composited. This
avoids trying to do sharing for non-self-painting layers, which doesn't make sense.

Test: compositing/shared-backing/overflow-scroll/non-self-painting-layer-should-not-share.html

  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements):

LayoutTests:

  • compositing/shared-backing/overflow-scroll/non-self-painting-layer-should-not-share-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/non-self-painting-layer-should-not-share.html: Added.

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

8:20 PM Changeset in webkit [245548] by Kocsen Chung
  • 4 edits
    2 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245175. rdar://problem/50584991

Event region generation needs to know about backing-sharing
https://bugs.webkit.org/show_bug.cgi?id=197694
<rdar://problem/50584991>

Reviewed by Simon Fraser.

Source/WebCore:

Test: pointerevents/ios/touch-action-region-backing-sharing.html

  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateEventRegion):

Gather event region from backing sharing layers too.

LayoutTests:

  • platform/ios-wk2/TestExpectations:
  • pointerevents/ios/touch-action-region-backing-sharing-expected.txt: Added.
  • pointerevents/ios/touch-action-region-backing-sharing.html: Added.

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

8:20 PM Changeset in webkit [245547] by Kocsen Chung
  • 36 edits
    7 copies
    35 adds in branches/safari-608.1.24.20-branch

Cherry-pick r245170. rdar://problem/50445998

Implement backing-sharing in compositing layers, allowing overlap layers to paint into the backing store of another layer
https://bugs.webkit.org/show_bug.cgi?id=197561
<rdar://problem/50445998>

Reviewed by Antti Koivisto.
Source/WebCore:

This change introduces the concept of layers that share backing store for compositing. A layer
which is sharing its backing store first paints itself, and then some set of layers which come
later in paint order in the same stacking context. This reduces the composited layer count in
some overflow scrolling scenarios, thereby also simplifying the scrolling tree.

A backing-shared layer stores a vector of "sharing" RenderLayer* in its RenderLayerBacking. At
paint time, the owning layer is painted, then the sharing layers, setting the owning layer as the
painting root so that positioning and clipping just work.

Sharing layer relationships are constructed in RenderLayerCompositor::computeCompositingRequirements().
We track the last layer which was composited in paint order as a shared candidate. If a later layer
would composite for overlap (and no other reasons), then we allow it to share with the candidate
if the candidate is in its ancestor containing block chain. Sharing is currently limited to layers
in the same stacking context.

isComposited() returns false for sharing layers, but they are like composited layers in that
they behave as painting boundaries, so RenderLayer::paintLayer() needs to stop at them,
and repaints in shared layers have to be directed to their shared layer, hence
changes to RenderLayer::clippingRootForPainting() and RenderLayer::enclosingCompositingLayerForRepaint().

The clipping boundary logic in RenderLayer::backgroundClipRect() needed to be generalized so that
all calls to RenderLayer::parentClipRects() check for crossing painting boundaries and use
TemporaryClipRects in that case.

Tests: compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller.html

compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller.html
compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow.html
compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness.html
compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping.html
compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping.html
compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll.html
compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content.html
compositing/shared-backing/overflow-scroll/scrolled-contents-unconstrained-clip.html
compositing/shared-backing/overflow-scroll/shared-layer-clipping.html
compositing/shared-backing/overflow-scroll/shared-layer-composited-bounds.html
compositing/shared-backing/overflow-scroll/shared-layer-nested-relative-stacking.html
compositing/shared-backing/overflow-scroll/shared-layer-repaint.html
compositing/shared-backing/partial-compositing-update.html
compositing/shared-backing/partial-compositing-update2.html
compositing/shared-backing/remove-sharing-layer.html
compositing/shared-backing/sharing-cached-clip-rects.html

  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::~RenderLayer): (WebCore::RenderLayer::ancestorLayerIsInContainingBlockChain const): (WebCore::RenderLayer::setBackingProviderLayer): (WebCore::RenderLayer::disconnectFromBackingProviderLayer): (WebCore::RenderLayer::enclosingCompositingLayerForRepaint const): (WebCore::RenderLayer::clippingRootForPainting const): (WebCore::RenderLayer::clipToRect): (WebCore::RenderLayer::paintLayer): (WebCore::RenderLayer::updateClipRects): (WebCore::RenderLayer::clipCrossesPaintingBoundary const): (WebCore::RenderLayer::calculateClipRects const): (WebCore::outputPaintOrderTreeLegend): (WebCore::outputPaintOrderTreeRecursive): (WebCore::inContainingBlockChain): Deleted.
  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::willBeDestroyed): (WebCore::clearBackingSharingLayerProviders): (WebCore::RenderLayerBacking::setBackingSharingLayers): (WebCore::RenderLayerBacking::removeBackingSharingLayer): (WebCore::RenderLayerBacking::clearBackingSharingLayers): (WebCore::RenderLayerBacking::updateCompositedBounds): (WebCore::RenderLayerBacking::updateDrawsContent): (WebCore::RenderLayerBacking::isSimpleContainerCompositingLayer const): (WebCore::RenderLayerBacking::paintIntoLayer): (WebCore::RenderLayerBacking::paintContents):
  • rendering/RenderLayerBacking.h:
  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::CompositingState::stateForPaintOrderChildren const): (WebCore::RenderLayerCompositor::CompositingState::propagateStateFromChildren): (WebCore::RenderLayerCompositor::CompositingState::propagateStateFromChildrenForUnchangedSubtree): (WebCore::RenderLayerCompositor::BackingSharingState::resetBackingProviderCandidate): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::backingProviderLayerCanIncludeLayer): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::traverseUnchangedSubtree): (WebCore::RenderLayerCompositor::updateBacking): (WebCore::RenderLayerCompositor::layerWillBeRemoved): (WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason const):
  • rendering/RenderLayerCompositor.h:
  • rendering/RenderTreeAsText.cpp:

LayoutTests:

New tests for backing sharing, and new baselines of tests whose behavior is changed.

Scrolling tree tests that would be invalidate by sharing are changed to defeat sharing by adding
compositing layers early in stacking order.

  • TestExpectations:
  • compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
  • compositing/layer-creation/overflow-scroll-overlap-expected.txt:
  • compositing/layer-creation/overflow-scroll-overlap.html:
  • compositing/overflow/scrolling-content-clip-to-viewport.html:
  • compositing/rtl/rtl-scrolling-with-transformed-descendants-expected.txt:
  • compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller-expected.txt: Copied from LayoutTests/platform/ios/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt.
  • compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller.html: Added.
  • compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller.html: Added.
  • compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow.html: Copied from LayoutTests/scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow.html.
  • compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness.html: Added.
  • compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping.html: Added.
  • compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping.html: Added.
  • compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll-expected.txt: Copied from LayoutTests/platform/ios/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt.
  • compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll.html: Added.
  • compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content-expected.txt: Copied from LayoutTests/platform/ios/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt.
  • compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content.html: Added.
  • compositing/shared-backing/overflow-scroll/scrolled-contents-unconstrained-clip-expected.html: Added.
  • compositing/shared-backing/overflow-scroll/scrolled-contents-unconstrained-clip.html: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-clipping-expected.html: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-clipping.html: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-composited-bounds-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-composited-bounds.html: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-nested-relative-stacking-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-nested-relative-stacking.html: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-repaint-expected.txt: Added.
  • compositing/shared-backing/overflow-scroll/shared-layer-repaint.html: Added.
  • compositing/shared-backing/partial-compositing-update-expected.txt: Added.
  • compositing/shared-backing/partial-compositing-update.html: Added.
  • compositing/shared-backing/partial-compositing-update2-expected.txt: Added.
  • compositing/shared-backing/partial-compositing-update2.html: Added.
  • compositing/shared-backing/remove-sharing-layer-expected.txt: Added.
  • compositing/shared-backing/remove-sharing-layer.html: Added.
  • compositing/shared-backing/sharing-cached-clip-rects-expected.txt: Added.
  • compositing/shared-backing/sharing-cached-clip-rects.html: Added.
  • platform/ios-wk2/TestExpectations:
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/absolute-in-stacking-relative-in-scroller-expected.txt: Copied from LayoutTests/platform/ios/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/composited-absolute-in-absolute-in-relative-in-scroller-expected.txt: Added.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/nested-absolute-with-clipping-in-stacking-overflow-expected.txt: Added.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/previous-sibling-prevents-inclusiveness-expected.txt: Added.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-clipping-expected.txt: Added.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/relative-in-clipping-in-scroller-in-relative-clipping-expected.txt: Added.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/relative-in-div-in-overflow-scroll-expected.txt: Copied from LayoutTests/platform/ios/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt.
  • platform/ios-wk2/compositing/shared-backing/overflow-scroll/scrolled-contents-has-painted-content-expected.txt: Copied from LayoutTests/platform/ios/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt.
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-absolute-overflow-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-relative-in-overflow-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt:
  • platform/ios-wk2/scrollingcoordinator/scrolling-tree/positioned-nodes-complex-expected.txt:
  • platform/ios/compositing/geometry/limit-layer-bounds-clipping-ancestor-expected.txt:
  • platform/ios/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
  • platform/ios/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt:
  • platform/ios/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt:
  • platform/mac-wk1/compositing/overflow/scrolling-content-clip-to-viewport-expected.txt:
  • platform/mac-wk2/TestExpectations:
  • platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
  • platform/mac/compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-absolute-overflow-expected.txt:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-absolute-overflow.html:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-relative-in-overflow-expected.txt:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-relative-in-overflow.html:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow-expected.txt:
  • scrollingcoordinator/scrolling-tree/nested-absolute-in-sc-overflow.html:
  • scrollingcoordinator/scrolling-tree/positioned-nodes-complex-expected.txt:
  • scrollingcoordinator/scrolling-tree/positioned-nodes-complex.html:

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

8:20 PM Changeset in webkit [245546] by Kocsen Chung
  • 2 edits in branches/safari-608.1.24.20-branch/Source/WebCore

Cherry-pick r245147. rdar://problem/50621407

fast/hidpi/video-controls-in-hidpi.html sometimes asserts in WK1
https://bugs.webkit.org/show_bug.cgi?id=197695

Reviewed by Zalan Bujtas.

With the backing-sharing changes that landed in r245058, some WebKit1 tests with media controls asserted in
RenderLayerBacking::computeParentGraphicsLayerRect() because a layer would have a m_ancestorClippingLayer,
but backgroundClipRect() would return an infinite rect.

This happened when a layer tree change caused the layer's compositing ancestor to no longer isolate
composited blending (which affects the behavior of RenderLayerCompositor:clippedByAncestor()), but we failed
to mark its composited children as needing the configuration update which would eliminate their m_ancestorClippingLayers.

The fix is to call setChildrenNeedCompositingGeometryUpdate() when isolatesCompositedBlending changes. We don't haev
setChildrenNeedCompositingConfigurationUpdate(), but setChildrenNeedCompositingGeometryUpdate() has the desired side-effect.

I was unable to make a standalone test case for this, but the code is exercised by media control tests.

  • rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements):

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

6:56 PM Changeset in webkit [245545] by Dewei Zhu
  • 4 edits in trunk/Websites/perf.webkit.org

Pruning old file logic should not stop after removing 10 files if there are more files to be removed.
https://bugs.webkit.org/show_bug.cgi?id=197870

Reviewed by Ryosuke Niwa.

Pruning old file logic should keep removing removable files to make enough space for a new file upload.
It should only attempt to remve the files that have not been removed.

  • public/include/uploaded-file-helpers.php: Modified 'prune_old_files' to allow to remove more than 10 files.

Fixed a bug that a removed file keep getting removed but never free up new space.

  • server-tests/privileged-api-upload-file-tests.js:

(makeRandomAlnumStringForLength): Helper function to generate random content for a given length.

  • server-tests/resources/test-server.js: Update total file size limit for this change.

(TestServer.prototype.testConfig):

6:52 PM Changeset in webkit [245544] by Fujii Hironori
  • 6 edits in trunk/Tools

run-webkit-tests not gathering crash logs on Cygwin Python and Windows Python
https://bugs.webkit.org/show_bug.cgi?id=179828

Reviewed by Jonathan Bedard.

ServerProcess should store its Windows PID for Cygwin before
process crashing because the Windows PID is required to get a
correct CrashLog.

CrashLog format has been changed. CrashLogs.GLOBAL_PID_REGEX
should accept the new format.

  • Scripts/webkitpy/common/system/crashlogs.py:

(CrashLogs.GLOBAL_PID_REGEX): Accept any words between 'Global' and 'PID:'.

  • Scripts/webkitpy/port/driver.py:

(Driver.has_crashed):
(Driver._check_for_driver_crash_or_unresponsiveness):
(Driver._read_block):
Store server_process.system_pid() to self._crashed_pid instead of server_process.pid().

  • Scripts/webkitpy/port/server_process.py:

(ServerProcess.init):
(ServerProcess.system_pid): Added.
(ServerProcess._find_system_pid): Added.
(ServerProcess._start): Set self._system_pid.

  • Scripts/webkitpy/port/win.py:

(WinPort._get_crash_log): Removed broken old code converting Cygwin pid to Windows pid.

6:36 PM Changeset in webkit [245543] by Ross Kirsling
  • 80 edits in trunk/Source

Make lossy LayoutUnit constructors explicit
https://bugs.webkit.org/show_bug.cgi?id=191811

Reviewed by Antti Koivisto.

Source/WebCore:

  • platform/LayoutUnit.h:

Make lossy unary constructors explicit.
For ergonomics, give float overloads to copy constructor and round/floor/ceil functions.

  • css/LengthFunctions.h:
  • platform/graphics/LayoutPoint.h:
  • platform/graphics/LayoutRect.h:
  • platform/graphics/LayoutSize.h:
  • rendering/RenderBox.h:
  • rendering/RenderElement.h:

Templatize common functions to allow LayoutUnit itself to dictate which types it allows.

  • html/shadow/SliderThumbElement.cpp:
  • page/FrameView.cpp:
  • page/Page.cpp:
  • page/SpatialNavigation.cpp:
  • page/scrolling/AxisScrollSnapOffsets.cpp:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
  • layout/FormattingContextGeometry.cpp:
  • layout/FormattingContextQuirks.cpp:
  • layout/LayoutState.cpp:
  • layout/displaytree/DisplayBox.h:
  • layout/inlineformatting/InlineFormattingContextLineLayout.cpp:
  • layout/layouttree/LayoutReplaced.cpp:
  • platform/animation/AnimationUtilities.h:
  • platform/cocoa/ScrollSnapAnimatorState.mm:
  • rendering/BorderEdge.cpp:
  • rendering/EllipsisBox.cpp:
  • rendering/FixedTableLayout.cpp:
  • rendering/InlineBox.cpp:
  • rendering/InlineFlowBox.cpp:
  • rendering/InlineFlowBox.h:
  • rendering/InlineTextBox.cpp:
  • rendering/RenderBlock.cpp:
  • rendering/RenderBlockFlow.cpp:
  • rendering/RenderBlockLineLayout.cpp:
  • rendering/RenderBox.cpp:
  • rendering/RenderBoxModelObject.cpp:
  • rendering/RenderBoxModelObject.h:
  • rendering/RenderDeprecatedFlexibleBox.cpp:
  • rendering/RenderElement.cpp:
  • rendering/RenderImage.cpp:
  • rendering/RenderInline.cpp:
  • rendering/RenderLineBreak.cpp:
  • rendering/RenderListMarker.cpp:
  • rendering/RenderMultiColumnSet.cpp:
  • rendering/RenderMultiColumnSet.h:
  • rendering/RenderObject.cpp:
  • rendering/RenderReplaced.cpp:
  • rendering/RenderTable.cpp:
  • rendering/RenderTableCell.cpp:
  • rendering/RenderTableSection.cpp:
  • rendering/RenderText.cpp:
  • rendering/RenderTextControlMultiLine.cpp:
  • rendering/RenderThemeMac.mm:
  • rendering/RenderVTTCue.cpp:
  • rendering/RenderView.cpp:
  • rendering/RootInlineBox.cpp:
  • rendering/SimpleLineLayoutFunctions.cpp:
  • rendering/SimpleLineLayoutPagination.cpp:
  • rendering/SimpleLineLayoutResolver.cpp:
  • rendering/line/LineWidth.cpp:
  • rendering/mathml/MathOperator.cpp:
  • rendering/mathml/RenderMathMLBlock.cpp:
  • rendering/mathml/RenderMathMLBlock.h:
  • rendering/mathml/RenderMathMLFencedOperator.h:
  • rendering/mathml/RenderMathMLFraction.cpp:
  • rendering/mathml/RenderMathMLMenclose.cpp:
  • rendering/mathml/RenderMathMLOperator.cpp:
  • rendering/mathml/RenderMathMLRoot.cpp:
  • rendering/mathml/RenderMathMLScripts.cpp:
  • rendering/mathml/RenderMathMLToken.cpp:
  • rendering/shapes/BoxShape.cpp:
  • rendering/shapes/ShapeOutsideInfo.cpp:
  • rendering/style/CollapsedBorderValue.h:
  • rendering/style/NinePieceImage.cpp:
  • rendering/style/NinePieceImage.h:
  • rendering/style/RenderStyle.cpp:
  • rendering/style/RenderStyle.h:
  • rendering/svg/RenderSVGText.cpp:
  • rendering/svg/SVGInlineTextBox.cpp:

Make usage of LayoutUnit(float) and LayoutUnit(double) explicit where needed.

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

Make usage of LayoutUnit(float) explicit.

6:09 PM Changeset in webkit [245542] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[iOS] WebKit crash loop
https://bugs.webkit.org/show_bug.cgi?id=198061
<rdar://problem/50967271>

Reviewed by Brent Fulgham.

A new syscall rule needs to be added to the sandbox on iOS.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
5:41 PM HackingWebInspector edited by Nikita Vasilyev
(diff)
5:12 PM Changeset in webkit [245541] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Windows 10 test results missing on flakiness dashboard
https://bugs.webkit.org/show_bug.cgi?id=198058

Rubber-stamped by Alexey Proskuryakov.

  • TestResultServer/static-dashboards/flakiness_dashboard.js:
5:07 PM Changeset in webkit [245540] by sihui_liu@apple.com
  • 46 edits
    8 copies
    3 adds
    1 delete in trunk

Move Web Storage to Network Process
https://bugs.webkit.org/show_bug.cgi?id=197636
Source/WebKit:

Reviewed by Youenn Fablet.

  • CMakeLists.txt:
  • DerivedSources.make:
  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::didReceiveMessage):
(WebKit::NetworkConnectionToWebProcess::didReceiveSyncMessage):
(WebKit::NetworkConnectionToWebProcess::didClose):
(WebKit::NetworkConnectionToWebProcess::webPageWasAdded):
(WebKit::NetworkConnectionToWebProcess::webPageWasRemoved):
(WebKit::NetworkConnectionToWebProcess::webProcessSessionChanged):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::networkSessionByConnection const):
(WebKit::NetworkProcess::hasLocalStorage):
(WebKit::NetworkProcess::fetchWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteData):
(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
(WebKit::filterForRegistrableDomains):
(WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains):
(WebKit::NetworkProcess::webPageWasAdded):
(WebKit::NetworkProcess::webPageWasRemoved):
(WebKit::NetworkProcess::webProcessWasDisconnected):
(WebKit::NetworkProcess::webProcessSessionChanged):
(WebKit::NetworkProcess::getLocalStorageOriginDetails):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::NetworkSession):
(WebKit::NetworkSession::~NetworkSession):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::storageManager):

  • NetworkProcess/NetworkSessionCreationParameters.cpp:

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

  • NetworkProcess/NetworkSessionCreationParameters.h:
  • NetworkProcess/WebStorage/LocalStorageDatabase.cpp: Renamed from Source/WebKit/UIProcess/WebStorage/LocalStorageDatabase.cpp.

(WebKit::LocalStorageDatabase::create):
(WebKit::LocalStorageDatabase::LocalStorageDatabase):
(WebKit::LocalStorageDatabase::~LocalStorageDatabase):
(WebKit::LocalStorageDatabase::openDatabase):
(WebKit::LocalStorageDatabase::tryToOpenDatabase):
(WebKit::LocalStorageDatabase::migrateItemTableIfNeeded):
(WebKit::LocalStorageDatabase::importItems):
(WebKit::LocalStorageDatabase::setItem):
(WebKit::LocalStorageDatabase::removeItem):
(WebKit::LocalStorageDatabase::clear):
(WebKit::LocalStorageDatabase::close):
(WebKit::LocalStorageDatabase::itemDidChange):
(WebKit::LocalStorageDatabase::scheduleDatabaseUpdate):
(WebKit::LocalStorageDatabase::updateDatabase):
(WebKit::LocalStorageDatabase::updateDatabaseWithChangedItems):
(WebKit::LocalStorageDatabase::databaseIsEmpty):

  • NetworkProcess/WebStorage/LocalStorageDatabase.h: Renamed from Source/WebKit/UIProcess/WebStorage/LocalStorageDatabase.h.
  • NetworkProcess/WebStorage/LocalStorageDatabaseTracker.cpp: Renamed from Source/WebKit/UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp.

(WebKit::LocalStorageDatabaseTracker::create):
(WebKit::LocalStorageDatabaseTracker::LocalStorageDatabaseTracker):
(WebKit::LocalStorageDatabaseTracker::~LocalStorageDatabaseTracker):
(WebKit::LocalStorageDatabaseTracker::databasePath const):
(WebKit::LocalStorageDatabaseTracker::didOpenDatabaseWithOrigin):
(WebKit::LocalStorageDatabaseTracker::deleteDatabaseWithOrigin):
(WebKit::LocalStorageDatabaseTracker::deleteAllDatabases):
(WebKit::LocalStorageDatabaseTracker::databasesModifiedSince):
(WebKit::LocalStorageDatabaseTracker::origins const):
(WebKit::LocalStorageDatabaseTracker::originDetails):

  • NetworkProcess/WebStorage/LocalStorageDatabaseTracker.h: Renamed from Source/WebKit/UIProcess/WebStorage/LocalStorageDatabaseTracker.h.
  • NetworkProcess/WebStorage/StorageManager.cpp: Renamed from Source/WebKit/UIProcess/WebStorage/StorageManager.cpp.

(WebKit::StorageManager::StorageArea::securityOrigin const):
(WebKit::StorageManager::StorageArea::isSessionStorage const):
(WebKit::StorageManager::LocalStorageNamespace::storageManager const):
(WebKit::StorageManager::TransientLocalStorageNamespace::create):
(WebKit::StorageManager::TransientLocalStorageNamespace::~TransientLocalStorageNamespace):
(WebKit::StorageManager::TransientLocalStorageNamespace::getOrCreateStorageArea):
(WebKit::StorageManager::TransientLocalStorageNamespace::origins const):
(WebKit::StorageManager::TransientLocalStorageNamespace::clearStorageAreasMatchingOrigin):
(WebKit::StorageManager::TransientLocalStorageNamespace::clearAllStorageAreas):
(WebKit::StorageManager::TransientLocalStorageNamespace::TransientLocalStorageNamespace):
(WebKit::StorageManager::StorageArea::create):
(WebKit::StorageManager::StorageArea::StorageArea):
(WebKit::StorageManager::StorageArea::~StorageArea):
(WebKit::StorageManager::StorageArea::addListener):
(WebKit::StorageManager::StorageArea::removeListener):
(WebKit::StorageManager::StorageArea::hasListener const):
(WebKit::StorageManager::StorageArea::clone const):
(WebKit::StorageManager::StorageArea::setItem):
(WebKit::StorageManager::StorageArea::removeItem):
(WebKit::StorageManager::StorageArea::clear):
(WebKit::StorageManager::StorageArea::items const):
(WebKit::StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded const):
(WebKit::StorageManager::StorageArea::dispatchEvents const):
(WebKit::StorageManager::LocalStorageNamespace::create):
(WebKit::StorageManager::LocalStorageNamespace::LocalStorageNamespace):
(WebKit::StorageManager::LocalStorageNamespace::~LocalStorageNamespace):
(WebKit::StorageManager::LocalStorageNamespace::getOrCreateStorageArea):
(WebKit::StorageManager::LocalStorageNamespace::didDestroyStorageArea):
(WebKit::StorageManager::LocalStorageNamespace::clearStorageAreasMatchingOrigin):
(WebKit::StorageManager::LocalStorageNamespace::clearAllStorageAreas):
(WebKit::StorageManager::SessionStorageNamespace::isEmpty const):
(WebKit::StorageManager::SessionStorageNamespace::allowedConnections const):
(WebKit::StorageManager::SessionStorageNamespace::origins const):
(WebKit::StorageManager::SessionStorageNamespace::clearStorageAreasMatchingOrigin):
(WebKit::StorageManager::SessionStorageNamespace::clearAllStorageAreas):
(WebKit::StorageManager::SessionStorageNamespace::create):
(WebKit::StorageManager::SessionStorageNamespace::SessionStorageNamespace):
(WebKit::StorageManager::SessionStorageNamespace::~SessionStorageNamespace):
(WebKit::StorageManager::SessionStorageNamespace::addAllowedConnection):
(WebKit::StorageManager::SessionStorageNamespace::removeAllowedConnection):
(WebKit::StorageManager::SessionStorageNamespace::getOrCreateStorageArea):
(WebKit::StorageManager::SessionStorageNamespace::cloneTo):
(WebKit::StorageManager::create):
(WebKit::StorageManager::StorageManager):
(WebKit::StorageManager::~StorageManager):
(WebKit::StorageManager::createSessionStorageNamespace):
(WebKit::StorageManager::destroySessionStorageNamespace):
(WebKit::StorageManager::addAllowedSessionStorageNamespaceConnection):
(WebKit::StorageManager::removeAllowedSessionStorageNamespaceConnection):
(WebKit::StorageManager::cloneSessionStorageNamespace):
(WebKit::StorageManager::processWillOpenConnection):
(WebKit::StorageManager::processDidCloseConnection):
(WebKit::StorageManager::getSessionStorageOrigins):
(WebKit::StorageManager::deleteSessionStorageOrigins):
(WebKit::StorageManager::deleteSessionStorageEntriesForOrigins):
(WebKit::StorageManager::getLocalStorageOrigins):
(WebKit::StorageManager::getLocalStorageOriginDetails):
(WebKit::StorageManager::deleteLocalStorageEntriesForOrigin):
(WebKit::StorageManager::deleteLocalStorageOriginsModifiedSince):
(WebKit::StorageManager::deleteLocalStorageEntriesForOrigins):
(WebKit::StorageManager::createLocalStorageMap):
(WebKit::StorageManager::createTransientLocalStorageMap):
(WebKit::StorageManager::createSessionStorageMap):
(WebKit::StorageManager::destroyStorageMap):
(WebKit::StorageManager::getValues):
(WebKit::StorageManager::setItem):
(WebKit::StorageManager::removeItem):
(WebKit::StorageManager::clear):
(WebKit::StorageManager::applicationWillTerminate):
(WebKit::StorageManager::findStorageArea const):
(WebKit::StorageManager::getOrCreateLocalStorageNamespace):
(WebKit::StorageManager::getOrCreateTransientLocalStorageNamespace):

  • NetworkProcess/WebStorage/StorageManager.h: Renamed from Source/WebKit/UIProcess/WebStorage/StorageManager.h.
  • NetworkProcess/WebStorage/StorageManager.messages.in: Renamed from Source/WebKit/UIProcess/WebStorage/StorageManager.messages.in.
  • NetworkProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm: Copied from Source/WebKit/UIProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm.

(WebKit::LocalStorageDatabaseTracker::platformMaybeExcludeFromBackup const):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

  • NetworkProcess/curl/NetworkSessionCurl.cpp:

(WebKit::NetworkSessionCurl::NetworkSessionCurl):

  • NetworkProcess/soup/NetworkSessionSoup.cpp:

(WebKit::NetworkSessionSoup::NetworkSessionSoup):

  • PlatformMac.cmake:
  • PlatformWin.cmake:
  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • Shared/WebsiteData/WebsiteData.cpp:

(WebKit::WebsiteData::ownerProcess):

  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/API/C/WKKeyValueStorageManager.cpp:

(WKKeyValueStorageManagerGetKeyValueStorageOrigins):
(WKKeyValueStorageManagerGetStorageDetailsByOrigin):
(WKKeyValueStorageManagerDeleteEntriesForOrigin):
(WKKeyValueStorageManagerDeleteAllEntries):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::hasLocalStorage):
(WebKit::NetworkProcessProxy::getLocalStorageDetails):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::createNewPage):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):
(WebKit::WebsiteDataStore::platformInitialize):
(WebKit::WebsiteDataStore::platformDestroy):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::computeNetworkProcessAccessTypeForDataFetch):
(WebKit::WebsiteDataStore::fetchDataAndApply):
(WebKit::WebsiteDataStore::removeData):
(WebKit::WebsiteDataStore::hasLocalStorageForTesting const):
(WebKit::WebsiteDataStore::parameters):
(WebKit::WebsiteDataStore::getLocalStorageDetails):
(WebKit::m_client): Deleted.
(WebKit::WebsiteDataStore::cloneSessionData): Deleted.
(WebKit::WebsiteDataStore::webPageWasAdded): Deleted.
(WebKit::WebsiteDataStore::webPageWasInvalidated): Deleted.
(WebKit::WebsiteDataStore::webProcessWillOpenConnection): Deleted.
(WebKit::WebsiteDataStore::webPageWillOpenConnection): Deleted.
(WebKit::WebsiteDataStore::webPageDidCloseConnection): Deleted.
(WebKit::WebsiteDataStore::webProcessDidCloseConnection): Deleted.

  • UIProcess/WebsiteData/WebsiteDataStore.h:

(WebKit::WebsiteDataStore::resolvedLocalStorageDirectory const):
(WebKit::WebsiteDataStore::storageManager): Deleted.

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::setPrivateBrowsingEnabled):

  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::didReceiveMessage):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createWindow):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::close):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::createWebPage):
(WebKit::WebProcess::removeWebPage):
(WebKit::WebProcess::ensureNetworkProcessConnection):
(WebKit::WebProcess::networkProcessConnectionClosed):
(WebKit::WebProcess::registerStorageAreaMap):
(WebKit::WebProcess::unregisterStorageAreaMap):
(WebKit::WebProcess::storageAreaMap const):
(WebKit::WebProcess::enablePrivateBrowsingForTesting):

  • WebProcess/WebProcess.h:
  • WebProcess/WebStorage/StorageAreaMap.cpp:

(WebKit::StorageAreaMap::StorageAreaMap):
(WebKit::StorageAreaMap::~StorageAreaMap):
(WebKit::StorageAreaMap::setItem):
(WebKit::StorageAreaMap::removeItem):
(WebKit::StorageAreaMap::clear):
(WebKit::StorageAreaMap::loadValuesIfNeeded):
(WebKit::StorageAreaMap::connect):
(WebKit::StorageAreaMap::disconnect):

  • WebProcess/WebStorage/StorageAreaMap.h:

(WebKit::StorageAreaMap::identifier const):

Tools:

Reviewed by Youenn Fablet.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/LocalStorageDatabaseTracker.mm: Remove the wait for database file update.

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/LocalStoragePersistence.mm: Add a test for network process crash recovery.

(TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm: Fix a typo and add a test case to cover it.
  • TestWebKitAPI/Tests/WebKitCocoa/local-storage-process-crashes.html: Added.
4:06 PM Changeset in webkit [245539] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

Provide an explicit UIModalPresentation style when creating an AVPlayerViewController for fullscreen.
https://bugs.webkit.org/show_bug.cgi?id=198052

Reviewed by Tim Horton.

Make sure AVPlayerViewController has an "overFullScreen" modal style.

  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(-[WebAVPlayerViewController initWithFullscreenInterface:]):

3:53 PM Changeset in webkit [245538] by Chris Dumez
  • 5 edits
    2 adds in trunk

Fix security check in ScriptController::canAccessFromCurrentOrigin()
https://bugs.webkit.org/show_bug.cgi?id=196730
<rdar://problem/49731231>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Fix security check in ScriptController::canAccessFromCurrentOrigin() when there is no
current JS exec state. Instead of returning true unconditionally, we now fall back to
using the accessing document's origin for the security check. The new behavior is
aligned with Blink:
https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/html/html_frame_element_base.cc?rcl=d3f22423d512b45466f1694020e20da9e0c6ee6a&l=62

This fix is based on a patch from Sergei Glazunov <glazunov@google.com>.

Test: http/tests/security/showModalDialog-sync-cross-origin-page-load2.html

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::canAccessFromCurrentOrigin):

  • bindings/js/ScriptController.h:
  • html/HTMLFrameElementBase.cpp:

(WebCore::HTMLFrameElementBase::isURLAllowed const):

LayoutTests:

Add layout test coverage.

  • http/tests/security/showModalDialog-sync-cross-origin-page-load2-expected.txt: Added.
  • http/tests/security/showModalDialog-sync-cross-origin-page-load2.html: Added.
2:20 PM WebKitGTK/2.24.x edited by Adrian Perez de Castro
(diff)
2:20 PM Changeset in webkit [245537] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.24/Source/WebCore

Merged r243690 - 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:17 PM Changeset in webkit [245536] by Ross Kirsling
  • 12 edits
    1 copy
    5 adds in trunk

[WinCairo] Implement Remote Web Inspector Client.
https://bugs.webkit.org/show_bug.cgi?id=197434

Reviewed by Don Olmstead.

.:

  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/OptionsWinCairo.cmake:

Source/JavaScriptCore:

  • inspector/remote/socket/RemoteInspectorConnectionClient.cpp:

(Inspector::RemoteInspectorConnectionClient::didAccept): Deleted.

  • inspector/remote/socket/RemoteInspectorConnectionClient.h:

(Inspector::RemoteInspectorConnectionClient::didAccept):

  • inspector/remote/socket/RemoteInspectorServer.cpp:

(Inspector::RemoteInspectorServer::dispatchMap):

Source/WebKit:

  • PlatformWin.cmake:
  • UIProcess/RemoteWebInspectorProxy.cpp:
  • UIProcess/RemoteWebInspectorProxy.h:
  • UIProcess/socket/RemoteInspectorClient.cpp: Added.
  • UIProcess/socket/RemoteInspectorClient.h: Added.
  • UIProcess/socket/RemoteInspectorProtocolHandler.cpp: Added.
  • UIProcess/socket/RemoteInspectorProtocolHandler.h: Added.
  • UIProcess/win/RemoteWebInspectorProxyWin.cpp: Added.
  • UIProcess/win/WebView.cpp:

(WebKit::WebView::WebView):

1:45 PM Changeset in webkit [245535] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Storage tab crashes easily when adding new local/session storage entries.
https://bugs.webkit.org/show_bug.cgi?id=198004

Reviewed by Ross Kirsling.

  • UserInterface/Views/DataGrid.js:

(WI.DataGrid.prototype._startEditingNodeAtColumnIndex):
Force a layout in the case that a new PlaceholderDataGridNode was added to the end of the
DataGrid as part of the editCallback. Web Inspector won't crash without this, but it
won't properly select/focus the next row when tabbing from the last column to the next row.

(WI.DataGrid.prototype._editingCommitted):
Save the new value of the column before removing the editing styles, as that refreshes the
DataGridNode. If the new value isn't saved, the old value is used during the refresh.

(WI.DataGrid.prototype._keyDown):
Drive-by: use get element instead of using the member variable directly, as the underlying
value might not have been initialized yet.

1:32 PM Changeset in webkit [245534] by commit-queue@webkit.org
  • 6 edits in trunk

Range getBoundingClientRect returning zero rect on simple text node with <br> before it
https://bugs.webkit.org/show_bug.cgi?id=182181

Patch by Gabe Giosia <giosia@google.com> on 2019-05-20
Reviewed by Antti Koivisto.

Source/WebCore:

Correct rect of RenderText in a block element when used in a Range
over a line break element. The end offset was miscalculated.

Addded line-break case to fast/dom/Range/getBoundingClientRect.html

  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::collectAbsoluteQuadsForRange):

  • rendering/SimpleLineLayoutResolver.cpp:

(WebCore::SimpleLineLayout::RunResolver::rangeForRendererWithOffsets const):

LayoutTests:

Test getBoundingClientRect with a Range that contains a line break.

  • fast/dom/Range/getBoundingClientRect-expected.txt:
  • fast/dom/Range/getBoundingClientRect.html:
12:18 PM Changeset in webkit [245533] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] STP can't launch any WebContent processes
https://bugs.webkit.org/show_bug.cgi?id=198045
<rdar://problem/50931110>

Reviewed by Brent Fulgham.

This is caused by a syscall sandbox violation.

  • WebProcess/com.apple.WebProcess.sb.in:
11:30 AM Changeset in webkit [245532] by Kocsen Chung
  • 7 edits in branches/safari-608.1.24.40-branch/Source

Versioning.

11:24 AM Changeset in webkit [245531] by Keith Rollin
  • 2 edits in trunk/Tools

generate-xcfilelists is stranding temporary files
https://bugs.webkit.org/show_bug.cgi?id=198008
<rdar://problem/50893659>

Reviewed by Jonathan Bedard.

generate-xcfilelists makes use of temporary files on disk. These files
are opened with the OS's "temporary" bit set, causing them to get
deleted when closed or the process exists. However, these temporary
files actually end up persisting after the script exists. This is
because sed is used to process the files, and is done so in a way
that causes the "temporary" bit to get cleared.

Address this issue by no longer using sed and instead performing the
equivalent processing the file content in-memory.

  • Scripts/webkitpy/generate_xcfilelists_lib/generators.py:

(BaseGenerator._generate_derived):
(BaseGenerator._generate_unified):
(BaseGenerator._replace):
(BaseGenerator._unexpand):
(BaseGenerator._find_added_lines.get_lines):
(BaseGenerator._find_added_lines):

11:17 AM Changeset in webkit [245530] by Kocsen Chung
  • 1 copy in branches/safari-608.1.24.40-branch

New branch.

11:12 AM Changeset in webkit [245529] by Kocsen Chung
  • 7 edits in branches/safari-608.1.24.30-branch/Source

Versioning.

11:03 AM Changeset in webkit [245528] by dino@apple.com
  • 8 edits in branches/safari-608.1.24-branch/Source/WebKit

Cherry-pick r245272. <rdar://problem/50743963>

2019-05-13 Wenson Hsieh <Wenson Hsieh>

Followup to r245267: fix some more deprecated uses of -[UIApplication interfaceOrientation]
https://bugs.webkit.org/show_bug.cgi?id=197867
<rdar://problem/50743963>

Reviewed by Simon Fraser.

Add a helper method on WKContentView that asks the view's window's scene for an interface orientation; then,
use this helper from various places in WebKit instead of invoking -[UIApplication interfaceOrientation]
directly. No change in behavior.

  • UIProcess/ios/WKContentView.h:
  • UIProcess/ios/WKContentView.mm: (-[WKContentView interfaceOrientation]):
  • UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm: (-[WKDataListSuggestionsPicker initWithInformation:inView:]):
  • UIProcess/ios/forms/WKFormColorPicker.mm: (-[WKColorPicker initWithView:]):
  • UIProcess/ios/forms/WKFormInputControl.mm: (-[WKDateTimePicker initWithView:datePickerMode:]):
  • UIProcess/ios/forms/WKFormSelectPicker.mm: (-[WKMultipleSelectPicker initWithView:]):
  • UIProcess/ios/forms/WKFormSelectPopover.mm: (-[WKSelectPopover initWithView:hasGroups:]):
11:03 AM Changeset in webkit [245527] by dino@apple.com
  • 2 edits in branches/safari-608.1.24-branch/Source/WebKit

Cherry-pick r245267.

2019-05-13 Wenson Hsieh <Wenson Hsieh>

Unreviewed, fix some deprecation warnings when using a recent SDK

  • UIProcess/ios/WebDataListSuggestionsDropdownIOS.mm: (-[WKDataListSuggestionsPicker initWithInformation:inView:]):
10:54 AM Changeset in webkit [245526] by Kocsen Chung
  • 1 copy in branches/safari-608.1.24.30-branch

New branch.

10:51 AM Changeset in webkit [245525] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening after r245482.

  • platform/mac/TestExpectations: Explicitly mark webgl/2.0.0/conformance2/textures/misc/copy-texture-image-luma-format.html

as slow for High Sierra.

10:51 AM Changeset in webkit [245524] by Kocsen Chung
  • 7 edits in branches/safari-608.1.24.20-branch/Source

Versioning.

10:43 AM Changeset in webkit [245523] by Adrian Perez de Castro
  • 1 copy in releases/WPE WebKit/webkit-2.24.2

WPE WebKit 2.24.2

10:42 AM Changeset in webkit [245522] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.24

Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.24.2 release

build-wpe-releng/..:

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

build-wpe-releng/../Source/WebKit:

  • wpe/NEWS: Add release notes for 2.24.2.
10:42 AM Changeset in webkit [245521] by Adrian Perez de Castro
  • 2 edits in releases/WebKitGTK/webkit-2.24/Tools

Merged r243062 - [GTK][WPE] Cryptic error from Tools/gtkdoc/generate-gtkdoc
https://bugs.webkit.org/show_bug.cgi?id=195883

Reviewed by Carlos Garcia Campos.

  • gtkdoc/gtkdoc.py:

(GTKDoc._run_command): When commands fail to run, include the full command line for
the program invocation and the output it has generated on the standard error stream.

10:41 AM Changeset in webkit [245520] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Allow WebContent mach-lookup AGXCompilerService
https://bugs.webkit.org/show_bug.cgi?id=198031
<rdar://problem/50552974>

Patch by Zhifei Fang <zhifei_fang@apple.com> on 2019-05-20
Reviewed by Per Arne Vollan.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
10:38 AM Changeset in webkit [245519] by Kocsen Chung
  • 1 copy in branches/safari-608.1.24.20-branch

New branch.

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

Hitpoint for link which spans two lines in web content is incorrect
https://bugs.webkit.org/show_bug.cgi?id=197511
<rdar://problem/49971483>

Patch by Andres Gonzalez <Andres Gonzalez> on 2019-05-20
Reviewed by Chris Fleizach.

  • accessibility/ios-simulator/links-activation.html:
  • accessibility/links-activation-expected.txt:
  • accessibility/links-activation.html:
10:14 AM Changeset in webkit [245517] by sihui_liu@apple.com
  • 8 edits in trunk

[ Mac WK2 iOS Sim] Layout Test http/tests/resourceLoadStatistics/website-data-removal-for-site-navigated-to-with-link-decoration.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196307
<rdar://problem/49345360>

Reviewed by Alex Christensen.

Source/WebKit:

Delay dumping statistics if there is data being removed.

  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:

(WebKit::ResourceLoadStatisticsStore::removeDataRecords):

  • NetworkProcess/Classifier/ResourceLoadStatisticsStore.h:

(WebKit::ResourceLoadStatisticsStore::dataRecordsBeingRemoved const):

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::dumpResourceLoadStatistics):
(WebKit::WebResourceLoadStatisticsStore::tryDumpResourceLoadStatistics):

  • NetworkProcess/Classifier/WebResourceLoadStatisticsStore.h:

LayoutTests:

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac-wk2/TestExpectations:
7:55 AM WebKitGTK/2.24.x edited by Adrian Perez de Castro
(diff)
7:50 AM Changeset in webkit [245516] by commit-queue@webkit.org
  • 4 edits in trunk

[WPE][Qt] Use C++17 instead of C++14
https://bugs.webkit.org/show_bug.cgi?id=197415

Patch by Ludovico de Nittis <ludovico.denittis@collabora.com> on 2019-05-20
Reviewed by Philippe Normand.

There was a regression introduced with the commit https://bugs.webkit.org/show_bug.cgi?id=197131
The WPE Qt port was not updated to C++17 and this leaded to a compilation error.

Source/WebKit:

  • PlatformWPE.cmake:

Tools:

  • TestWebKitAPI/glib/CMakeLists.txt:
7:49 AM Changeset in webkit [245515] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[Flatpak][Qt] Meson: Unknown type feature for gstreamer
https://bugs.webkit.org/show_bug.cgi?id=197408

Patch by Ludovico de Nittis <ludovico.denittis@collabora.com> on 2019-05-20
Reviewed by Philippe Normand.

This is a regression that has been introduced when
GStreamer was updated to version 1.16.0
https://bugs.webkit.org/show_bug.cgi?id=197157

Now GStreamer requires meson >= 0.47.0
Updating the Kde runtime to version 5.12 we fulfill
this requirement.

  • flatpak/org.webkit.WPEQT.yaml:
6:48 AM Changeset in webkit [245514] by Carlos Garcia Campos
  • 9 edits in trunk

[GLIB] Crash when instantiating a js object registered with jsc_context_register_class on window object cleared
https://bugs.webkit.org/show_bug.cgi?id=198037

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

This happens because JSCClass is keeping a pointer to the JSCContext used when the class is registered, and the
context can be destroyed before the class. We can't a reference to the context, because we don't really want to
keep it alive. The life of the JSCClass is not attached to the JSCContext, but to its wrapped global context, so
we can keep a pointer to the JSGlobalContextRef instead and create a new JSCContext wrapping it when
needed. This patch is also making the context property of JSCClass non-readable, which was always the intention,
that's why there isn't a public getter in the API.

  • API/glib/JSCCallbackFunction.cpp:

(JSC::JSCCallbackFunction::construct): Pass the context to jscClassGetOrCreateJSWrapper().

  • API/glib/JSCClass.cpp:

(jscClassGetProperty): Remove the getter for context property.
(jscClassSetProperty): Get the JSGlobalContextRef from the given JSCContext.
(jsc_class_class_init): Make context writable only.
(jscClassCreate): Use the passed in context instead of the member.
(jscClassGetOrCreateJSWrapper): It receives now the context as parameter.
(jscClassCreateContextWithJSWrapper): Ditto.
(jscClassCreateConstructor): Get or create a JSCContext for our JSGlobalContextRef.
(jscClassAddMethod): Ditto.
(jsc_class_add_property): Ditto.

  • API/glib/JSCClassPrivate.h:
  • API/glib/JSCContext.cpp:

(jsc_context_evaluate_in_object): Pass the context to jscClassCreateContextWithJSWrapper().

  • API/glib/JSCValue.cpp:

(jsc_value_new_object): Pass the context to jscClassGetOrCreateJSWrapper().

Tools:

Add a test case to check the crash is fixed.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebExtensions.cpp:

(testWebExtensionWindowObjectCleared):

  • TestWebKitAPI/Tests/WebKitGLib/WebExtensionTest.cpp:

(windowObjectCleared):

1:57 AM HackingWebInspector edited by Nikita Vasilyev
(diff)
1:15 AM Changeset in webkit [245513] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit

[GTK] Use a repeating timer to populate emoji chooser
https://bugs.webkit.org/show_bug.cgi?id=197984

Reviewed by Michael Catanzaro.

It ensures the emoji chooser popover is shown as soon as it's requested.

  • UIProcess/API/gtk/WebKitEmojiChooser.cpp:

(webkitEmojiChooserSetupSectionBox):
(webkitEmojiChooserSetupRecent):
(webkitEmojiChooserSetupEmojiSections):
(webkitEmojiChooserConstructed):

1:10 AM Changeset in webkit [245512] by Carlos Garcia Campos
  • 4 edits in trunk

[GLIB] Repeating timer is not stopped when stop is called from the callback
https://bugs.webkit.org/show_bug.cgi?id=197986

Reviewed by Michael Catanzaro.

Source/WTF:

In case of repeating timers we always update the ready time to fire interval after the user callback is called.

  • wtf/glib/RunLoopGLib.cpp:

(WTF::RunLoop::TimerBase::stop): Reset m_fireInterval and m_isRepeating.

Tools:

Check the timer is no longer active after it has been stopped.

  • TestWebKitAPI/Tests/WTF/RunLoop.cpp:

(TestWebKitAPI::TEST):

Note: See TracTimeline for information about the timeline view.