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

Timeline



Jun 2, 2019:

10:29 PM Changeset in webkit [246029] by bshafiei@apple.com
  • 3 edits
    6 adds in branches/safari-608.1.27-branch

Cherry-pick r245989. rdar://problem/51283532

iOS: Main frame should be scrollable when pinch zoomed or software keyboard is up
https://bugs.webkit.org/show_bug.cgi?id=198244

Reviewed by Simon Fraser.

Source/WebKit:

This is a follow up to r245006. Even when overflow: hidden is specified on the document body,
we still need to make it scrollable when the page is pinch zoomed or there is a content inset
e.g. for software keyboard. Otherwise, the user won't be able to get to the content that is
outside the visual viewport when pinch zoomed or the parts of the page that is not outside
the visual viewport due to the scrolling caused by the software keyboard being brought up.

  • UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _didCommitLayerTree:]):

LayoutTests:

Added regression tests.

  • fast/scrolling/ios/body-overflow-hidden-height-100-percent-keyboard-expected.txt: Added.
  • fast/scrolling/ios/body-overflow-hidden-height-100-percent-keyboard.html: Added.
  • fast/scrolling/ios/body-overflow-hidden-height-100-percent-zoomed-1-expected.txt: Added.
  • fast/scrolling/ios/body-overflow-hidden-height-100-percent-zoomed-1.html: Added.
  • fast/scrolling/ios/body-overflow-hidden-height-100-percent-zoomed-2-expected.txt: Added.
  • fast/scrolling/ios/body-overflow-hidden-height-100-percent-zoomed-2.html: Added.

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

10:28 PM Changeset in webkit [246028] by Fujii Hironori
  • 2 edits in trunk/Tools

[WinCairo][MiniBrowser] WKViewSetIsInWindow should be called
https://bugs.webkit.org/show_bug.cgi?id=198474

Reviewed by Darin Adler.

WinCairo WK2 MiniBrowser can't play back videos because
Page::canStartMedia() always returns false. WKViewSetIsInWindow
should be called.

The original MiniBrowser did it in Bug 55364.

  • MiniBrowser/win/WebKitBrowserWindow.cpp:

(WebKitBrowserWindow::WebKitBrowserWindow): Call WKViewSetIsInWindow.

7:12 PM Changeset in webkit [246027] by Devin Rousso
  • 2 edits in trunk/LayoutTests

Flaky Test: inspector/canvas/recording.html
https://bugs.webkit.org/show_bug.cgi?id=198470

Reviewed by Matt Baker.

  • inspector/canvas/recording.html:

Don't rely on frameCount to automatically stop the recording, as that's dependent on when
the <canvas> paints and is less controllable/deterministic.

5:05 PM Changeset in webkit [246026] by Matt Baker
  • 7 edits in trunk/Source/WebInspectorUI

Web Inspector: Debugger: sidebar should always reveal active call frame when hitting a breakpoint
https://bugs.webkit.org/show_bug.cgi?id=198228
<rdar://problem/46719447>

Reviewed by Devin Rousso.

Reveal the active call frame TreeElement when call frames change. Refreshing
the current target's ThreadTreeElement children is insufficient, since
the sidebar panel content may have been scrolled.

This patch also introduces a workaround to prevent the DetailsSection header
element, which has sticky positioning, from covering a revealed TreeElement.
This can be the case when the TreeElement being revealed is at the topmost edge
of the scrolled content element.

  • UserInterface/Base/Utilities.js:
  • UserInterface/Views/DebuggerSidebarPanel.js:

(WI.DebuggerSidebarPanel.prototype.createContentTreeOutline):
(WI.DebuggerSidebarPanel.prototype._debuggerCallFramesDidChange):

  • UserInterface/Views/DetailsSection.js:

(WI.DetailsSection.prototype.get element):
(WI.DetailsSection.prototype.get headerElement):
(WI.DetailsSection.prototype.get identifier):

  • UserInterface/Views/SourcesNavigationSidebarPanel.js:

(WI.SourcesNavigationSidebarPanel.prototype.createContentTreeOutline):
(WI.SourcesNavigationSidebarPanel.prototype._handleDebuggerCallFramesDidChange):

  • UserInterface/Views/TreeElement.js:

(WI.TreeElement.prototype.reveal):

  • UserInterface/Views/TreeOutline.js:
4:34 PM Changeset in webkit [246025] by Devin Rousso
  • 7 edits in trunk/Source/WebInspectorUI

Web Inspector: propagate whether to show prototype information to subobject views
https://bugs.webkit.org/show_bug.cgi?id=194929

Reviewed by Matt Baker.

Add a way to mark the ObjectTreeView as holding a JSON value, which extends
showOnlyProperties to also hide the prototype of all held values (e.g. children).

  • UserInterface/Views/ObjectTreeView.js:

