Timeline
Mar 21, 2020:
- 10:02 PM Changeset in webkit [258817] by
-
- 8 edits1 copy1 move6 adds1 delete in trunk
An animated PNG plays the frames one time more than the image loopCount
https://bugs.webkit.org/show_bug.cgi?id=205640
Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2020-03-21
Reviewed by Darin Adler.
Source/WebCore:
Make the repetitionCount calculation for GIFs different from it for other
image formats.
Tests: fast/images/animated-gif-loop-count.html
fast/images/animated-png-loop-count.html
- platform/graphics/cg/ImageDecoderCG.cpp:
(WebCore::ImageDecoderCG::repetitionCount const):
- platform/graphics/cg/UTIRegistry.cpp:
(WebCore::isGIFImageType):
- platform/graphics/cg/UTIRegistry.h:
LayoutTests:
Refactor the js code to a separate js file. Add two layout tests: one for
animated GIFs and the other for animated PNGs.
- fast/images/animated-gif-loop-count-expected.html: Added.
- fast/images/animated-gif-loop-count.html: Added.
- fast/images/animated-image-loop-count-expected.html: Removed.
- fast/images/animated-image-loop-count.html: Removed.
- fast/images/animated-png-loop-count-expected.html: Added.
- fast/images/animated-png-loop-count.html: Added.
- fast/images/resources/animated-image-loop-count.js: Added.
- fast/images/resources/animated-red-green-blue-repeat-1.png: Added.
- fast/images/resources/animated-red-green-blue-repeat-2.png: Added.
- fast/images/resources/animated-red-green-blue-repeat-infinite.png: Added.
- platform/ios/TestExpectations:
- platform/mac-wk1/TestExpectations:
- platform/win/TestExpectations:
- 9:59 PM Changeset in webkit [258816] by
-
- 3 edits in trunk
Nullptr crash in RenderObject::RenderObjectBitfields::isBox when current renderer is the RenderView
https://bugs.webkit.org/show_bug.cgi?id=209251
<rdar://problem/60103614>
Patch by Jack Lee <Jack Lee> on 2020-03-21
Reviewed by Darin Adler.
Source/WebCore:
In this case, which is a valid scenario, we are looking for sibling of an AccessibilityRenderObject through the parent of its renderer, which happens to be of <RenderView>. Since <RenderView> has no parent, we need to skip calling isInlineWithContinuation with a null parent, by adding null check.
Test: fast/frames/iframe-empty-doc-crash.html
- accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::nextSibling const):
LayoutTests:
In this case, which is a valid scenario, we are looking for sibling of an AccessibilityRenderObject through the parent of its renderer, which happens to be of <RenderView>. Since <RenderView> has no parent, we need to skip calling isInlineWithContinuation with a null parent, by adding null check.
- fast/frames/iframe-empty-doc-crash-expected.txt: Added.
- fast/frames/iframe-empty-doc-crash.html: Added.
- 7:57 PM Changeset in webkit [258815] by
-
- 2 edits in trunk/Source/ThirdParty/ANGLE
Set INSTALLHDRS_SCRIPT_PHASE in ANGLE builds
https://bugs.webkit.org/show_bug.cgi?id=209384
<rdar://problem/59513380>
Reviewed by Dan Bernstein.
Production ANGLE builds are technically non-compliant. During the
installhdrs build action, ANGLE headers are exported but are not
post-processed. This differs from the install build action, where the
exported headers *are* post-processed. The headers need to be treated
identically under both actions. The post-processing is enabled by
setting the INSTALLHDRS_SCRIPT_PHASE build setting to YES. Most other
WebKit projects already set this setting (see, for example,
https://trac.webkit.org/changeset/155787,
https://trac.webkit.org/changeset/110327, and
https://trac.webkit.org/changeset/41417).
- Configurations/ANGLE.xcconfig:
- 6:31 PM Changeset in webkit [258814] by
-
- 2 edits in trunk/Source/WebKit
decodeSharedBuffer() in WebCoreArgumentCoders.cpp should validate
bufferSize
<https://webkit.org/b/209373>
<rdar://problem/60610919>
Reviewed by Darin Adler.
- Shared/WebCoreArgumentCoders.cpp:
(IPC::decodeSharedBuffer):
- Return early if
bufferSizeis too big.
- 12:10 PM Changeset in webkit [258813] by
-
- 2 edits in trunk/LayoutTests
LayoutTest fast/scrolling/scroll-container-horizontally.html frequently times out & fails
https://bugs.webkit.org/show_bug.cgi?id=158237
Unreviewed test gardening.
No longer flaky after r258679.
- platform/mac-wk2/TestExpectations:
- 11:56 AM Changeset in webkit [258812] by
-
- 2 edits in trunk/LayoutTests
[ Mac wk2 ] tiled-drawing/simple-document-with-margin-tiles.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=207518
Unreviewed test gardening.
No longer flaky after r258679.
- platform/mac-wk2/TestExpectations:
- 11:52 AM Changeset in webkit [258811] by
-
- 2 edits in trunk/LayoutTests
[ Mac wk2 ] tiled-drawing/scrolling/fast-scroll-div-latched-mainframe-with-handler.html is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=208471
Unreviewed test gardening.
No longer flaky after r258679.
- platform/mac-wk2/TestExpectations:
- 11:29 AM Changeset in webkit [258810] by
-
- 2 edits in trunk/LayoutTests
[ Mac wk2 ] fast/scrolling/momentum-scroll-with-borders.html is flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=209013
Unreviewed test fixing. This test needs to send the "end" event for the momentum phase
for WheelEventTestMonitor to work correctly.
- fast/scrolling/momentum-scroll-with-borders.html:
- 11:06 AM Changeset in webkit [258809] by
-
- 22 edits in trunk/Source/WebInspectorUI
Web Inspector: REGRESSION(r257380, r257759): focusing the inspected page when docked dims most of the interface
https://bugs.webkit.org/show_bug.cgi?id=209366
Reviewed by Timothy Hatcher.
- UserInterface/Views/ButtonNavigationItem.css:
(body.window-inactive .navigation-bar .item.button > img): Added.
(body.window-inactive .navigation-bar .item.button.disabled > img): Added.
(body:matches(.window-inactive, .window-docked-inactive) .navigation-bar .item.button > img): Deleted.
(body:matches(.window-inactive, .window-docked-inactive) .navigation-bar .item.button.disabled > img): Deleted.
- UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:
(body.window-inactive .timeline-overview-graph.rendering-frame > .frame-marker): Added.
(body:matches(.window-inactive, .window-docked-inactive) .timeline-overview-graph.rendering-frame > .frame-marker): Deleted.
- UserInterface/Views/TabBar.css:
(body:not(.docked).window-inactive .tab-bar): Added.
(body.docked.window-inactive .tab-bar): Added.
(body.window-inactive .tab-bar > .border): Added.
(body.window-inactive .tab-bar > .navigation-bar > .item.divider): Added.
(body:not(.docked).window-inactive .tab-bar > .tabs > .item): Added.
(body:not(.docked).window-inactive .tab-bar > .tabs > .item:not(.disabled).selected): Added.
(body.docked.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected): Added.
(body.window-inactive .tab-bar > .tabs > .item > .icon): Added.
(body.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected > .icon): Added.
(body.window-inactive .tab-bar > .tabs > .item > .title): Added.
(body.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected > .title): Added.
(body:not(.docked).window-inactive .tab-bar > .tabs.dragging-tab > .item:not(.disabled).selected, body:not(.docked).window-inactive .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), body:not(.docked).window-inactive .tab-bar > .tabs.animating.closing-tab > .item:not(.disabled).selected): Added.
(@media (prefers-color-scheme: dark) body.docked.window-inactive .tab-bar > .tabs > .item:not(.disabled).selected): Added.
(@media (prefers-color-scheme: dark) body:not(.docked).window-inactive .tab-bar): Added.
(@media (prefers-color-scheme: dark) body:not(.docked).window-inactive .tab-bar > .tabs > .item): Added.
(@media (prefers-color-scheme: dark) body:not(.docked).window-inactive .tab-bar > .tabs > .item:not(.disabled).selected): Added.
(body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar): Deleted.
(body.docked:matches(.window-inactive, .window-docked-inactive) .tab-bar): Deleted.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .border): Deleted.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .navigation-bar > .item.divider): Deleted.
(body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item): Deleted.
(body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Deleted.
(body.docked:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Deleted.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item > .icon): Deleted.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected > .icon): Deleted.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item > .title): Deleted.
(body:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected > .title): Deleted.
(body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.dragging-tab > .item:not(.disabled).selected, body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.static-layout:not(.animating.inserting-tab):not(.dragging-tab) > .item:nth-last-child(1 of :not(.pinned)), body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs.animating.closing-tab > .item:not(.disabled).selected): Deleted.
(@media (prefers-color-scheme: dark) body.docked:matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Deleted.
(@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar): Deleted.
(@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item): Deleted.
(@media (prefers-color-scheme: dark) body:not(.docked):matches(.window-inactive, .window-docked-inactive) .tab-bar > .tabs > .item:not(.disabled).selected): Deleted.
- UserInterface/Views/TimelineRecordFrame.css:
(body.window-inactive .timeline-record-frame.selected): Added.
(body:matches(.window-inactive, .window-docked-inactive) .timeline-record-frame.selected): Deleted.
- UserInterface/Views/TimelineRuler.css:
(body.window-inactive .timeline-ruler > .header > .divider): Added.
(body:matches(.window-inactive, .window-docked-inactive) .timeline-ruler > .header > .divider): Deleted.
- UserInterface/Views/Variables.css:
(body.window-inactive): Added.
(body.window-inactive *): Added.
(@media (prefers-color-scheme: dark) body.window-inactive): Added.
(@media (prefers-color-scheme: dark) body.window-inactive *): Added.
(body:matches(.window-inactive, .window-docked-inactive)): Deleted.
(body:matches(.window-inactive, .window-docked-inactive) *): Deleted.
(@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive)): Deleted.
(@media (prefers-color-scheme: dark) body:matches(.window-inactive, .window-docked-inactive) *): Deleted.
Remove usage of.window-docked-inactiveas we don't want the UI to change when the focus
switches between the inspected page and the docked Web Inspector area, which happens a lot.
- UserInterface/Views/BreakpointTreeElement.css:
(body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.breakpoint.selected .status > .status-image.resolved): Added.
(.tree-outline:focus .item.breakpoint.selected .status > .status-image.resolved): Deleted.
- UserInterface/Views/CallFrameTreeElement.css:
(body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.call-frame.selected .status > .status-image): Added.
(.tree-outline:focus .item.call-frame.selected .status > .status-image): Deleted.
- UserInterface/Views/CanvasSidebarPanel.css:
(body:not(.window-inactive, .window-docked-inactive) .sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline:focus-within .item.processing.selected .subtitle > progress): Added.
(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline:focus .item.processing.selected .subtitle > progress): Deleted.
- UserInterface/Views/DOMTreeContentView.css:
(body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom-tree:focus-within .tree-outline.dom li:matches(.selected, .hovered) .status-image.breakpoint): Added.
(body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom-tree:focus-within .tree-outline.dom li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Added.
(body:not(.window-inactive, .window-docked-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint): Deleted.
(body:not(.window-inactive, .window-docked-inactive) .content-view.dom-tree .tree-outline.dom:focus li:matches(.selected, .hovered) .status-image.breakpoint.subtree): Deleted.
- UserInterface/Views/DOMTreeOutline.css:
(body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:not(.non-selectable):focus-within li.selected .selection-area): Added.
(body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.inspected-node.selected > span::after): Added.
(body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.selected .pseudo-class-indicator): Added.
(body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.selected): Added.
(body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.selected *): Added.
(body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.parent.selected::before): Added.
(body:not(.window-inactive, .window-docked-inactive) .tree-outline.dom:focus-within li.parent.expanded.selected::before): Added.
(.tree-outline.dom:not(.non-selectable):focus-within li.selected .selection-area): Deleted.
(.tree-outline.dom:focus-within li.inspected-node.selected > span::after): Deleted.
(.tree-outline.dom:focus-within li.selected .pseudo-class-indicator): Deleted.
(.tree-outline.dom:focus-within li.selected): Deleted.
(.tree-outline.dom:focus-within li.selected *): Deleted.
(.tree-outline.dom:focus-within li.parent.selected::before): Deleted.
(.tree-outline.dom:focus-within li.parent.expanded.selected::before): Deleted.
- UserInterface/Views/Main.css:
(:focus .selected .go-to-arrow, .selected:focus .go-to-arrow): Added.
(:focus .selected .go-to-arrow:active, .selected .go:focus-to-arrow:active): Added.
(@media (prefers-color-scheme: dark) :focus .selected .go-to-arrow, .selected:focus .go-to-arrow): Added.
(:focus .selected .go-to-arrow): Deleted.
(:focus .selected .go-to-arrow:active): Deleted.
(@media (prefers-color-scheme: dark) :focus .selected .go-to-arrow): Deleted.
- UserInterface/Views/RecordingActionTreeElement.css:
(body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.recording-action.selected:not(.invalid, .initial-state, .has-context-replacer, .name-unknown) > .icon): Added.
(body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.recording-action.selected > .titles .parameter.swizzled, body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.recording-action.selected::before): Added.
(.tree-outline:focus .item.recording-action.selected:not(.invalid, .initial-state, .has-context-replacer, .name-unknown) > .icon): Deleted.
(body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus .item.recording-action.selected > .titles .parameter.swizzled, body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus .item.recording-action.selected::before): Deleted.
- UserInterface/Views/ResourceTreeElement.css:
(.item.resource.resource-type-websocket:not(.selected) .status .ready-state.open, .tree-outline:not(:focus-within) .item.resource.resource-type-websocket.selected .status .ready-state.open, body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.open): Added.
(.item.resource.resource-type-websocket:not(.selected) .status .ready-state.connecting, .tree-outline:not(:focus-within) .item.resource.resource-type-websocket.selected .status .ready-state.connecting, body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.connecting): Added.
(.item.resource.resource-type-websocket:not(.selected) .status .ready-state.open, .tree-outline:not(:focus) .item.resource.resource-type-websocket.selected .status .ready-state.open, body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.open): Deleted.
(.item.resource.resource-type-websocket:not(.selected) .status .ready-state.connecting, .tree-outline:not(:focus) .item.resource.resource-type-websocket.selected .status .ready-state.connecting, body:matches(.window-inactive, .window-docked-inactive) .item.resource.resource-type-websocket.selected .status .ready-state.connecting): Deleted.
- UserInterface/Views/ScriptDetailsTimelineView.css:
(body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.selected .alternate-subtitle): Added.
(.tree-outline:focus .item.selected .alternate-subtitle): Deleted.
- UserInterface/Views/SourceCodeTreeElement.css:
(.tree-outline .item .status > .toggle-script-blackbox, body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.selected .status > .toggle-script-blackbox.pattern-blackboxed): Added.
(.tree-outline .item .status > .toggle-script-blackbox, .tree-outline:focus .item.selected .status > .toggle-script-blackbox.pattern-blackboxed): Deleted.
- UserInterface/Views/ThreadTreeElement.css:
(body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within > .item.thread.selected .status-button.resume): Added.
(.tree-outline:focus > .item.thread.selected .status-button.resume): Deleted.
- UserInterface/Views/TimelineOverview.css:
(.timeline-overview > .tree-outline.timelines .item.selected + .item): Added.
(body:not(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines:focus-within .item.selected + .item): Added.
(@media (prefers-color-scheme: dark) .timeline-overview > .tree-outline.timelines .item.selected + .item): Added.
(.timeline-overview > .tree-outline.timelines .item.selected + .item, body:matches(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted.
(.timeline-overview > .tree-outline.timelines :focus .item.selected + .item): Deleted.
(@media (prefers-color-scheme: dark) .timeline-overview > .tree-outline.timelines .item.selected + .item, body:matches(.window-inactive, .window-docked-inactive) .timeline-overview > .tree-outline.timelines .item.selected + .item): Deleted.
- UserInterface/Views/TreeElementStatusButton.css:
(body:not(.window-inactive, .window-docked-inactive) .tree-outline:focus-within .item.selected > .status > .status-button): Added.
(:focus .item.selected > .status > .status-button): Deleted.
Fix cases where:focuswas still being checked from theWI.TreeOutlineinstead of the
individualWI.TreeElement. We should be using:focus-within, but only if the window or
docked Web Inspector area is also focused.
- 10:01 AM WebKitGTK/2.28.x edited by
- Propose r258328/r258808 (diff)
- 8:22 AM Changeset in webkit [258808] by
-
- 4 edits in trunk
[GTK] Use ${PYTHON_EXECUTABLE} to run generate-gtkdoc
https://bugs.webkit.org/show_bug.cgi?id=208970
Patch by Michael Catanzaro <Michael Catanzaro> on 2020-03-21
Reviewed by Konstantin Tokarev.
.:
There's no need to rely on shebangs when executing python scripts from CMake. This should
ensure the script always works even if the shebang does not.
- Source/cmake/GtkDoc.cmake:
Tools:
We are allowed to use /usr/bin/env in this script because it's not installed (so not
packaged). Therefore we can make the shebang compatible with FreeBSD in this particularl
case.
- gtkdoc/generate-gtkdoc:
- 7:25 AM Changeset in webkit [258807] by
-
- 4 edits in trunk/Source/WebCore
Make the MediaSample::toJSONString method generic
https://bugs.webkit.org/show_bug.cgi?id=209287
Reviewed by Eric Carlson.
It is generic and thus can be shared to sub-classes.
- platform/MediaSample.h:
(WebCore::MediaSample::toJSONString const):
- platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
- platform/graphics/avfoundation/objc/MediaSampleAVFObjC.mm:
- 7:11 AM Changeset in webkit [258806] by
-
- 4 edits2 adds in trunk
telerik.com: Placeholder text is misaligned in search text box
https://bugs.webkit.org/show_bug.cgi?id=209371
<rdar://problem/45945564>
Reviewed by Antti Koivisto.
Source/WebCore:
Let the placeholder box do its own vertical positioning/sizing.
The placeholder box's height is currently set to the height of the editable renderer (sibling box), so when the ::placeholder has
a large font-size set, the text is oddly positioned and gets cut off (the placeholder box has 'overflow: hidden' UA style).
This patch makes the placeholder box center aligned and sized based on the used size (matches both Chrome and FF).
Test: fast/forms/placeholder-content-center.html
- rendering/RenderTextControlSingleLine.cpp:
(WebCore::RenderTextControlSingleLine::layout):
LayoutTests:
- fast/forms/placeholder-content-center-expected.html: Added.
- fast/forms/placeholder-content-center.html: Added.
Mar 20, 2020:
- 10:54 PM Changeset in webkit [258805] by
-
- 6 edits in trunk/Source/WebCore
REGRESSION (r258679): [ Mac ] fast/scrolling/arrow-key-scroll-in-rtl-document.html is failing and timing out
https://bugs.webkit.org/show_bug.cgi?id=209299
Reviewed by Daniel Bates.
fast/scrolling/arrow-key-scroll-in-rtl-document.html is unusual in that it uses monitorWheelEvents()
but then issues arrow key presses.
WebCore responds to arrow keys via WebEditorClient::handleKeyboardEvent() calling down into
WebPage::scroll() which ends up in FrameView::requestScrollPositionUpdate() and bounces to the
scrolling thread. This isn't tracked by existing 'defer' reasons on WheelEventTestMonitor, so add a
new defer reason that covers the period for adding the requested scroll go the scrolling state tree,
and responding to it in the scrolling thread.
- page/WheelEventTestMonitor.cpp:
(WebCore::operator<<):
- page/WheelEventTestMonitor.h:
- page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
- page/scrolling/ThreadedScrollingTree.cpp:
(WebCore::ThreadedScrollingTree::scrollingTreeNodeRequestsScroll):
- page/scrolling/ThreadedScrollingTree.h:
- 7:42 PM Changeset in webkit [258804] by
-
- 6 edits in trunk
[iPadOS] Yahoo! search results are sometimes zoomed in a little
https://bugs.webkit.org/show_bug.cgi?id=209356
<rdar://problem/60563952>
Reviewed by Tim Horton.
Source/WebKit:
When the web content process uses
WebPage::scalePage()to modify the viewport scale (e.g. after a viewport
configuration change) on iOS, it's possible for this new scale to be replaced by a previous scale when
dispatching the next visible content rect update. Consider the following scenario:
- A remote layer tree transaction is sent to the UI process containing scale
a. WebPage::scalePageis called with a scaleb.- A visible content rect update with scale
ais scheduled, sent to the web process and dispatched. - The page scale reverts to
a.
This bug exercises the above scenario: the Yahoo search results page specifies a responsive viewport
(device-width and scale=1), but proceeds to lay out outside of the bounds of the device width. As such, after
the document finishes parsing, we attempt to shrink the page to fit; however, if this shrinking happens after
a remote layer tree transaction with the old scale but before the next visible content rect update containing
that old scale, we will end up reverting to this old scale instead of the scale after shrinking to fit. This
same bug is present when usingsetViewScale, which was exercised by the flaky test below, since the new scale
after the viewport configuration change may be overridden by an incoming visible content rect update.
To fix this, we add a mechanism to detect when the page scale has been changed by the web process (e.g. after a
viewport change) and remember the last committed layer tree identifier at that moment. Later, if we get a
visible content rect update with a layer tree commit identifier equal to (or older than) the layer tree commit
identifier when we changed the page scale, don't set the page scale factor using this incoming scale; instead,
wait for the next visible content rect update (which will contain the new scale).
Fixes an existing flaky test: fast/viewport/ios/device-width-viewport-after-changing-view-scale.html
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::close):
(WebKit::WebPage::scalePage):
(WebKit::WebPage::platformDidScalePage):
Add a platform hook that is invoked after scaling the page via
scalePage. See below for the iOS version.
(WebKit::WebPage::didCommitLoad):
(WebKit::WebPage::didFinishDocumentLoad):
(WebKit::WebPage::didFinishLoad):
Drive-by fix: remove an unnecessary
UNUSED_PARAM. Also, replace calls to schedule the shrink to fit content
timer with a call toshrinkToFitContentinstead.
- WebProcess/WebPage/WebPage.h:
Add a member variable to remember the last sent layer tree commit ID and page scale, when we last changed the
page scale via the web process. This is set inplatformDidScalePagebelow.
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::dynamicViewportSizeUpdate):
(WebKit::WebPage::shrinkToFitContent):
Refactor this to not return a bool, but instead call
viewportConfigurationChangedat the end if the viewport
actually changed.
(WebKit::WebPage::updateVisibleContentRects):
Ignore the incoming page scale when updating visible content rects if it:
- Is the same as the last page scale we sent via layer tree commit.
- After sending the above scale, we've since adjusted the page scale such that it is no longer the same.
(WebKit::WebPage::platformDidScalePage):
Update
m_lastLayerTreeTransactionIdAndPageScaleBeforeScalingPage.
(WebKit::WebPage::scheduleShrinkToFitContent): Deleted.
(WebKit::WebPage::shrinkToFitContentTimerFired): Deleted.
Remove the zero-delay timer before running the shrink-to-fit heuristic, and just call
shrinkToFitContent
directly. This was a source of flakiness when trying to reproduce the bug, and doesn't seem to serve any
purpose since we shrink-to-fit after dispatching the "DOMContentLoaded" and "load" events anyways.
(WebKit::WebPage::immediatelyShrinkToFitContent): Deleted.
LayoutTests:
Remove failing expectations for fast/viewport/ios/device-width-viewport-after-changing-view-scale.html.
- platform/ios-wk2/TestExpectations:
- 6:10 PM Changeset in webkit [258803] by
-
- 12 edits in trunk
[Cocoa] Deny access to database mapping service
https://bugs.webkit.org/show_bug.cgi?id=209339
Source/WebKit:
<rdar://problem/56966010>
Reviewed by Brent Fulgham.
In order for the WebContent process to not have permantent access to the database mapping service,
this patch creates an extension for the service in the UI process, sends it to the WebContent
process, where it is consumed. Then, an API call is made which will map the database, and next the
WebContent process will revoke the extension. The WebContent process has then mapped the database,
and access to the database mapping service is no longer needed.
Tested by: fast/sandbox/ios/sandbox-mach-lookup.html
- Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
- Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
- Shared/WebProcessCreationParameters.h:
- UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
- WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):
- WebProcess/com.apple.WebProcess.sb.in:
Source/WTF:
<rdar://problem/56966010>
Reviewed by Brent Fulgham.
Disable the use of UTTypeRecord swizzling, since this is not needed with the new approach
of denying the database mapping service in this patch.
- wtf/PlatformUse.h:
LayoutTests:
Reviewed by Brent Fulgham.
- fast/sandbox/ios/sandbox-mach-lookup-expected.txt:
- fast/sandbox/ios/sandbox-mach-lookup.html:
- 5:52 PM Changeset in webkit [258802] by
-
- 2 edits in trunk/Source/WebKit
[iOS] Add telemetry for message filtering
https://bugs.webkit.org/show_bug.cgi?id=209003
<rdar://problem/60376722>
Reviewed by Brent Fulgham.
- Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
- 5:38 PM Changeset in webkit [258801] by
-
- 7 edits in trunk
hasObservableSideEffectsForRegExpSplit doesn't check for @@match override
https://bugs.webkit.org/show_bug.cgi?id=209363
Reviewed by Michael Saboff.
JSTests:
- test262/expectations.yaml:
Mark two test cases as passing.
Source/JavaScriptCore:
Our RegExp.prototype[@@split] implementation has a fast path for unadultered RegExp objects,
but we're using that fast path even when @@match has been overridden.
This is illegitimate because the RegExp species constructor calls IsRegExp, which hits the @@match getter.
- builtins/BuiltinNames.h:
- builtins/RegExpPrototype.js:
(globalPrivate.hasObservableSideEffectsForRegExpSplit):
- bytecode/LinkTimeConstant.h:
- runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
- 5:27 PM Changeset in webkit [258800] by
-
- 2 edits in trunk/Tools
run-webkit-tests: Report MacCatalyst as a unique platform
https://bugs.webkit.org/show_bug.cgi?id=209361
Rubber-stamped by Aakash Jain.
- Scripts/webkitpy/port/mac.py:
(MacCatalystPort):
(MacCatalystPort.configuration_for_upload): Treat MacCatalyst as a separate platform from Mac.
- 4:52 PM Changeset in webkit [258799] by
-
- 5 edits2 adds in trunk
Content-Type & Nosniff Ignored on XML External Entity Resources
<https://webkit.org/b/191171>
<rdar://problem/45763222>
Reviewed by Darin Adler.
Source/WebCore:
Test: http/tests/security/contentTypeOptions/nosniff-xml-external-entity.xhtml
- platform/MIMETypeRegistry.cpp:
(WebCore::MIMETypeRegistry::isXMLEntityMIMEType): Add.
- platform/MIMETypeRegistry.h:
(WebCore::MIMETypeRegistry::isXMLEntityMIMEType): Add.
- Checks for XML external entity MIME types.
- xml/parser/XMLDocumentParserLibxml2.cpp:
(WebCore::externalEntityMimeTypeAllowedByNosniff): Add.
- Checks whether the MIME type is valid based on the presence of the "X-Content-Type-Options: nosniff" header.
(WebCore::openFunc):
- Drop the contents of the resource that was returned and print an error message to the Web Inspector console if externalEntityMimeTypeAllowedByNosniff() says the MIME type is not allowed.
LayoutTests:
- http/tests/security/contentTypeOptions/nosniff-xml-external-entity-expected.txt: Add.
- http/tests/security/contentTypeOptions/nosniff-xml-external-entity.xhtml: Add.
- 4:24 PM Changeset in webkit [258798] by
-
- 5 edits in trunk
CORS-disabling SPI introduced in r253978 should make responses non-opaque
https://bugs.webkit.org/show_bug.cgi?id=209351
<rdar://problem/60024850>
Reviewed by Chris Dumez.
Source/WebCore:
Covered by making the API test actually check that response content is readable.
- loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::responseReceived):
Tools:
- TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:
- 3:56 PM Changeset in webkit [258797] by
-
- 3 edits in trunk/LayoutTests
REGRESSION (r258707): storage/indexeddb/cursor-leak.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=209318
<rdar://problem/60657081>
Unreviewed test gardening after r258768.
- platform/ios-wk2/TestExpectations:
- platform/mac/TestExpectations:
- 3:45 PM Changeset in webkit [258796] by
-
- 8 edits in trunk/Source/WebKit
Have insertDictatedTextAsync() take an InsertTextOptions
https://bugs.webkit.org/show_bug.cgi?id=209308
<rdar://problem/60652838>
Reviewed by Darin Adler.
This will provide future extensibility, which I plan to make use of in a subsequent patch,
in addition to making the interface for insertDictatedTextAsync() more like insertTextAsync().
- UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::insertDictatedTextAsync): Pass the options through. The caller is now
responsible for setting the registerUndoGroup insertion option.
- UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::insertText): Stack-allocate a InsertTextOptions setting its registerUndoGroup
field and pass this object through.
- UIProcess/WebPageProxy.h:
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView insertText:alternatives:style:]): Pass the default constructed InsertTextOptions,
which defaults registerUndoGroup to false to keep the current behavior.
- WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
(WebKit::WebPage::insertDictatedTextAsync): Write in terms of InsertTextOptions.registerUndoGroup.
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- 3:36 PM Changeset in webkit [258795] by
-
- 4 edits in trunk/Source
Ensure media cache directory is created before passing to AVURLAsset.
https://bugs.webkit.org/show_bug.cgi?id=209341
Reviewed by Eric Carlson.
Source/WebCore:
Sandbox changes require the media cache directory to be created before passing to
AVFoundation, to ensure that a sandbox extension is allowed to be created for that
directory.
When the mediaCacheDirectory is empty or null, no longer specify a temporary directory. This
allows clients to disable caching by specifying an empty string for the cache directory.
Since now assetCacheForPath() can return nil, update all the call sites to handle that
possibility. Add a new method, ensureAssetCacheExistsAtPath() which tries to create a
directory at the specified path, and returns nil if that is not possible. This ensures the
cache path exists before adding the AVAssetCache to the AVURLAsset options dictionary.
- platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::assetCacheForPath):
(WebCore::ensureAssetCacheExistsForPath):
(WebCore::MediaPlayerPrivateAVFoundationObjC::originsInMediaCache):
(WebCore::MediaPlayerPrivateAVFoundationObjC::clearMediaCache):
(WebCore::MediaPlayerPrivateAVFoundationObjC::clearMediaCacheForOrigins):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):
Source/WebKitLegacy/mac:
MediaPlayerPrivateAVFoundaionObjC will no longer create an asset cache in a temporary
directory by default; ensure that it's media cache directory is set during initialization.
- WebView/WebView.mm:
(-[WebView _commonInitializationWithFrameName:groupName:]):
- 3:31 PM Changeset in webkit [258794] by
-
- 2 edits in trunk/LayoutTests
[ iOS wk2 ] animations/animation-direction-reverse.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=209362
Unreviewed test gardening.
- platform/ios-wk2/TestExpectations:
- 3:27 PM Changeset in webkit [258793] by
-
- 2 edits in trunk/LayoutTests
Update imported/w3c/web-platform-tests/css/css-text/line-break/line-break-{strict,normal}-015.xht
https://bugs.webkit.org/show_bug.cgi?id=209250
Fixing test expectations.
Unreviewed test gardening.
- platform/mac/TestExpectations:
- 2:55 PM Changeset in webkit [258792] by
-
- 6 edits in trunk/Source/WebKit
Replace "deferred element focus" functionality with alternative solution
https://bugs.webkit.org/show_bug.cgi?id=201608
Reviewed by Wenson Hsieh.
This is a partial revert of r190278. Have the web process perform a layout, if needed, when
computing focus element information and send an editor state update immediately. If layout is
not needed then explicitly schedule a full editor state update.
Currently, fetching focus element information neither sends an editor state update nor
schedules one. As a result, when the web process tells the UI process to focus an element the
UI process may need to defer doing so if the last received update did not include details
that require up-to-date layout (e.g. the bounding rect of the focused element, which is used
to scroll and zoom to center the focused element). The UI process then schedules an async message
to the web process to fetch the full editor state, which will arrive in a layer tree commit message
from the web process. (Note that the UI process schedules this request to ensure the web process
knows that it is waiting for a layer tree commit. The web process can use this info to expedite
a layer tree commit, if needed). This deferral mechanism complicates the element focusing and
defocusing logic in the UI process and prevents fixing <https://bugs.webkit.org/show_bug.cgi?id=199960>.
Instead remove this deferral concept and have the web process ensure that a full editor state
update is sent or will be sent when computing the focus element information.
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::resetStateAfterProcessExited):
- UIProcess/WebPageProxy.h:
- UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::didCommitLayerTree):
(WebKit::WebPageProxy::elementDidFocus):
(WebKit::WebPageProxy::elementDidBlur):
Remove bookkeeping code to track a deferred focus event or to perform the deferred event
on layer tree commit.
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::elementDidFocus):
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getFocusedElementInformation): Save off whether a layout is needed then
tell the page to layout if needed. If a layout was needed then send an editor state update
immediately (it's an async message): this update will be a "full editor state" update that
includes up-to-date layout details. Otherwise, schedule a full editor state update. While I
am here, I updated the code to take out a ref on the focused frame's document before performing
a layout because layout can cause arbitrary JavaScript execution that could detach the document
from its frame view as part of destroying the document. Document destruction is detected by
checking whether the document has been detached from its frame view. If this happens then
bail out as there is no need to get focus element info.
- 2:54 PM Changeset in webkit [258791] by
-
- 1 edit1 add in trunk/LayoutTests
Intersection Observer intersections are wrong with zooming
https://bugs.webkit.org/show_bug.cgi?id=209264
Unreviewed test gardening.
Add an expected.txt file that was accidentally omitted in r258787.
- intersection-observer/root-margin-with-zoom-expected.txt: Added.
- 2:38 PM Changeset in webkit [258790] by
-
- 6 edits in trunk/Tools
commit-queue should skip building and testing if patch already passed tests on mac-wk2 queue
https://bugs.webkit.org/show_bug.cgi?id=208938
Reviewed by Jonathan Bedard.
- BuildSlaveSupport/ews-build/steps.py:
(RunWebKitTests.doStepIf): Skip testing if patch already passed mac-wk2 tests.
(CheckPatchStatusOnEWSQueues): Build-step to check patch status on other queues.
(CheckPatchStatusOnEWSQueues.get_patch_status):
(CheckPatchStatusOnEWSQueues.start):
- BuildSlaveSupport/ews-build/steps_unittest.py:
(test_skip_for_mac_wk2_passed_patch_on_commit_queue): Added unit-tests.
- BuildSlaveSupport/ews-build/factories.py: Added build-step to check the patch status on other queues.
- BuildSlaveSupport/ews-build/factories_unittest.py: Updated unit-test.
- BuildSlaveSupport/ews-app/ews/views/statusbubble.py: Added the new step status to STEPS_TO_HIDE.
- 2:21 PM Changeset in webkit [258789] by
-
- 8 edits in trunk
Fix name of "X-Content-Type:" HTTP header in console logging
<https://webkit.org/b/209348>
Reviewed by Devin Rousso.
Source/WebCore:
- css/StyleSheetContents.cpp:
(WebCore::StyleSheetContents::parseAuthorStyleSheet):
- dom/LoadableClassicScript.cpp:
(WebCore::LoadableClassicScript::notifyFinished):
- workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::validateWorkerResponse):
- Change "X-Content-Type:" to "X-Content-Type-Options:" to fix the name of the header.
LayoutTests:
- http/tests/security/contentTypeOptions/nosniff-dynamic-script-blocked-expected.txt:
- http/tests/security/contentTypeOptions/nosniff-script-blocked-expected.txt:
- http/tests/security/contentTypeOptions/nosniff-script-without-content-type-blocked-expected.txt:
- Update test results for the correct name of the header: "X-Content-Type-Options:".
- 2:15 PM Changeset in webkit [258788] by
-
- 2 edits in branches/safari-609.2.1.2-branch/Source/WebCore
Cherry-pick r258267. rdar://problem/60703602
Consolidate detachment of document timeline into Document::commonTeardown.
https://bugs.webkit.org/show_bug.cgi?id=208786
<rdar://problem/59936716>
Patch by Jack Lee <Jack Lee> on 2020-03-11
Reviewed by Ryosuke Niwa.
Move detachment of DocumentTimeline to Document::commonTeardown().
No new tests. Covered by existing document tests.
- dom/Document.cpp: (WebCore::Document::removedLastRef): (WebCore::Document::commonTeardown): (WebCore::Document::prepareForDestruction):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@258267 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 1:58 PM Changeset in webkit [258787] by
-
- 3 edits1 add in trunk
Intersection Observer intersections are wrong with zooming
https://bugs.webkit.org/show_bug.cgi?id=209264
Reviewed by Simon Fraser.
Source/WebCore:
An IntersectionObserver's rootMargin is expressed in CSS pixels,
but we weren't accounting for page zoom. Fix this by multiplying
the root margin by the zoom factor.
Test: intersection-observer/root-margin-with-zoom.html
- dom/Document.cpp:
(WebCore::expandRootBoundsWithRootMargin):
(WebCore::computeIntersectionState):
LayoutTests:
- intersection-observer/root-margin-with-zoom.html: Added.
- 1:44 PM Changeset in webkit [258786] by
-
- 2 edits in trunk/Tools
[ews] Better organize patch status api data
https://bugs.webkit.org/show_bug.cgi?id=209342
Reviewed by Jonathan Bedard.
- BuildSlaveSupport/ews-app/ews/views/status.py:
(Status._build_status):
(Status._build_statuses_for_patch): Updated to return dictionary instead of list.
(Status.get): Remove safe=false now that we are returning a dictionary.
- 1:40 PM Changeset in webkit [258785] by
-
- 2 edits in trunk/LayoutTests
REGRESSION: (r258747) [ Mac wk1 Release ] media/video-background-tab-playback.html is failing.
https://bugs.webkit.org/show_bug.cgi?id=209353
Unreviewed test gardening.
- platform/mac-wk1/TestExpectations:
- 1:34 PM Changeset in webkit [258784] by
-
- 2 edits in trunk/Source/WTF
Add correct annotations to block isa pointer
https://bugs.webkit.org/show_bug.cgi?id=209355
<rdar://problem/60431606>
Patch by Oliver Hunt <oliver@nerget,com> on 2020-03-20
Reviewed by Keith Miller.
Trivial definition update.
- wtf/BlockPtr.h:
(WTF::BlockPtr<R):
- 1:19 PM Changeset in webkit [258783] by
-
- 4 edits in trunk
RegExp.prototype[@@replace] doesn't coerce result index to integer
https://bugs.webkit.org/show_bug.cgi?id=209323
Reviewed by Yusuke Suzuki.
JSTests:
- test262/expectations.yaml:
Mark six test cases as passing.
Source/JavaScriptCore:
From https://tc39.es/ecma262/#sec-regexp.prototype-@@replace:
21.2.5.10 RegExp.prototype [ @@replace ] ( string, replaceValue )
...
- For each result in results, do
...
- Let position be ? ToInteger(? Get(result, "index")).
- Set position to max(min(position, lengthS), 0).
result.index may be undefined, so it doesn't suffice to coerce it with comparison operators.
- builtins/RegExpPrototype.js:
- 1:16 PM Changeset in webkit [258782] by
-
- 2 edits in trunk/Source/WebKitLegacy/mac
Improve the previous build fix.
- WebCoreSupport/WebFrameLoaderClient.mm:
Darin points out that we have USE(WEB_THREAD), so might as well use it!
- 1:04 PM Changeset in webkit [258781] by
-
- 9 edits in trunk/Source
[GPUP] Add PlatformLayerContainer to hold pointer to PlatformLayer
https://bugs.webkit.org/show_bug.cgi?id=208963
Reviewed by Eric Carlson.
Source/WebCore:
Add a PlatformLayerContainer definition for use within the GPU Process code.
Migrate to using over typedef in the file.
- platform/graphics/PlatformLayer.h:
Source/WebKit:
Use PlatformLayerContainer since RetainPtr is a Cocoa only construct. This
allows non-Cocoa ports to get further with compiling out the GPU Process.
- WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
- WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
- WebProcess/GPU/media/VideoLayerRemote.h:
- WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:
(WebKit::MediaPlayerPrivateRemote::createVideoFullscreenLayer):
- WebProcess/GPU/media/cocoa/VideoLayerRemoteCocoa.mm:
(WebKit::createVideoLayerRemote):
- WebProcess/GPU/webrtc/SampleBufferDisplayLayer.h:
- 12:56 PM Changeset in webkit [258780] by
-
- 3 edits in trunk/Source/WebCore
Isolated tree updates must happen after AXObject has finished handling notifications.
https://bugs.webkit.org/show_bug.cgi?id=209354
Reviewed by Chris Fleizach.
Isolated tree updates were happening in AXObjectCache::postNotification,
but that is too early because the AXObject tree is updated during
notificationPostTimerFired. Thus, moved the updates to after all
AXObject tree updates have been done.
In addition, fixed the check for replacement of the IsolatedObject in
AXIsolatedTree::applyPendingChanges, which now happens only if the old
and new objects have the same platform wrapper.
- accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::notificationPostTimerFired):
(WebCore::AXObjectCache::postNotification):
- accessibility/isolatedtree/AXIsolatedTree.cpp:
(WebCore::AXIsolatedTree::applyPendingChanges):
- 12:35 PM Changeset in webkit [258779] by
-
- 2 edits in trunk/LayoutTests
[ iOS wk2 ] http/tests/resourceLoadStatistics/third-party-cookie-blocking-on-sites-without-user-interaction-database.html is flaky timing out.
https://bugs.webkit.org/show_bug.cgi?id=209357
Unreviewed test gardening.
- platform/ios-wk2/TestExpectations:
- 12:22 PM Changeset in webkit [258778] by
-
- 4 edits in trunk/Source/WebInspectorUI
Web Inspector: REGRESSION(r257835): close and undock buttons are shown in remote inspector
https://bugs.webkit.org/show_bug.cgi?id=209346
Reviewed by Timothy Hatcher.
In the case of remote inspection, the frontend is told that docking is not available before
it is even shown (viaInspectorFrontendAPI.setDockingUnavailable). Additionally, the
backend (WebKit::RemoteWebInspectorUI) never tells the frontend what dock side it actually
is (viaInspectorFrontendAPI.setDockSide), as there would be no point, given that docking
is unavailable, meaning that the frontend must be undocked.
Before r257835, the docking state held by
WI._dockConfigurationandWI.docked, neither
of which would be set as described above. As a result, inWI._updateDockNavigationItems
WI.dockedwould be undefined, which is falsy, thereby causing all docking navigation items
to be hidden. After r257835, these were merged into oneWI.dockConfiguration, which is
compared againstWI.DockConfiguration.Undockedinstead of just being falsy checked,
meaning it would result intruewhich would not hide all of the docking navigation items.
Change the logic of
WI.updateDockingAvailabilitysuch that if the frontend is told that
docking is unavailable, mark theWI.dockConfigurationasWI.DockConfiguration.Undocked.
This way, the frontend will always have a valid value forWI.dockConfiguration.
Additionally, further leverage
InspectorFrontendHost.supportsDockSideto only create the
docking navigation items that are actually supported by the host.
- UserInterface/Base/Main.js:
(WI.contentLoaded):
(WI.updateDockingAvailability):
(WI.resizeDockedFrameMouseDown):
(WI.dockedConfigurationSupportsSplitContentBrowser):
(WI._updateDockNavigationItems):
(WI._updateTabBarDividers):
- UserInterface/Views/TabBar.js:
(WI.TabBar.get horizontalPadding):
(WI.TabBar.prototype.resetCachedWidths): Added.
When switching dock configurations, we need to reset the cached width of each tab bar item,
as otherwise, a large width cached when undocked can incorrectly be used when docked.
- UserInterface/Views/TabBarItem.js:
(WI.TabBarItem.get horizontalMargin):
Replace negative checks ofWI.dockConfigurationwith positive ones that can't be fooled by
a falsy value.
- 11:59 AM Changeset in webkit [258777] by
-
- 2 edits in trunk/Source/WebKitLegacy/mac
Fix the build.
- WebCoreSupport/WebFrameLoaderClient.mm:
- 11:50 AM Changeset in webkit [258776] by
-
- 5 edits in trunk/Source/WebCore
Fix for retrieving focus in isolated tree mode.
https://bugs.webkit.org/show_bug.cgi?id=209336
Reviewed by Chris Fleizach.
Focused object requests can come on the secondary thread before the
isolated tree has been generated. Thus, AXObjectCache::isolatedTreeFocusedObject
needs to generate the isolated tree if it doesn't exist, similar to
isolatedTreeRootObject.
- accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::isolatedTreeFocusedObject):
(WebCore::AXObjectCache::focusedUIElementForPage):
(WebCore::AXObjectCache::getOrCreateIsolatedTree const):
(WebCore::AXObjectCache::isolatedTreeRootObject):
- accessibility/AXObjectCache.h:
- accessibility/isolatedtree/AXIsolatedObject.cpp:
(WebCore::AXIsolatedObject::focusedUIElement const):
- accessibility/isolatedtree/AXIsolatedTree.h:
m_pendingFocusedNodeID wasn't being initialized, which was causing
random crashes when accessing the HashMap of isolated objects for a
spurious AXID.
- 11:40 AM Changeset in webkit [258775] by
-
- 2 edits in trunk/LayoutTests
[ iOS ] http/tests/security/stylesheet-href-redirect.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=209352
Unreviewed test gardening.
- platform/ios-wk2/TestExpectations:
- 11:39 AM Changeset in webkit [258774] by
-
- 5 edits in trunk
Fix JSCOnly build without unified sources
https://bugs.webkit.org/show_bug.cgi?id=209343
Patch by Justin Michaud <justin@justinmichaud.com> on 2020-03-20
Reviewed by Keith Miller.
.:
- .gitignore:
Source/JavaScriptCore:
I managed to get clangd to work for code completion using the following command:
./Tools/Scripts/build-webkit --jsc-only --cmakeargs="-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DENABLE_UNIFIED_BUILDS=OFF" && compdb -p WebKitBuild/Release/ list > compile_commands.json
This patch fixes the build for non-unified sources, and adds some extra clangd files to .gitignore.
- API/MarkedJSValueRefArray.h:
- jit/JITPropertyAccess.cpp:
- 11:37 AM Changeset in webkit [258773] by
-
- 2 edits in trunk/LayoutTests
[ iOS wk2 ] css2.1/20110323/replaced-intrinsic-ratio-001.htm is flaky failing.
https://bugs.webkit.org/show_bug.cgi?id=209350
Unreviewed test gardening.
- platform/ios-wk2/TestExpectations:
- 11:31 AM Changeset in webkit [258772] by
-
- 23 edits in trunk
Upstream a variety of Cocoa-platform HAVE and ENABLE macros
https://bugs.webkit.org/show_bug.cgi?id=209307
Reviewed by Andy Estes.
Source/JavaScriptCore:
- Configurations/FeatureDefines.xcconfig:
Source/WebCore:
- Configurations/FeatureDefines.xcconfig:
Source/WebCore/PAL:
- Configurations/FeatureDefines.xcconfig:
- pal/spi/cocoa/AVFoundationSPI.h:
- pal/spi/cocoa/RevealSPI.h:
- pal/spi/ios/UIKitSPI.h:
Source/WebKit:
- Configurations/FeatureDefines.xcconfig:
- Platform/spi/ios/PDFKitSPI.h:
- UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
(WebKit::createRemoteView):
- UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm:
- UIProcess/ios/WKPDFView.mm:
(-[WKPDFView web_initWithFrame:webView:mimeType:]):
Source/WebKitLegacy/mac:
- Configurations/FeatureDefines.xcconfig:
Source/WTF:
- wtf/PlatformEnableCocoa.h:
- wtf/PlatformHave.h:
Tools:
- TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
- 11:16 AM Changeset in webkit [258771] by
-
- 2 edits in trunk/LayoutTests
[ iOS ] REGRESSION: http/tests/cache/disk-cache/disk-cache-disable.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=209349.
Unreviewed test gardening.
- platform/ios-wk2/TestExpectations:
- 10:50 AM Changeset in webkit [258770] by
-
- 2 edits in trunk/Source/WebKit
Use same syntax for ComputePagesForPrintingAndDrawToPDF message as other messages
https://bugs.webkit.org/show_bug.cgi?id=209310
<rdar://problem/60648013>
Patch by Alex Christensen <achristensen@webkit.org> on 2020-03-20
Reviewed by Sam Weinig.
This makes it easier for scripts to find which messages are unused.
- UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::computePagesForPrintingAndDrawToPDF):
- 10:40 AM Changeset in webkit [258769] by
-
- 15 edits in trunk
Add routines to check about:blank and about:srcdoc URLs
https://bugs.webkit.org/show_bug.cgi?id=209174
Reviewed by Alex Christensen.
LayoutTests/imported/w3c:
- web-platform-tests/html/dom/usvstring-reflection.https-expected.txt:
Source/WebCore:
- Modules/fetch/FetchRequest.cpp:
(WebCore::computeReferrer):
- dom/Document.cpp:
(WebCore::isURLPotentiallyTrustworthy):
- html/HTMLFrameElementBase.cpp:
(WebCore::HTMLFrameElementBase::location const):
- loader/FrameLoader.cpp:
(WebCore::FrameLoader::shouldTreatURLAsSrcdocDocument const):
- page/SecurityPolicy.cpp:
(WebCore::SecurityPolicy::shouldInheritSecurityOriginFromOwner):
Source/WebKit:
- WebProcess/WebCoreSupport/WebResourceLoadObserver.cpp:
(WebKit::WebResourceLoadObserver::requestStorageAccessUnderOpener):
Source/WTF:
- wtf/URL.cpp:
(WTF::aboutSrcDocURL):
(WTF::URL::isAboutBlank const):
(WTF::URL::isAboutSrcDoc const):
- wtf/URL.h:
LayoutTests:
- platform/mac-wk1/imported/w3c/web-platform-tests/html/dom/usvstring-reflection.https-expected.txt:
- 10:26 AM Changeset in webkit [258768] by
-
- 4 edits in trunk/LayoutTests
REGRESSION (r258707): storage/indexeddb/cursor-leak.html is flaky timing out
https://bugs.webkit.org/show_bug.cgi?id=209318
<rdar://problem/60657081>
Reviewed by Ryosuke Niwa.
Open fewer cursors to make the test faster.
- storage/indexeddb/cursor-leak-expected.txt:
- storage/indexeddb/cursor-leak-private-expected.txt:
- storage/indexeddb/resources/cursor-leak.js:
(onOpen.tx.oncomplete):
- 10:02 AM Changeset in webkit [258767] by
-
- 13 edits in trunk/Source
[iOS] Articles on NYTimes.com get truncated when switching between MobileSafari and another app
https://bugs.webkit.org/show_bug.cgi?id=209321
<rdar://problem/59763843>
Reviewed by Tim Horton.
Articles on NYTimes.com get truncated when switching between MobileSafari and another app
Source/WebCore:
(multitasking). The reason is that when you home out of MobileSafari, snapshots of the
web view are taken at various sizes and we were firing 5 resizes events at the page as a
result. Those resize events were confusing the logic on NYTimes.com and causing it to
truncate the article.
To address the issue, we stop firing resize events at the page if the resize is happening
during the snapshotting sequence.
- page/FrameView.cpp:
(WebCore::FrameView::sendResizeEventIfNeeded):
- page/Page.h:
(WebCore::Page::shouldFireResizeEvents const):
(WebCore::Page::setShouldFireResizeEvents):
Source/WebKit:
(multitasking). The reason is that when you home out of MobileSafari, snapshots of the
web view are taken at various sizes and we were firing 5 resizes events at the page as a
result. Those resize events were confusing the logic on NYTimes.com and causing it to
truncate the article.
To address the issue, we stop firing resize events at the page if the resize is happening
during the snapshotting sequence.
- Platform/spi/ios/UIKitSPI.h:
- UIProcess/ApplicationStateTracker.h:
- UIProcess/ApplicationStateTracker.mm:
(WebKit::ApplicationStateTracker::ApplicationStateTracker):
(WebKit::ApplicationStateTracker::~ApplicationStateTracker):
(WebKit::ApplicationStateTracker::willBeginSnapshotSequence):
(WebKit::ApplicationStateTracker::didCompleteSnapshotSequence):
- UIProcess/WebPageProxy.cpp:
- UIProcess/WebPageProxy.h:
- UIProcess/ios/WKApplicationStateTrackingView.mm:
(-[WKApplicationStateTrackingView didMoveToWindow]):
(-[WKApplicationStateTrackingView _willBeginSnapshotSequence]):
(-[WKApplicationStateTrackingView _didCompleteSnapshotSequence]):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setShouldFireResizeEvents):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- 9:31 AM Changeset in webkit [258766] by
-
- 2 edits in trunk/Source/WebCore/PAL
Unreviewed, reverting r258762.
This commit broke the Catalina build
Reverted changeset:
"Fix the build"
https://trac.webkit.org/changeset/258762
- 9:30 AM Changeset in webkit [258765] by
-
- 23 edits in trunk
Unreviewed, reverting r258748.
This commit broke the Catalina build
Reverted changeset:
"Upstream a variety of Cocoa-platform HAVE and ENABLE macros"
https://bugs.webkit.org/show_bug.cgi?id=209307
https://trac.webkit.org/changeset/258748
- 8:56 AM Changeset in webkit [258764] by
-
- 2 edits in trunk/LayoutTests
[GTK] Layout Test media/track/track-legacyapi-with-automatic-mode.html is failing
https://bugs.webkit.org/show_bug.cgi?id=118459
Unreviewed gardening.
The test passes now. Removed media/track/track-legacyapi-with-automatic-mode.html from TextExpectations.
- platform/gtk/TestExpectations:
- 8:51 AM Changeset in webkit [258763] by
-
- 2 edits in trunk/LayoutTests
[ Mac WK1 ] REGRESSION (r240537) Layout Test media/video-background-tab-playback.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=196502
<rdar://problem/49532580>
Unreviewed, revert changes to iOS TestExpectations made in r258747.
- platform/ios/TestExpectations:
- 8:01 AM Changeset in webkit [258762] by
-
- 2 edits in trunk/Source/WebCore/PAL
Fix the build
- pal/spi/cocoa/RevealSPI.h:
- 7:59 AM Changeset in webkit [258761] by
-
- 3 edits in trunk/Source/WebCore
[LFC][IFC] Avoid infinite loop when stuck on partial content
https://bugs.webkit.org/show_bug.cgi?id=209312
<rdar://problem/59954605>
Reviewed by Simon Fraser.
Speculative fix to address infinite loop/running out of inline run vector capacity at InlineFormattingContext::setDisplayBoxesForLine.
(Checking if we managed to progress on the content while having partial runs.)
- layout/inlineformatting/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::lineLayout):
- layout/inlineformatting/LineLayoutContext.cpp:
(WebCore::Layout::LineLayoutContext::nextContentForLine):
(WebCore::Layout::LineLayoutContext::handleFloatsAndInlineContent):
- 7:31 AM Changeset in webkit [258760] by
-
- 3 edits in trunk/Tools
[ews] commit-queue should comment on bug if patch fails to apply
https://bugs.webkit.org/show_bug.cgi?id=209334
Reviewed by Jonathan Bedard.
- BuildSlaveSupport/ews-build/steps.py:
(ApplyPatch):
(ApplyPatch.evaluateCommand): Overridden to check build status and queue name and comment on bug accordingly.
- BuildSlaveSupport/ews-build/steps_unittest.py: Added unit-tests.
(TestApplyPatch):
(TestApplyPatch.setUp):
(TestApplyPatch.setUp.mock_start):
(TestApplyPatch.tearDown):
(TestApplyPatch.test_success):
(TestApplyPatch.test_failure):
(TestApplyPatch.test_failure_on_commit_queue):
- 4:48 AM Changeset in webkit [258759] by
-
- 2 edits in trunk/Source/WebCore
[GStreamer] White-list vp09 in the codec registry
https://bugs.webkit.org/show_bug.cgi?id=209288
Reviewed by Xabier Rodriguez-Calvar.
- platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:
(WebCore::GStreamerRegistryScanner::initialize):
- 3:48 AM Changeset in webkit [258758] by
-
- 3 edits in trunk/LayoutTests
[GTK] Gardening, update TestExpectations and baselines
https://bugs.webkit.org/show_bug.cgi?id=209331
Unreviewed gardening.
- platform/gtk/TestExpectations:
- platform/gtk/imported/w3c/web-platform-tests/svg/painting/reftests/paint-order-001-expected.txt:
Update baseline after r258492.
- 3:29 AM Changeset in webkit [258757] by
-
- 2 edits in trunk/Tools
[EWS] Limit number of builds to display in status-bubble hover over message in case of lot of retried builds
https://bugs.webkit.org/show_bug.cgi?id=209122
Reviewed by Jonathan Bedard.
- BuildSlaveSupport/ews-app/ews/views/statusbubble.py:
(StatusBubble._build_bubble):
- 2:41 AM WebKitGTK/2.28.x edited by
- (diff)
- 2:27 AM Changeset in webkit [258756] by
-
- 3 edits2 adds in trunk
Nullptr crash in RenderObject::RenderObjectBitfields::isBox when current renderer is the RenderView
https://bugs.webkit.org/show_bug.cgi?id=209251
<rdar://problem/60103614>
Patch by Jack Lee <Jack Lee> on 2020-03-20
Reviewed by Antti Koivisto.
Source/WebCore:
It’s perfectly fine to call AccessibilityRenderObject::nextSibling on the RenderView (empty document) and since the RenderView has no sibling, let’s just early return with nullptr.
Test: fast/frames/iframe-empty-doc-crash.html
- accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::nextSibling const):
LayoutTests:
It’s perfectly fine to call AccessibilityRenderObject::nextSibling on the RenderView (empty document) and since the RenderView has no sibling, let’s just early return with nullptr.
- fast/frames/iframe-empty-doc-crash-expected.txt: Added.
- fast/frames/iframe-empty-doc-crash.html: Added.
- 2:15 AM Changeset in webkit [258755] by
-
- 2 edits in trunk/Source/WebCore
Fix build with gstreamer 1.12
https://bugs.webkit.org/show_bug.cgi?id=209296
Patch by Mike Gorse <mgorse@suse.com> on 2020-03-20
Reviewed by Philippe Normand.
No new tests (build fix only).
- platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:
(webKitGLVideoSinkChangeState): Add GST_VERSION_CHECK around check for
GST_STATE_CHANGE_READY_TO_READY.
- 2:01 AM Changeset in webkit [258754] by
-
- 2 edits in trunk/Source/WebCore
[Unix] Allow runtime release logging levels configuration
https://bugs.webkit.org/show_bug.cgi?id=209286
Reviewed by Adrian Perez de Castro.
Setting to a comma-separated list like in this example should now work as expected:
WEBKIT_DEBUG="Media=debug,MediaSource=info" run-minibrowser --gtk ...
- platform/unix/LoggingUnix.cpp:
(WebCore::logLevelString):