(WI.ObjectTreeView.prototype.showOnlyJSON): Added.

  • UserInterface/Views/ObjectTreeView.css:

(.object-tree.properties-only.json-only .object-tree-property .prototype-property): Added.

  • UserInterface/Views/AuditTestCaseContentView.js:

(WI.AuditTestCaseContentView.prototype.layout):

  • UserInterface/Views/DOMNodeDetailsSidebarPanel.js:

(WI.DOMNodeDetailsSidebarPanel.prototype._refreshAssociatedData):

  • UserInterface/Views/JSONResourceContentView.css:

(.content-view.resource.json .object-tree .prototype-property): Deleted.

  • UserInterface/Views/JSONResourceContentView.js:

(WI.JSONResourceContentView.prototype.contentAvailable):

3:18 PM Changeset in webkit [246024] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Crash explicitly if StructureIDs are exhausted
https://bugs.webkit.org/show_bug.cgi?id=198467

Reviewed by Sam Weinig.

When StructureIDTable::m_size reaches to s_maximumNumberOfStructures, newCapacity in resize function is also capped with s_maximumNumberOfStructures.
So m_size == newCapacity. In that case, the following code in resize function, makeFreeListFromRange(m_size, m_capacity - 1); starts executing the
wrong code.

Currently, this is safe. We immediately execute the wrong code in makeFreeListFromRange, and crash with zero division. But we should not rely on
this crash, and instead we should explicitly crash because we exhaust StructureIDs.

This patch inserts RELEASE_ASSERT for m_size < newCapacity status to ensure that resize is always extending the table.

In practice, this crash does not happen in Safari because Safari has memory footprint limit. To exhaust StructureIDs, we need to allocate massive
amount of Structures, and it exceeds the memory footprint limit and the process will be killed.

  • runtime/StructureIDTable.cpp:

(JSC::StructureIDTable::resize):

1:51 PM Changeset in webkit [246023] by dino@apple.com
  • 2 edits in trunk/Source/WebKit

Provide an action to save an image on a link sheet
https://bugs.webkit.org/show_bug.cgi?id=198464

Reviewed by Wenson Hsieh.

When providing the set of default actions for a link
sheet, if an URL to an image was provided then offer
the action to save that image to Photos.

  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant defaultActionsForLinkSheet:]):

1:02 PM Changeset in webkit [246022] by keith_miller@apple.com
  • 9 edits in trunk/Source

Reenable Gigacage on ARM64.
https://bugs.webkit.org/show_bug.cgi?id=198453

Reviewed by Filip Pizlo.

Source/bmalloc:

  • bmalloc/Gigacage.h:

Source/JavaScriptCore:

This patch adds back Gigacaging on Apple's ARM64 ports. Unlike the
old Gigacage however, arm64e uses both Gigacaging and PAC. Since
Gigacaging would otherwise strip a PAC failed authenticate bit we
force a load of the pointer into some garbage register.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::jumpForTypedArrayIsNeuteredIfOutOfBounds):
(JSC::DFG::SpeculativeJIT::cageTypedArrayStorage):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray):
(JSC::FTL::DFG::LowerDFGToB3::untagArrayPtr):
(JSC::FTL::DFG::LowerDFGToB3::caged):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::cageConditionally):

  • llint/LowLevelInterpreter64.asm:

Source/WTF:

  • wtf/CagedPtr.h:

(WTF::CagedPtr::authenticatingLoad):
(WTF::CagedPtr::get const):
(WTF::CagedPtr::getMayBeNull const):

5:25 AM Changeset in webkit [246021] by Tadeu Zagallo
  • 4 edits in trunk/Source/JavaScriptCore

CachedMetadataTable::decode leaks empty tables
https://bugs.webkit.org/show_bug.cgi?id=198465
<rdar://problem/51307673>

Reviewed by Yusuke Suzuki.

CachedMetadataTable::decode creates the metadata and never calls finalize on it.
This leaks the underlying UnlinkedMetadataTable buffer when m_hasMetadata is false,
since the buffer would be freed in finalize instead of in the destructor.

  • bytecode/UnlinkedMetadataTable.h:

(JSC::UnlinkedMetadataTable::empty):

  • bytecode/UnlinkedMetadataTableInlines.h:

(JSC::UnlinkedMetadataTable::UnlinkedMetadataTable):

  • runtime/CachedTypes.cpp:

(JSC::CachedMetadataTable::decode const):

Jun 1, 2019:

8:01 PM Changeset in webkit [246020] by Konstantin Tokarev
  • 2 edits in trunk/Source/WebKit

Remove include directives unused since r245186
https://bugs.webkit.org/show_bug.cgi?id=198463

Reviewed by Don Olmstead.

  • NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
8:01 PM Changeset in webkit [246019] by Simon Fraser
  • 5 edits in trunk

[Async overflow scroll] Flashing content when scrolling async overflow with a negative z-index child
https://bugs.webkit.org/show_bug.cgi?id=198458

Reviewed by Dean Jackson.

Source/WebCore:

Set the GraphicsLayerPaintOverflowContents phase on the foreground layer in a composited overflow scroller,
which prevents clipping to the visible region, fixing scrolling flashes.

Tested by compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updatePaintingPhases):

LayoutTests:

  • compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases-expected.txt:
  • platform/ios-wk2/compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases-expected.txt:
7:55 PM Changeset in webkit [246018] by Simon Fraser
  • 4 edits
    6 adds in trunk

Async overflow scroll on iOS paints slowly if it has a negative z-index child
https://bugs.webkit.org/show_bug.cgi?id=196508
rdar://problem/49532709

Reviewed by Dean Jackson.
Source/WebCore:

If a RenderLayerBacking had a foreground layer and a scrolled contents layer, every geometry
update would change the size and offsetFromRenderer of the foreground layer between two
states, triggering repaint.

Fix by updating the fore- and background-layers last (nothing elese has dependencies
on their geometry), and using GraphicsLayer::DontSetNeedsDisplay as we do for the
scrolled contents layer.

The test also revealed a bug where the shapeMaskLayer would get incorrect geometry when scrollbars
were visible, because it would be squished by setting the wrong bounds, so fix that.

Test: compositing/repaint/scroller-with-foreground-layer-repaints.html

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::updateClippingStrategy):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateGeometry):

LayoutTests:

  • compositing/geometry/scroller-with-clipping-and-foreground-layers-expected.html: Added.
  • compositing/geometry/scroller-with-clipping-and-foreground-layers.html: Added.
  • compositing/repaint/scroller-with-foreground-layer-repaints-expected.txt: Added.
  • compositing/repaint/scroller-with-foreground-layer-repaints.html: Added.
  • platform/ios-wk2/compositing/repaint/scroller-with-foreground-layer-repaints-expected.txt: Added.
  • platform/mac-wk1/compositing/repaint/scroller-with-foreground-layer-repaints-expected.txt: Added.
2:40 PM Changeset in webkit [246017] by Simon Fraser
  • 12 edits
    2 adds in trunk

Non-composited negative z-order children should not trigger creation of a foreground layer
https://bugs.webkit.org/show_bug.cgi?id=198455

Reviewed by Sam Weinig.
Source/WebCore:

The existing code triggered creation of a foreground layer on RenderLayerBacking when
the negative z-order list was non-empty. This isn't necessary; we can paint the negative
z-order children just fine.

We only need a foreground layer when the negative z-order layers are composited or
have composited descendants.

This will reduce backing store memory use in some cases.

Test: compositing/layer-creation/composited-negative-z-subtree.html

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::updateBackingAndHierarchy):
(WebCore::RenderLayerCompositor::needsContentsCompositingLayer const):

LayoutTests:

Change existing tests that use negative z-order layers to trigger foreground layer
creation to use compositing on those negative z-order layers.

  • compositing/geometry/bounds-ignores-hidden-dynamic-negzindex-expected.txt:
  • compositing/geometry/bounds-ignores-hidden-dynamic-negzindex.html:
  • compositing/geometry/bounds-ignores-hidden-expected.txt:
  • compositing/geometry/bounds-ignores-hidden.html:
  • compositing/layer-creation/composited-negative-z-subtree-expected.txt: Added.
  • compositing/layer-creation/composited-negative-z-subtree.html: Added.
  • compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases-expected.txt:
  • compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases.html:
  • platform/ios-wk2/compositing/geometry/bounds-ignores-hidden-dynamic-negzindex-expected.txt:
  • platform/ios-wk2/compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases-expected.txt:
  • platform/mac-wk1/compositing/overflow/stacking-context-composited-scroller-with-foreground-paint-phases-expected.txt:
2:37 PM Changeset in webkit [246016] by Devin Rousso
  • 7 edits
    7 moves
    31 adds
    1 delete in trunk/LayoutTests

Web Inspector: Canvas: split recording tests into separate files so they don't timeout
https://bugs.webkit.org/show_bug.cgi?id=198459
<rdar://problem/51332026>

Reviewed by Joseph Pecoraro.

  • inspector/canvas/recording.html:
  • inspector/canvas/recording-expected.txt:
  • inspector/canvas/recording-2d.html: Removed.
  • inspector/canvas/recording-2d-expected.txt: Removed.
  • inspector/canvas/console-record-2d.html: Added.
  • inspector/canvas/console-record-2d-expected.txt: Added.
  • inspector/canvas/recording-2d-frameCount.html: Added.
  • inspector/canvas/recording-2d-frameCount-expected.txt: Added.
  • inspector/canvas/recording-2d-full.html: Added.
  • inspector/canvas/recording-2d-full-expected.txt: Added.
  • inspector/canvas/recording-2d-memoryLimit.html: Added.
  • inspector/canvas/recording-2d-memoryLimit-expected.txt: Added.
  • inspector/canvas/recording-2d-saves.html: Added.
  • inspector/canvas/recording-2d-saves-expected.txt: Added.
  • inspector/canvas/resources/recording-2d.js: Added.
  • inspector/canvas/recording-bitmaprenderer.html: Removed.
  • inspector/canvas/recording-bitmaprenderer-expected.txt: Removed.
  • inspector/canvas/console-record-bitmaprenderer.html: Added.
  • inspector/canvas/console-record-bitmaprenderer-expected.txt: Added.
  • inspector/canvas/recording-bitmaprenderer-frameCount.html: Added.
  • inspector/canvas/recording-bitmaprenderer-frameCount-expected.txt: Added.
  • inspector/canvas/recording-bitmaprenderer-full.html: Added.
  • inspector/canvas/recording-bitmaprenderer-full-expected.txt: Added.
  • inspector/canvas/recording-bitmaprenderer-memoryLimit.html: Added.
  • inspector/canvas/recording-bitmaprenderer-memoryLimit-expected.txt: Added.
  • inspector/canvas/resources/recording-bitmaprenderer.js: Added.
  • inspector/canvas/recording-webgl.html: Removed.
  • inspector/canvas/recording-webgl-expected.txt: Removed.
  • inspector/canvas/console-record-webgl.html: Added.
  • inspector/canvas/console-record-webgl-expected.txt: Added.
  • inspector/canvas/recording-webgl-frameCount.html: Added.
  • inspector/canvas/recording-webgl-frameCount-expected.txt: Added.
  • inspector/canvas/recording-webgl-full.html: Added.
  • inspector/canvas/recording-webgl-full-expected.txt: Added.
  • inspector/canvas/recording-webgl-memoryLimit.html: Added.
  • inspector/canvas/recording-webgl-memoryLimit-expected.txt: Added.
  • inspector/canvas/resources/recording-webgl.js: Added.
  • inspector/canvas/recording-webgl2.html: Removed.
  • inspector/canvas/recording-webgl2-expected.txt: Removed.
  • inspector/canvas/console-record-webgl2.html: Added.
  • inspector/canvas/console-record-webgl2-expected.txt: Added.
  • inspector/canvas/recording-webgl2-frameCount.html: Added.
  • inspector/canvas/recording-webgl2-frameCount-expected.txt: Added.
  • inspector/canvas/recording-webgl2-full.html: Added.
  • inspector/canvas/recording-webgl2-full-expected.txt: Added.
  • inspector/canvas/recording-webgl2-memoryLimit.html: Added.
  • inspector/canvas/recording-webgl2-memoryLimit-expected.txt: Added.
  • inspector/canvas/resources/recording-webgl2.js: Added.
  • TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
1:19 PM Changeset in webkit [246015] by Devin Rousso
  • 4 edits in trunk/LayoutTests

Web Inspector: Canvas: in tests don't manually stop recording if a frame count is specified
https://bugs.webkit.org/show_bug.cgi?id=198457
<rdar://problem/48248697>

Reviewed by Joseph Pecoraro.

If a frameCount is specified, the recording will stop by itself, so if we hit the
LastFrame, there's no need to manually stop the recording at that point. Otherwise,
stopping it early may cause the recording to think that the last frame is incomplete.

  • inspector/canvas/resources/recording-utilities.js:
  • inspector/canvas/recording-webgl-snapshots.html:
  • inspector/canvas/recording-webgl2-snapshots.html:
9:19 AM Changeset in webkit [246014] by aestes@apple.com
  • 6 edits in trunk/Source

[Apple Pay] Every PaymentCoordinator client should explicitly decide whether they support unrestricted Apple Pay
https://bugs.webkit.org/show_bug.cgi?id=198449
<rdar://problem/51038583>

Reviewed by Wenson Hsieh.

Source/WebCore:

Rather than having a default return value of true for
PaymentCoordinatorClient::supportsUnrestrictedApplePay, make it pure virtual to force each
subclass to implement an override and explicitly choose an appropriate return value.

The only two clients that did not explicitly override were the empty client and
WebKitLegacy's client, and Apple Pay was never enabled in those clients, so there is no
change in behavior.

  • Modules/applepay/PaymentCoordinatorClient.h:

(WebCore::PaymentCoordinatorClient::isAlwaysOnLoggingAllowed const):
(WebCore::PaymentCoordinatorClient::supportsUnrestrictedApplePay const): Deleted.

  • loader/EmptyClients.cpp:

Source/WebKitLegacy/mac:

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

(WebPaymentCoordinatorClient::supportsUnrestrictedApplePay const):

Note: See TracTimeline for information about the timeline view.