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

Timeline



Aug 22, 2018:

11:30 PM Changeset in webkit [235219] by zandobersek@gmail.com
  • 4 edits in trunk/Source/WebCore

[CoordGraphics] Drop old-school PlatformLayer management in CoordinatedGraphicsLayer
https://bugs.webkit.org/show_bug.cgi?id=188850

Reviewed by Michael Catanzaro.

Remove the m_platformLayer member from the CoordinatedGraphicsLayer
class as it's been unused since the rework in r235165.

The CoordinatedGraphicsLayer::syncPlatformLayer() helper method and the
related member variable can both be removed as well. On the
CoordinatedGraphicsLayerState class, we can remove the obsolete
flags and the TextureMapperPlatformLayerProxy member variable that's
unused now that such objects are handled through the Nicosia impl class.

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

(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::setContentsNeedsDisplay):
(WebCore::CoordinatedGraphicsLayer::setContentsToPlatformLayer):
(WebCore::CoordinatedGraphicsLayer::updatePlatformLayer):
(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):
(WebCore::CoordinatedGraphicsLayer::syncPlatformLayer): Deleted.

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
  • platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h:

(WebCore::CoordinatedGraphicsLayerState::CoordinatedGraphicsLayerState):

11:27 PM Changeset in webkit [235218] by zandobersek@gmail.com
  • 4 edits in trunk/Source/WebCore

[CoordGraphics] Remove TiledBackingStoreClient inheritance from CoordinatedGraphicsLayer
https://bugs.webkit.org/show_bug.cgi?id=188849

Reviewed by Michael Catanzaro.

Remove the TiledBackingStoreClient inheritance from the
CoordinatedGraphicsLayer class since it's not used anymore after changes
made in r235165.

Related TiledBackingStore objects on this class, along with tile state
tracking member variables on the CoordinatedGraphicsLayerState class,
are also removed.

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

(WebCore::CoordinatedGraphicsLayer::~CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::resetLayerState):
(WebCore::CoordinatedGraphicsLayer::purgeBackingStores):
(WebCore::CoordinatedGraphicsLayer::tiledBackingStoreHasPendingTileCreation): Deleted.
(WebCore::CoordinatedGraphicsLayer::createTile): Deleted.
(WebCore::CoordinatedGraphicsLayer::updateTile): Deleted.
(WebCore::CoordinatedGraphicsLayer::removeTile): Deleted.

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
  • platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h:

(WebCore::CoordinatedGraphicsLayerState::hasPendingChanges const):

11:20 PM Changeset in webkit [235217] by zandobersek@gmail.com
  • 8 edits
    2 deletes in trunk/Source

[CoordGraphics] Remove CoordinatedImageBacking and related functionality
https://bugs.webkit.org/show_bug.cgi?id=188847

Reviewed by Michael Catanzaro.

Remove the CoordinatedImageBacking class and its intertwining use in the
CoordinatedGraphics system.

Source/WebCore:

Remove the now-unused m_coordinatedImageBacking member variable from the
CoordinatedGraphicsLayer class, along with CoordinatedImageBacking::Host
inheritance. Various related helper methods are also removed.

In CoordinatedGraphicsState and CoordinatedGraphicsLayerState classes,
we are able to drop different CoordinatedImageBacking-related state
values that are not used anymore.

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

(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::~CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::setContentsToImage):
(WebCore::CoordinatedGraphicsLayer::purgeBackingStores):
(WebCore::CoordinatedGraphicsLayer::didChangeImageBacking): Deleted.
(WebCore::CoordinatedGraphicsLayer::syncImageBacking): Deleted.
(WebCore::CoordinatedGraphicsLayer::imageBackingVisible): Deleted.
(WebCore::CoordinatedGraphicsLayer::releaseImageBackingIfNeeded): Deleted.

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
  • platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h:

(WebCore::CoordinatedGraphicsLayerState::CoordinatedGraphicsLayerState):

  • platform/graphics/texmap/coordinated/CoordinatedImageBacking.cpp: Removed.
  • platform/graphics/texmap/coordinated/CoordinatedImageBacking.h: Removed.

Source/WebKit:

Drop the CoordinatedImageBacking object management from the
CompositingCoordinator class, along with the
CoordinatedImageBacking::Client inheritance. The corresponding image
backing state management on the CoordinatedGraphicsState class can be
removed accordingly.

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:

(WebKit::CompositingCoordinator::flushPendingLayerChanges):
(WebKit::CompositingCoordinator::clearPendingStateChanges):
(WebKit::CompositingCoordinator::purgeBackingStores):
(WebKit::CompositingCoordinator::createImageBackingIfNeeded): Deleted.
(WebKit::CompositingCoordinator::createImageBacking): Deleted.
(WebKit::CompositingCoordinator::updateImageBacking): Deleted.
(WebKit::CompositingCoordinator::clearImageBackingContents): Deleted.
(WebKit::CompositingCoordinator::removeImageBacking): Deleted.
(WebKit::CompositingCoordinator::flushPendingImageBackingChanges): Deleted.

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
10:52 PM Changeset in webkit [235216] by sihui_liu@apple.com
  • 12 edits in trunk/Source/WebKit

Move legacy directory configuration from WebProcessPool to API::WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=188765

Reviewed by Geoffrey Garen.

Diretories are parameters of websiteDataStore instead of webProcessPool, so we should move
legacy default paths to API::WebsiteDataStore, which already stores default paths for
non-legacy cases.

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::createWithLegacyOptions):
(API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):

  • UIProcess/API/APIWebsiteDataStore.cpp:

(API::WebsiteDataStore::legacyDefaultDataStoreConfiguration):

  • UIProcess/API/APIWebsiteDataStore.h:
  • UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:

(API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory):
(API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory):
(API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultLocalStorageDirectory):
(API::WebsiteDataStore::legacyDefaultMediaCacheDirectory):
(API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory):
(API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory):

  • UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:

(API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory):
(API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory):
(API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultLocalStorageDirectory):
(API::WebsiteDataStore::legacyDefaultMediaCacheDirectory):
(API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory):
(API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory):

  • UIProcess/API/win/APIWebsiteDataStoreWin.cpp:

(API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory):
(API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory):
(API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultLocalStorageDirectory):
(API::WebsiteDataStore::legacyDefaultMediaCacheDirectory):
(API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory):
(API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory): Deleted.

  • UIProcess/WebProcessPool.h:
  • UIProcess/gtk/WebProcessPoolGtk.cpp:

(WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory): Deleted.

  • UIProcess/win/WebProcessPoolWin.cpp:

(WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory): Deleted.

  • UIProcess/wpe/WebProcessPoolWPE.cpp:

(WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory): Deleted.

8:01 PM Changeset in webkit [235215] by don.olmstead@sony.com
  • 7 edits
    2 adds in trunk/Source/WTF

[WTF] Add generic implementation for Memory querying
https://bugs.webkit.org/show_bug.cgi?id=188867

Reviewed by Fujii Hironori.

Moves generic implementation of MemoryPressureHandler from
MemoryPressureHandler.cpp into MemoryPressureHandlerGeneric
and generic implementation of memoryFootprint from
MemoryFootprintLinux.cpp to MemoryFootprintGeneric.

  • wtf/MemoryPressureHandler.cpp:

(WTF::MemoryPressureHandler::install): Deleted.
(WTF::MemoryPressureHandler::uninstall): Deleted.
(WTF::MemoryPressureHandler::respondToMemoryPressure): Deleted.
(WTF::MemoryPressureHandler::platformReleaseMemory): Deleted.
(WTF::MemoryPressureHandler::ReliefLogger::platformMemoryUsage): Deleted.

  • wtf/PlatformJSCOnly.cmake:
  • wtf/generic/MemoryFootprintGeneric.cpp: Added.

(WTF::memoryFootprint):

  • wtf/generic/MemoryPressureHandlerGeneric.cpp: Added.

(WTF::MemoryPressureHandler::memoryMeasurementTimerFired):
(WTF::MemoryPressureHandler::platformReleaseMemory):
(WTF::MemoryPressureHandler::install):
(WTF::MemoryPressureHandler::uninstall):
(WTF::MemoryPressureHandler::holdOff):
(WTF::MemoryPressureHandler::respondToMemoryPressure):
(WTF::MemoryPressureHandler::ReliefLogger::platformMemoryUsage):

  • wtf/linux/CurrentProcessMemoryStatus.cpp:
  • wtf/linux/CurrentProcessMemoryStatus.h:
  • wtf/linux/MemoryFootprintLinux.cpp:

(WTF::computeMemoryFootprint):
(WTF::memoryFootprint):

  • wtf/linux/MemoryPressureHandlerLinux.cpp:
6:51 PM Changeset in webkit [235214] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

Store RefPtr in FocusNavigationScope
https://bugs.webkit.org/show_bug.cgi?id=188864

Reviewed by Simon Fraser.

Use RefPtr to store the root node of a tree scope and a slot element instead of a reference and a raw pointer.

  • page/FocusController.cpp:

(WebCore::FocusNavigationScope::parentInScope const):
(WebCore::FocusNavigationScope::firstNodeInScope const):
(WebCore::FocusNavigationScope::lastNodeInScope const):
(WebCore::FocusNavigationScope::FocusNavigationScope):
(WebCore::FocusNavigationScope::owner const):

6:40 PM Changeset in webkit [235213] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.10-branch/Source

Versioning.

5:58 PM Changeset in webkit [235212] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.1-branch/Source

Versioning.

5:13 PM Changeset in webkit [235211] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.36.1.8

Tag Safari-606.1.36.1.8.

4:10 PM Changeset in webkit [235210] by wilander@apple.com
  • 2 edits in trunk/LayoutTests

Further adjustments to http/tests/websocket/connection-refusal-in-frame-resource-load-statistics.html
https://bugs.webkit.org/show_bug.cgi?id=188856

Unreviewed test gardening. Trying to address flakiness I can't reproduce locally.

  • http/tests/websocket/connection-refusal-in-frame-resource-load-statistics.html:
3:54 PM Changeset in webkit [235209] by wilander@apple.com
  • 2 edits in trunk/Source/WebKit

The Storage Access API prompt should show the eTLD+1s, not the full host names
https://bugs.webkit.org/show_bug.cgi?id=188830
<rdar://problem/43380645>

Reviewed by Brent Fulgham.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestStorageAccess):

3:51 PM Changeset in webkit [235208] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit

De-unify WebPage
https://bugs.webkit.org/show_bug.cgi?id=188865

Reviewed by Wenson Hsieh.

  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:

WebPage being unified is causing mysterious build issues inside Carbon headers
on High Sierra only. Also, WebPage by itself takes longer to build than
most full unified source files, so it might not make sense to unify it
with others (to maximize parallelism).

3:49 PM Changeset in webkit [235207] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, update "Web Authentication" from "Under Consideration" to "In Development"
in features.json.

  • features.json:
3:48 PM Changeset in webkit [235206] by commit-queue@webkit.org
  • 42 edits in trunk/LayoutTests

Update webkit-webgl-test-harness.js for more details on WebGL 2 conformance tests
https://bugs.webkit.org/show_bug.cgi?id=188825

Patch by Justin Fan <Justin Fan> on 2018-08-22
Reviewed by Simon Fraser.

Another update to the test-harness specific to the new WebGL 2 tests in our suite. All sub-test messages are
now reported by the harness and presented in an ordered list for easier referencing. Sub-test failures are
marked accordingly and with their test number for diffing purposes.

  • webgl/2.0.0/conformance2/glsl3/array-as-return-value-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/array-assign-constructor-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/array-assign-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/array-complex-indexing-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/array-element-increment-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/array-equality-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/array-in-complex-expression-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/attrib-location-length-limits-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/bool-type-cast-bug-uint-ivec-uvec-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/compare-structs-containing-arrays-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/compound-assignment-type-combination-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/const-array-init-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/forbidden-operators-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/frag-depth-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/invalid-default-precision-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/invalid-invariant-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/loops-with-side-effects-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/misplaced-version-directive-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/no-attribute-vertex-shader-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/sampler-no-precision-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/sequence-operator-returns-non-constant-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/shader-linking-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/shader-with-1024-character-define-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/shader-with-1024-character-identifier.frag-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/shader-with-1025-character-define-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/shader-with-1025-character-identifier.frag-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/shader-with-invalid-characters-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/shader-with-mis-matching-uniform-block-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/short-circuiting-in-loop-condition-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/texture-offset-out-of-range-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/texture-offset-uniform-texture-coordinate-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/tricky-loop-conditions-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/unary-minus-operator-in-dynamic-loop-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/uniform-block-layout-match-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/uniform-block-layouts-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/uniform-location-length-limits-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/valid-invariant-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/vector-dynamic-indexing-expected.txt:
  • webgl/2.0.0/conformance2/glsl3/vector-dynamic-indexing-nv-driver-bug-expected.txt:
  • webgl/2.0.0/conformance2/vertex_arrays/vertex-array-object-expected.txt:
  • webgl/2.0.0/resources/webkit-webgl-test-harness.js:

(list):
(window.webglTestHarness.reportResults):
(window.webglTestHarness.notifyFinished):

3:44 PM Changeset in webkit [235205] by david_fenton@apple.com
  • 160 edits in trunk/Source/WebKit

Unreviewed, rolling out r235204.

reverting previous rollout

Reverted changeset:

"Unreviewed, rolling out r235176."
https://bugs.webkit.org/show_bug.cgi?id=185015
https://trac.webkit.org/changeset/235204

3:39 PM Changeset in webkit [235204] by david_fenton@apple.com
  • 160 edits in trunk/Source/WebKit

Unreviewed, rolling out r235176.

broke internal builds

Reverted changeset:

"Use unified build for WebProcess"
https://bugs.webkit.org/show_bug.cgi?id=185015
https://trac.webkit.org/changeset/235176

3:23 PM Changeset in webkit [235203] by Ross Kirsling
  • 2 edits in trunk

[MSVC] Stop disabling /O2 features.
https://bugs.webkit.org/show_bug.cgi?id=188811

Reviewed by Per Arne Vollan.

  • Source/cmake/OptionsMSVC.cmake:

Don't disable /GF (string pooling) or /Gy (function-level linking).

2:35 PM Changeset in webkit [235202] by Wenson Hsieh
  • 11 edits in trunk

[Attachment Support] Support dragging attachment elements out as files on macOS
https://bugs.webkit.org/show_bug.cgi?id=181294
<rdar://problem/36298801>

Reviewed by Tim Horton.

Source/WebCore:

Serialize a dragged attachment element as a web archive on macOS. This allows us to move attachment elements
around a document by dragging, without performing a file upload upon every drop. Ideally, we should do this on
iOS as well, but this currently causes attachment data to go missing; further investigation to fix this for iOS
is tracked in <https://bugs.webkit.org/show_bug.cgi?id=181514>.

Tests: WKAttachmentTestsMac.DragAttachmentAsFilePromise

WKAttachmentTests.MoveAttachmentElementAsIconByDragging

  • editing/cocoa/EditorCocoa.mm:

(WebCore::Editor::getPasteboardTypesAndDataForAttachment):

Source/WebKit:

Add support for dragging attachment elements on macOS by writing promised files to drag pasteboard. See changes
below for more details.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView filePromiseProvider:fileNameForType:]):
(-[WKWebView filePromiseProvider:writePromiseToURL:completionHandler:]):
(-[WKWebView draggingSession:sourceOperationMaskForDraggingContext:]):
(-[WKWebView draggingSession:endedAtPoint:operation:]):

  • UIProcess/API/mac/WKView.mm:

(-[WKView filePromiseProvider:fileNameForType:]):
(-[WKView filePromiseProvider:writePromiseToURL:completionHandler:]):
(-[WKView draggingSession:sourceOperationMaskForDraggingContext:]):
(-[WKView draggingSession:endedAtPoint:operation:]):

Plumb NSFilePromiseProviderDelegate and NSDraggingSource method implementations to WebViewImpl.

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(-[WKPromisedAttachmentContext initWithAttachmentInfo:]):
(-[WKPromisedAttachmentContext blobURL]):
(-[WKPromisedAttachmentContext filename]):
(-[WKPromisedAttachmentContext attachmentIdentifier]):

Add an object that contains the information needed to deliver a dragged attachment element's data via
NSFilePromiseProvider. This is stored as the userInfo of the NSFilePromiseProvider created upon drag start.

(WebKit::WebViewImpl::draggedImage):
(WebKit::WebViewImpl::sendDragEndToPage):

Add a helper method to handle cleanup after the dragging has finished, and call it from -draggedImage:… and
-draggingSessionEnded:…. The latter is only triggered in the where -beginDraggingSessionWithItems:… is used,
which currently only happens when dragging attachment elements.

(WebKit::WebViewImpl::fileNameForFilePromiseProvider):
(WebKit::webKitUnknownError):
(WebKit::WebViewImpl::writeToURLForFilePromiseProvider):

Deliver either NSFileWrapper data to the destination URL (in the case where an attachment identifier is known
and the corresponding API::Attachment is backed by a file wrapper), or save the contents of the blob URL to the
destination.

(WebKit::WebViewImpl::dragSourceOperationMask):
(WebKit::WebViewImpl::draggingSessionEnded):
(WebKit::WebViewImpl::startDrag):

Tools:

Add DragAndDropSimulator support for intercepting calls to -beginDraggingSessionWithitems:event:source:. This
enables us to write API tests for macOS that exercise the attachment SPI in combination with dragging attachment
elements.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(-[TestWKWebView attachmentElementMidPoint]):

Add a helper method local to this test suite that grabs the midpoint (in client coordinates) or the first
attachment element in the document.

(TestWebKitAPI::TEST):

Add a new API test to verify that dragging an attachment element on macOS produces file providers which may be
used to write attachment data to a path on disk. Additionally, refactor an existing API test,
MoveAttachmentElementAsIconByDragging, so that it runs on both iOS and macOS, to test the ability to move
attachment elements around in a document by using drag and drop.

  • TestWebKitAPI/cocoa/DragAndDropSimulator.h:
  • TestWebKitAPI/mac/DragAndDropSimulatorMac.mm:

(-[DragAndDropTestWKWebView beginDraggingSessionWithItems:event:source:]):
(-[DragAndDropSimulator initWithWebViewFrame:configuration:]):
(-[DragAndDropSimulator dealloc]):
(-[DragAndDropSimulator runFrom:to:]):
(-[DragAndDropSimulator beginDraggingSessionInWebView:withItems:source:]):

Begin a drag session and kick off the -continueDragSession loop. Unlike -performDragInWebView:…, which spins
the main runloop until dragging ends, this version returns execution to the web view and schedules dragging
updates asynchronously. This matches AppKit behavior.

(-[DragAndDropSimulator continueDragSession]):

Increment the dragging progress amount, send a drag update to the web view, and continue scheduling calls to
itself until the progress reaches 1.

(-[DragAndDropSimulator performDragInWebView:atLocation:withImage:pasteboard:source:]):
(-[DragAndDropSimulator initializeDraggingInfo:dragImage:source:]):

Pull out common logic for creating a new TestDraggingInfo after starting a drag.

(-[DragAndDropSimulator insertedAttachments]):
(-[DragAndDropSimulator removedAttachments]):
(-[DragAndDropSimulator draggingSession]):
(-[DragAndDropSimulator receivePromisedFiles]):

Helper method to save promised files written to the pasteboard after a drag to the temporary directory. These
files are tracked by DragAndDropSimulator and automatically cleaned up after the test finishes.

(-[DragAndDropSimulator endDataTransfer]):

Add a method stub on macOS, so that MoveAttachmentElementAsIconByDragging can be made cross-platform.

(-[DragAndDropSimulator _webView:didInsertAttachment:withSource:]):
(-[DragAndDropSimulator _webView:didRemoveAttachment:]):

Implement method stubs to keep track of inserted or removed attachments while simulating a drag.

2:22 PM Changeset in webkit [235201] by Aditya Keerthi
  • 17 edits
    4 adds in trunk

[iOS] Add support for the inputmode attribute
https://bugs.webkit.org/show_bug.cgi?id=183621

Reviewed by Tim Horton.

Source/WebCore:

Added the inputmode attribute to the HTMLInputElement and HTMLTextAreaElement IDL
files. The possible values for the attribute are specified in InputModeNames.

Test: fast/forms/inputmode-attribute.html

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLAttributeNames.in:
  • html/HTMLInputElement.idl:
  • html/HTMLTextAreaElement.idl:
  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::inputMode const):
(WebCore::HTMLTextFormControlElement::setInputMode):

  • html/HTMLTextFormControlElement.h:
  • html/InputModeNames.cpp: Added.

(WebCore::InputModeNames::text):
(WebCore::InputModeNames::tel):
(WebCore::InputModeNames::url):
(WebCore::InputModeNames::email):
(WebCore::InputModeNames::numeric):
(WebCore::InputModeNames::decimal):
(WebCore::InputModeNames::search):

  • html/InputModeNames.h: Added.

Source/WebKit:

The inputmode attribute specifies which input mechanism would be most helpful for
users entering content in textfield inputs and textareas. This patch adds support
for seven values: text, tel, url, email, numeric, decimal and search.

On iOS, we can specify UIKeyboardTypes that best match the supplied inputmode.

  • text: UIKeyboardTypeDefault
  • tel: UIKeyboardTypePhonePad
  • url: UIKeyboardTypeURL
  • email: UIKeyboardTypeEmailAddress
  • numeric: UIKeyboardTypeNumbersAndPunctuation
  • decimal: UIKeyboardTypeDecimalPad
  • search: UIKeyboardTypeWebSearch

In the case that the inputmode attribute is not specified, we fall back to using
our existing heuristic to determine what kind of keyboard to show for textfields.

  • Shared/AssistedNodeInformation.cpp:

(WebKit::AssistedNodeInformation::encode const):
(WebKit::AssistedNodeInformation::decode):

  • Shared/AssistedNodeInformation.h: Added inputMode field.
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView textInputTraits]):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::inputModeForElement):
(WebKit::WebPage::getAssistedNodeInformation):

Tools:

Added an API test to verify that the correct UIKeyboardType is set depending on
the type, inputmode, and pattern specified for an input field.

  • TestWebKitAPI/Tests/ios/KeyboardInputTestsIOS.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/ios/UIKitSPI.h:

LayoutTests:

Added test to verify behavior when getting and setting the inputmode attribute.

  • fast/forms/inputmode-attribute-expected.txt: Added.
  • fast/forms/inputmode-attribute.html: Added.
2:08 PM Changeset in webkit [235200] by jeffm@apple.com
  • 10 edits in trunk/Source/WebKit

WKNavigationDelegate needs to allow clients to specify a custom blocked plug-in message
https://bugs.webkit.org/show_bug.cgi?id=188764

Reviewed by Alex Christensen.

Add a new private WKNavigationDelegate method that takes a completion handler so clients can return
a custom unavailability description in addition to the policy. Change WebPageProxy::findPlugin() to
send a delayed reply and API::LoaderClient::pluginLoadPolicy()/API::NavigationClient::decidePolicyForPluginLoad()
to take a completion handler to support this.

  • UIProcess/API/APILoaderClient.h:

(API::LoaderClient::pluginLoadPolicy):
Changed to take a completion handler. The default implementation doesn't return a custom
unavailability description.

  • UIProcess/API/APINavigationClient.h:

(API::NavigationClient::decidePolicyForPluginLoad):
Ditto.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageLoaderClient):
Changed pluginLoadPolicy() to take a completion handler.

(WKPageSetPageNavigationClient):
Changed decidePolicyForPluginLoad() to take a completion handler.

  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:

Add alternate version of -decidePolicyForPluginLoadWithCurrentPolicy: that allows clients to return
the unavailibility description.

  • UIProcess/Cocoa/NavigationState.h:

Add flag for new delegate method.
Changed decidePolicyForPluginLoad() to take a completion handler.

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate):
Calculate flag for new delegate method.

(WebKit::NavigationState::NavigationClient::decidePolicyForPluginLoad):
Changed to take a completion handler.
Prefer new delegate method, if available.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::findPlugin):
Changed to send a delayed reply.
Refactored some code into a lambda so it can be shared when using m_navigationClient->decidePolicyForPluginLoad().
Removed unneeded UNUSED_PARAM() macros.

  • UIProcess/WebPageProxy.h:

Changed findPlugin() to send a delayed reply.

  • UIProcess/WebPageProxy.messages.in:

Ditto.

1:46 PM Changeset in webkit [235199] by achristensen@apple.com
  • 2 edits in trunk/Tools

Fix API test on Sierra after r235139
https://bugs.webkit.org/show_bug.cgi?id=188810

  • TestWebKitAPI/Tests/mac/LimitTitleSize.mm:

(TEST):

1:42 PM Changeset in webkit [235198] by msaboff@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

https://bugs.webkit.org/show_bug.cgi?id=188859
Eliminate dead code operationThrowDivideError() and operationThrowOutOfBoundsAccessError()

Rubber-stamped by Saam Barati.

Deleted these two functions.

  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
1:40 PM Changeset in webkit [235197] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

Log more often during AirPlay state changes
https://bugs.webkit.org/show_bug.cgi?id=188854

Always log some infrequent but important AirPlay state changes to make debugging easier.

Reviewed by Jer Noble.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::webkitShowPlaybackTargetPicker): Low always.
(WebCore::HTMLMediaElement::mediaPlayerCurrentPlaybackTargetIsWirelessChanged): Ditto.
(WebCore::HTMLMediaElement::setWirelessPlaybackTarget): Ditto.
(WebCore::HTMLMediaElement::setShouldPlayToPlaybackTarget): Ditto.

1:32 PM Changeset in webkit [235196] by Kocsen Chung
  • 1 copy in tags/Safari-607.1.3

Tag Safari-607.1.3.

1:31 PM Changeset in webkit [235195] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

[Win] Some video tests under http/tests/security are crashing on EWS.
https://bugs.webkit.org/show_bug.cgi?id=188853

Unreviewed test gardening.

  • platform/win/TestExpectations:
1:27 PM Changeset in webkit [235194] by berto@igalia.com
  • 2 edits in trunk

Don't use WTF_CPU_MIPS when building for mips64
https://bugs.webkit.org/show_bug.cgi?id=188858

Reviewed by Michael Catanzaro.

  • CMakeLists.txt: Use WTF_CPU_MIPS64 for this architecture.
1:07 PM Changeset in webkit [235193] by wilander@apple.com
  • 3 edits
    1 move
    2 adds
    2 deletes in trunk/LayoutTests

Make ResourceLoadObserver::logWebSocketLoading() handle websockets in detached frames
https://bugs.webkit.org/show_bug.cgi?id=188856

Unreviewed test gardening.

Skipped test since it's only valid on WK2 platforms.

  • http/tests/websocket/connection-refusal-in-frame-resource-load-statistics-expected.txt: Added.
  • http/tests/websocket/connection-refusal-in-frame-resource-load-statistics.html: Renamed from LayoutTests/http/tests/websocket/construct-in-detached-frame-resource-load-statistics.html.
  • http/tests/websocket/construct-in-detached-frame-resource-load-statistics-expected.txt: Removed.
  • http/tests/websocket/resources/construct-in-detached-frame-resource-load-statistics.html: Removed.
  • http/tests/websocket/resources/localhost-websocket-connect.html: Added.
  • platform/wk2/TestExpectations:

Marked test as [ Pass ].

1:02 PM Changeset in webkit [235192] by Ryan Haddad
  • 19 edits
    66 adds
    2 deletes in trunk/LayoutTests

[iOS] Rebaseline table tests
https://bugs.webkit.org/show_bug.cgi?id=188833

Unreviewed test gardening.

12:59 PM Changeset in webkit [235191] by rniwa@webkit.org
  • 5 edits in trunk

Focus navigation order in slot fallback contents is wrong
https://bugs.webkit.org/show_bug.cgi?id=178001
<rdar://problem/42842997>

Reviewed by Antti Koivisto.

Source/WebCore:

The bug here is that when a slot uses its fallback content, the fallback content's focus order doesn't get
grouped by that of the slot. Consider the following DOM tree:

  • ShadowRoot
    • div tabindex = 2
    • slot tabindex = 1
      • span tabindex = 3

In this example, the sequential focus navigation should be slot, span, then div. Even though span has tabindex
order of 3, which is lower than that of div, the fallback content of the slot should be grouped together
before the focus moves out of the slot content.

In WebKit, this concept of grouping elements for the sequential focus navigation ordering is implemeneted
as FocusNavigationScope. Both ShadowRoot and HTMLSlotElement are treated as a focus scope owner but we had
a bug that a slot element which uses its fallback content was not treated as a focus scope owner.

This patch addresses the bug by treating a slot wich uses its fallback content as a focus scope owner.

Test: fast/shadow-dom/focus-navigation-across-slots.html

  • page/FocusController.cpp:

(WebCore::isFocusScopeOwner): Treat a slot elment hs a focus scope owner regardless of whether it has assigned
nodes or not.
(WebCore::FocusNavigationScope::SlotKind): Added.
(WebCore::FocusNavigationScope::m_slotKind): Added.
(WebCore::FocusNavigationScope::parentInScope const): Return null if node is a child of the slot element for
which this FocusNavigationScope is created (i.e. node is slot's fallback content).
(WebCore::FocusNavigationScope::firstNodeInScope const): Return the first child node when this
FocusNavigationScope is for a slot element using its fallback content.
(WebCore::FocusNavigationScope::lastNodeInScope const): Ditto for the last child.
(WebCore::FocusNavigationScope::FocusNavigationScope):
(WebCore::FocusNavigationScope::scopeOf): The scope of a child of a slot element which uses its fallback content
is its slot element (i.e. the current node is a fallback content). We can't simply check the current node is
a slot element which uses a fallback content since the scope of a slot element is the parent scope. e.g. its
tree scope like ShadowRoot or Document inside which this slot element appears.
(WebCore::FocusNavigationScope::scopeOwnedByScopeOwner): Create the appropriate FocusNavigationScope based on
whether the slot element has assigned or it uses its fallback content.

LayoutTests:

Updated the sequential focus navigation test for shadow DOM and its expectation.

New test passes in Firefox & Chrome other than the fact both browsers fail to focus a slot elemennt.

  • fast/shadow-dom/focus-navigation-across-slots-expected.txt:
  • fast/shadow-dom/focus-navigation-across-slots.html:
12:33 PM Changeset in webkit [235190] by ddkilzer@apple.com
  • 5 edits
    6 moves in trunk

Move files in WebCore project to match Xcode folder structure
<https://webkit.org/b/188851>

Reviewed by Tim Horton.

Source/WebCore:

  • Scripts/LocalizableStrings.pm: Renamed from Source/WebCore/LocalizableStrings.pm.
  • Scripts/extract-localizable-strings.pl: Renamed from Source/WebCore/extract-localizable-strings.pl.
  • WebCore.xcodeproj/project.pbxproj: Update to match new location of files.
  • platform/audio/cocoa/WebAudioBufferList.cpp: Renamed from Source/WebCore/platform/audio/WebAudioBufferList.cpp.
  • platform/audio/cocoa/WebAudioBufferList.h: Renamed from Source/WebCore/platform/audio/WebAudioBufferList.h.
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h: Renamed from Source/WebCore/platform/graphics/avfoundation/MediaSampleAVFObjC.h.
  • platform/ios/wak/WAKViewInternal.h: Renamed from Source/WebCore/platform/WAKViewInternal.h. Also fix 3 webkit-style warnings.

Tools:

  • Scripts/extract-localizable-strings:
  • Scripts/update-webkit-localizable-strings:
  • Update to match new location of extract-localizable-strings.pl.
11:53 AM Changeset in webkit [235189] by sbarati@apple.com
  • 2 edits in trunk/JSTests

Make data-view-access.js run less time to prevent timeouts on 32-bit

  • microbenchmarks/data-view-accesses.js:
11:31 AM Changeset in webkit [235188] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.36.10.4

Tag Safari-606.1.36.10.4.

11:28 AM Changeset in webkit [235187] by Kocsen Chung
  • 2 edits in branches/safari-606.1.36.10-branch/Source/WebKit

Cherry-pick r235133. rdar://problem/43584853

Increment NetworkCache::Storage::lastStableVersion after r233742
https://bugs.webkit.org/show_bug.cgi?id=188798
<rdar://43561761>

Reviewed by Geoffrey Garen.

  • NetworkProcess/cache/NetworkCacheStorage.h:

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

11:26 AM Changeset in webkit [235186] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.10-branch/Source

Versioning.

11:03 AM Changeset in webkit [235185] by Kocsen Chung
  • 2 edits in branches/safari-606.1.36.1-branch/Source/WebKit

Cherry-pick r235133. rdar://problem/43584853

Increment NetworkCache::Storage::lastStableVersion after r233742
https://bugs.webkit.org/show_bug.cgi?id=188798
<rdar://43561761>

Reviewed by Geoffrey Garen.

  • NetworkProcess/cache/NetworkCacheStorage.h:

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

10:57 AM Changeset in webkit [235184] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.1-branch/Source

Versioning.

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

Web Inspector: cannot delete multiple event breakpoints by repeatedly hitting delete
https://bugs.webkit.org/show_bug.cgi?id=188803
<rdar://problem/43572838>

Reviewed by Matt Baker.

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WI.DebuggerSidebarPanel.prototype._domBreakpointAddedOrRemoved):
(WI.DebuggerSidebarPanel.prototype._eventBreakpointAddedOrRemoved):

10:51 AM Changeset in webkit [235182] by Kocsen Chung
  • 7 edits in trunk/Source

Versioning.

10:29 AM Changeset in webkit [235181] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

[Win] Some video tests under http/tests/security are crashing on EWS.
https://bugs.webkit.org/show_bug.cgi?id=188853

Unreviewed test gardening.

  • platform/win/TestExpectations:
10:19 AM Changeset in webkit [235180] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

[Win] Some video tests under http/tests/security are crashing on EWS.
https://bugs.webkit.org/show_bug.cgi?id=188853

Unreviewed test gardening.

  • platform/win/TestExpectations:
10:17 AM Changeset in webkit [235179] by sihui_liu@apple.com
  • 5 edits in trunk/Source/WebKit

Try removing defaultSessionParameters from NetworkProcessCreationParameters
https://bugs.webkit.org/show_bug.cgi?id=188831

Reviewed by Alex Christensen.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode const):
(WebKit::NetworkProcessCreationParameters::decode):

  • NetworkProcess/NetworkProcessCreationParameters.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

10:10 AM Changeset in webkit [235178] by Alan Bujtas
  • 4 edits
    4 moves
    1 add in trunk/Source/WebCore

[LFC][Floating] Move files to a dedicated directory.
https://bugs.webkit.org/show_bug.cgi?id=188846

Reviewed by Simon Fraser.

layout/Float* -> layout/floats

  • WebCore.xcodeproj/project.pbxproj:
  • layout/floatformatting/FloatingContext.cpp: Renamed from Source/WebCore/layout/FloatingContext.cpp.

(WebCore::Layout::FloatingPair::isEmpty const):
(WebCore::Layout::FloatingPair::verticalPosition const):
(WebCore::Layout::Iterator::operator* const):
(WebCore::Layout::begin):
(WebCore::Layout::end):
(WebCore::Layout::FloatingContext::FloatingContext):
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
(WebCore::Layout::FloatingContext::floatingPosition const):
(WebCore::Layout::FloatingContext::initialVerticalPosition const):
(WebCore::Layout::FloatingContext::alignWithContainingBlock const):
(WebCore::Layout::FloatingContext::alignWithFloatings const):
(WebCore::Layout::FloatingContext::toContainingBlock const):
(WebCore::Layout::FloatingPair::FloatingPair):
(WebCore::Layout::FloatingPair::left const):
(WebCore::Layout::FloatingPair::right const):
(WebCore::Layout::FloatingPair::intersects const):
(WebCore::Layout::FloatingPair::operator == const):
(WebCore::Layout::FloatingPair::bottom const):
(WebCore::Layout::Iterator::Iterator):
(WebCore::Layout::previousFloatingIndex):
(WebCore::Layout::Iterator::operator++):
(WebCore::Layout::Iterator::set):
(WebCore::Layout::Iterator::operator== const):
(WebCore::Layout::Iterator::operator!= const):

  • layout/floatformatting/FloatingContext.h: Renamed from Source/WebCore/layout/FloatingContext.h.

(WebCore::Layout::FloatingContext::floatingState const):
(WebCore::Layout::FloatingContext::layoutContext const):

  • layout/floatformatting/FloatingState.cpp: Renamed from Source/WebCore/layout/FloatingState.cpp.

(WebCore::Layout::FloatingState::FloatItem::FloatItem):
(WebCore::Layout::FloatingState::FloatingState):
(WebCore::Layout::belongsToThisFloatingContext):
(WebCore::Layout::FloatingState::remove):
(WebCore::Layout::FloatingState::append):
(WebCore::Layout::FloatingState::bottom const):

  • layout/floatformatting/FloatingState.h: Renamed from Source/WebCore/layout/FloatingState.h.

(WebCore::Layout::FloatingState::create):
(WebCore::Layout::FloatingState::isEmpty const):
(WebCore::Layout::FloatingState::FloatItem::layoutBox const):
(WebCore::Layout::FloatingState::FloatItem::containingBlock const):
(WebCore::Layout::FloatingState::FloatItem::displayBox const):
(WebCore::Layout::FloatingState::FloatItem::containingBlockDisplayBox const):
(WebCore::Layout::FloatingState::floats const):
(WebCore::Layout::FloatingState::last const):
(WebCore::Layout::FloatingState::layoutContext const):
(WebCore::Layout::FloatingState::root const):
(WebCore::Layout::FloatingState::leftBottom const):
(WebCore::Layout::FloatingState::rightBottom const):
(WebCore::Layout::FloatingState::bottom const):

9:55 AM Changeset in webkit [235177] by mark.lam@apple.com
  • 4 edits
    1 add in trunk

The DFG CFGSimplification phase shouldn’t jettison a block when it’s the target of both branch directions.
https://bugs.webkit.org/show_bug.cgi?id=188298
<rdar://problem/42888427>

Reviewed by Saam Barati.

JSTests:

  • stress/bug-188298.js: Added.

Source/JavaScriptCore:

In the event that both targets of a Branch is the same block, then even if we'll
always take one path of the branch, the other target is not unreachable because
it is the same target as the one in the taken path. Hence, it should not be
jettisoned.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Added DFGCFG.h which is in use and should have been added to the project.
  • dfg/DFGCFGSimplificationPhase.cpp:

(JSC::DFG::CFGSimplificationPhase::run):

9:54 AM Changeset in webkit [235176] by timothy_horton@apple.com
  • 160 edits in trunk/Source/WebKit

Use unified build for WebProcess
https://bugs.webkit.org/show_bug.cgi?id=185015

Reviewed by Alex Christensen.

  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/WebPageProxy.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
  • WebProcess/Databases/WebDatabaseProvider.cpp:
  • WebProcess/EntryPoint/mac/XPCService/WebContentServiceEntryPoint.mm:
  • WebProcess/FileAPI/BlobRegistryProxy.cpp:
  • WebProcess/FullScreen/WebFullScreenManager.cpp:
  • WebProcess/Gamepad/WebGamepadProvider.cpp:
  • WebProcess/Geolocation/GeolocationPermissionRequestManager.cpp:
  • WebProcess/Geolocation/WebGeolocationManager.cpp:
  • WebProcess/InjectedBundle/API/c/mac/WKBundlePageBannerMac.mm:
  • WebProcess/InjectedBundle/API/gtk/DOM/GObjectEventListener.cpp:
  • WebProcess/InjectedBundle/DOM/InjectedBundleCSSStyleDeclarationHandle.cpp:
  • WebProcess/InjectedBundle/DOM/InjectedBundleFileHandle.cpp:
  • WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
  • WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:
  • WebProcess/InjectedBundle/InjectedBundleBackForwardList.cpp:
  • WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.cpp:
  • WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.cpp:
  • WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:
  • WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:
  • WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp:
  • WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
  • WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp:
  • WebProcess/InjectedBundle/InjectedBundlePageFullScreenClient.cpp:
  • WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
  • WebProcess/InjectedBundle/InjectedBundlePagePolicyClient.cpp:
  • WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp:
  • WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:
  • WebProcess/InjectedBundle/InjectedBundleScriptWorld.cpp:
  • WebProcess/InjectedBundle/mac/InjectedBundleMac.mm:
  • WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
  • WebProcess/Network/NetworkProcessConnection.cpp:
  • WebProcess/Network/WebLoaderStrategy.cpp:
  • WebProcess/Network/WebResourceLoader.cpp:
  • WebProcess/Network/WebSocketProvider.cpp:
  • WebProcess/Network/WebSocketStream.cpp:
  • WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
  • WebProcess/Network/webrtc/LibWebRTCResolver.cpp:
  • WebProcess/Network/webrtc/LibWebRTCResolver.h:
  • WebProcess/Network/webrtc/LibWebRTCSocket.cpp:
  • WebProcess/Network/webrtc/LibWebRTCSocket.h:
  • WebProcess/Network/webrtc/WebMDNSRegister.cpp:
  • WebProcess/Network/webrtc/WebRTCMonitor.cpp:
  • WebProcess/Network/webrtc/WebRTCMonitor.h:
  • WebProcess/Notifications/NotificationPermissionRequestManager.cpp:
  • WebProcess/Notifications/WebNotificationManager.cpp:
  • WebProcess/Plugins/Netscape/JSNPMethod.cpp:
  • WebProcess/Plugins/Netscape/JSNPObject.cpp:
  • WebProcess/Plugins/Netscape/NPJSObject.cpp:
  • WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
  • WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:
  • WebProcess/Plugins/Netscape/NetscapePlugin.cpp:
  • WebProcess/Plugins/Netscape/NetscapePluginNone.cpp:
  • WebProcess/Plugins/Netscape/NetscapePluginStream.cpp:
  • WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
  • WebProcess/Plugins/PDF/PDFPlugin.mm:
  • WebProcess/Plugins/PDF/PDFPluginAnnotation.mm:
  • WebProcess/Plugins/PDF/PDFPluginChoiceAnnotation.mm:
  • WebProcess/Plugins/PDF/PDFPluginPasswordField.mm:
  • WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:
  • WebProcess/Plugins/Plugin.cpp:
  • WebProcess/Plugins/PluginProcessConnection.cpp:
  • WebProcess/Plugins/PluginProxy.cpp:
  • WebProcess/Plugins/PluginView.cpp:
  • WebProcess/Plugins/WebPluginInfoProvider.cpp:
  • WebProcess/Storage/ServiceWorkerClientFetch.cpp:
  • WebProcess/Storage/WebSWClientConnection.cpp:
  • WebProcess/Storage/WebSWContextManagerConnection.cpp:
  • WebProcess/Storage/WebSWOriginTable.cpp:
  • WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
  • WebProcess/Storage/WebServiceWorkerProvider.cpp:
  • WebProcess/Storage/WebToStorageProcessConnection.cpp:
  • WebProcess/UserContent/WebUserContentController.cpp:
  • WebProcess/WebConnectionToUIProcess.cpp:
  • WebProcess/WebCoreSupport/SessionStateConversion.cpp:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:
  • WebProcess/WebCoreSupport/WebColorChooser.cpp:
  • WebProcess/WebCoreSupport/WebContextMenuClient.cpp:
  • WebProcess/WebCoreSupport/WebDataListSuggestionPicker.cpp:
  • WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.cpp:
  • WebProcess/WebCoreSupport/WebDragClient.cpp:
  • WebProcess/WebCoreSupport/WebEditorClient.cpp:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
  • WebProcess/WebCoreSupport/WebGeolocationClient.cpp:
  • WebProcess/WebCoreSupport/WebInspectorClient.cpp:
  • WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp:
  • WebProcess/WebCoreSupport/WebNotificationClient.cpp:
  • WebProcess/WebCoreSupport/WebPerformanceLoggingClient.cpp:
  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
  • WebProcess/WebCoreSupport/WebPopupMenu.cpp:
  • WebProcess/WebCoreSupport/WebProgressTrackerClient.cpp:
  • WebProcess/WebCoreSupport/WebSearchPopupMenu.cpp:
  • WebProcess/WebCoreSupport/WebUserMediaClient.cpp:
  • WebProcess/WebCoreSupport/WebValidationMessageClient.cpp:
  • WebProcess/WebCoreSupport/ios/WebChromeClientIOS.mm:
  • WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:
  • WebProcess/WebCoreSupport/ios/WebFrameLoaderClientIOS.mm:
  • WebProcess/WebCoreSupport/mac/WebAlternativeTextClient.cpp:
  • WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:
  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
  • WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:
  • WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:
  • WebProcess/WebCoreSupport/mac/WebPopupMenuMac.mm:
  • WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:
  • WebProcess/WebCoreSupport/win/WebContextMenuClientWin.cpp:
  • WebProcess/WebCoreSupport/win/WebPopupMenuWin.cpp:
  • WebProcess/WebCoreSupport/wpe/WebEditorClientWPE.cpp:
  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
  • WebProcess/WebPage/DrawingArea.cpp:
  • WebProcess/WebPage/EventDispatcher.cpp:
  • WebProcess/WebPage/FindController.cpp:
  • WebProcess/WebPage/LayerTreeHost.cpp:
  • WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.cpp:
  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp:
  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteCustom.mm:
  • WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteTiledBacking.cpp:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
  • WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm:
  • WebProcess/WebPage/RemoteWebInspectorUI.cpp:
  • WebProcess/WebPage/ViewGestureGeometryCollector.cpp:
  • WebProcess/WebPage/VisitedLinkTableController.cpp:
  • WebProcess/WebPage/WebBackForwardListProxy.cpp:
  • WebProcess/WebPage/WebContextMenu.cpp:
  • WebProcess/WebPage/WebDocumentLoader.cpp:
  • WebProcess/WebPage/WebFrame.cpp:
  • WebProcess/WebPage/WebInspector.cpp:
  • WebProcess/WebPage/WebInspectorUI.cpp:
  • WebProcess/WebPage/WebPage.cpp:
  • WebProcess/WebPage/WebPageOverlay.cpp:
  • WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:
  • WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
  • WebProcess/WebPage/ios/FindControllerIOS.mm:
  • WebProcess/WebPage/ios/WebPageIOS.mm:
  • WebProcess/WebPage/mac/DrawingAreaMac.cpp:
  • WebProcess/WebPage/mac/PageBannerMac.mm:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
  • WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm:
  • WebProcess/WebPage/mac/WebPageMac.mm:
  • WebProcess/WebPage/win/WebPageWin.cpp:
  • WebProcess/WebPage/wpe/AcceleratedSurfaceWPE.cpp:
  • WebProcess/WebPage/wpe/WebPageWPE.cpp:
  • WebProcess/WebProcess.cpp:
  • WebProcess/WebStorage/StorageAreaImpl.cpp:
  • WebProcess/WebStorage/StorageAreaMap.cpp:
  • WebProcess/WebStorage/StorageNamespaceImpl.cpp:
  • WebProcess/WebStorage/WebStorageNamespaceProvider.cpp:
  • WebProcess/cocoa/PlaybackSessionManager.mm:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:
  • WebProcess/cocoa/VideoFullscreenManager.mm:
  • WebProcess/cocoa/WebProcessCocoa.mm:
  • WebProcess/win/WebProcessMainWin.cpp:
  • WebProcess/win/WebProcessWin.cpp:
  • WebProcess/wpe/WebProcessMainWPE.cpp:
9:46 AM Changeset in webkit [235175] by dbates@webkit.org
  • 10 edits in trunk/Source/WebKit

Cleanup: Add type alias for spell document tag
https://bugs.webkit.org/show_bug.cgi?id=188817

Reviewed by Simon Fraser.

  • UIProcess/TextChecker.h:
  • UIProcess/TextCheckerCompletion.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::~WebPageProxy):
(WebKit::WebPageProxy::spellDocumentTag):

  • UIProcess/WebPageProxy.h: Also addressed FIXME comment and modernized the code to use a std::optional

while I am here.

  • UIProcess/gtk/TextCheckerGtk.cpp:

(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):
(WebKit::TextChecker::checkTextOfParagraph):

  • UIProcess/ios/TextCheckerIOS.mm:

(WebKit::spellDocumentTagMap):
(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::textCheckerFor):
(WebKit::TextChecker::checkTextOfParagraph):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):

  • UIProcess/mac/TextCheckerMac.mm:

(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::TextChecker::checkTextOfParagraph):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):

  • UIProcess/win/TextCheckerWin.cpp:

(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):
(WebKit::TextChecker::checkTextOfParagraph):

  • UIProcess/wpe/TextCheckerWPE.cpp:

(WebKit::TextChecker::uniqueSpellDocumentTag):
(WebKit::TextChecker::closeSpellDocumentWithTag):
(WebKit::TextChecker::checkSpellingOfString):
(WebKit::TextChecker::checkGrammarOfString):
(WebKit::TextChecker::updateSpellingUIWithMisspelledWord):
(WebKit::TextChecker::updateSpellingUIWithGrammarString):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::learnWord):
(WebKit::TextChecker::ignoreWord):

9:24 AM Changeset in webkit [235174] by commit-queue@webkit.org
  • 7 edits in trunk

Fetch: Stop checking Request.integrity's value in no-cors mode
https://bugs.webkit.org/show_bug.cgi?id=188802

Patch by Rob Buis <rbuis@igalia.com> on 2018-08-22
Reviewed by Frédéric Wang.

LayoutTests/imported/w3c:

Update integrity.html expected result.

  • web-platform-tests/fetch/api/basic/integrity-expected.txt:

Source/WebCore:

Remove this check since it was removed from the spec.

Behavior matches Chrome and Firefox.

Test: http/tests/subresource-integrity/sri-fetch.js:

  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::initializeOptions):

LayoutTests:

Unskip fetch/api/basic/integrity.html and adjust sri-fetch.js.

8:59 AM Changeset in webkit [235173] by youenn@apple.com
  • 2 edits in trunk/Source/WebCore

Mark MediaStream Recording API as under consideration
https://bugs.webkit.org/show_bug.cgi?id=188822

Reviewed by Jon Lee.

  • features.json:
8:21 AM Changeset in webkit [235172] by Ms2ger@igalia.com
  • 3 edits in trunk/LayoutTests

[GTK][WPE] Unreviewed test gardening
https://bugs.webkit.org/show_bug.cgi?id=188845

Unreviewed test gardening.

  • platform/gtk/TestExpectations: Note failing tests.
  • platform/wpe/TestExpectations: Note failing tests.
7:47 AM Changeset in webkit [235171] by Ms2ger@igalia.com
  • 3 edits in trunk/Source/WebCore

[GTK] Never return an uninitialized ImageGStreamer object.
https://bugs.webkit.org/show_bug.cgi?id=188305

Reviewed by Philippe Normand.

The single caller was already checking for a null return value, so
make that check actually do something. Also remove the null-check on
the return value of image(), which asserted that it would never return
null.

Test: fast/canvas/canvas-createPattern-video-loading.html

  • platform/graphics/gstreamer/ImageGStreamer.h:

(WebCore::ImageGStreamer::createImage): Return null if m_image wasn't created.
(WebCore::ImageGStreamer::image): Return a reference.
(WebCore::ImageGStreamer::rect): Always assert that m_image is present.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::paint): Update for new signature.

7:27 AM Changeset in webkit [235170] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Add changes missing from r234925.

  • layout/blockformatting/BlockMarginCollapse.cpp:

(WebCore::Layout::isMarginTopCollapsedWithParent):
(WebCore::Layout::isMarginBottomCollapsedThrough):
(WebCore::Layout::BlockFormattingContext::MarginCollapse::isMarginBottomCollapsedWithParent):

7:19 AM Changeset in webkit [235169] by Antti Koivisto
  • 6 edits in trunk/Source/WebKit

Use OptionSet for NetworkCache::Storage::TraverseFlags
https://bugs.webkit.org/show_bug.cgi?id=188837

Reviewed by Anders Carlsson.

Type safe flags.

  • NetworkProcess/cache/CacheStorageEngineCaches.cpp:

(WebKit::CacheStorage::Caches::initializeSize):
(WebKit::CacheStorage::Caches::readRecordsList):

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::traverse):
(WebKit::NetworkCache::Cache::dumpContentsToFile):

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::TraverseOperation::TraverseOperation):
(WebKit::NetworkCache::Storage::traverse):

  • NetworkProcess/cache/NetworkCacheStorage.h:
  • WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:

(WebKit::UserMediaPermissionRequestManager::captureDevicesChanged):
(WebKit::UserMediaPermissionRequestManager::activityStateDidChange):

Also use OptionSet<>::containsAll() in a few places.

7:13 AM Changeset in webkit [235168] by Ms2ger@igalia.com
  • 2 edits in trunk/LayoutTests

[GTK] imported/w3c/web-platform-tests/media-source/mediasource-getvideoplaybackquality.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=187591

Unreviewed test gardening.

Re-enable mediasource-getvideoplaybackquality.html.

The crash was fixed in r233981, and the failure in r234981-r234983.

  • platform/gtk/TestExpectations:
5:47 AM Changeset in webkit [235167] by Ms2ger@igalia.com
  • 2 edits in trunk/LayoutTests

REGRESSION(r234330): [GTK] svg/as-image/svg-image-with-data-uri-background.html is failing
https://bugs.webkit.org/show_bug.cgi?id=188220

Unreviewed test gardening.

  • platform/gtk/TestExpectations: Re-enable svg/as-image/svg-image-with-data-uri-background.html.
5:29 AM Changeset in webkit [235166] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit

[WPE] pkg-config files should require libwpe
https://bugs.webkit.org/show_bug.cgi?id=188835

Reviewed by Žan Doberšek.

  • wpe/wpe-web-extension.pc.in:
  • wpe/wpe-webkit.pc.in:
5:14 AM Changeset in webkit [235165] by zandobersek@gmail.com
  • 15 edits in trunk

[CoordGraphics] Switch to Nicosia::CompositionLayer state tracking
https://bugs.webkit.org/show_bug.cgi?id=188693

Reviewed by Carlos Garcia Campos.

.:

  • Source/cmake/OptionsGTK.cmake: Enable USE_NICOSIA alongside

USE_COORDINATED_GRAPHICS and USE_COORDINATED_GRAPHICS_THREADED.

  • Source/cmake/OptionsWPE.cmake: Ditto.

Source/WebCore:

Populate Nicosia::CompositionLayer with additional LayerState member
objects. For now we're using pending, staging and committed states,
though it might be possible to narrow down these to just two.

Pending state contains state that will be moved to staging during the
final steps of the next layer flush. flushState() method accumulates all
state changes in the staging state, and also allows the caller to
additionally perform flushing operations that are specific to backing
store, image backing or content layer containers.

commitState() method moves staging state over into the committed state,
again allowing user to pass a functor that receives the just-committed
state and apply it to their composition engine.

Changes in state objects are done under a thread-safe lock. This might
not be completely necessary at this point, but will be useful when
additonal layer state updates will be coming from e.g. the scrolling
thread. It might also make sense to tie in this lock use with the
Nicosia::Scene lock in the future.

Nicosia::ContentLayerTextureMapperImpl is modified slightly to allow
determining during flushes whether an update is pending. This is
necessary for a special case in ThreadedCompositor where content (i.e.
platform) layers like WebGL or video require an additional level of
scene update coordination. This complete special case has to go through
another review to see whether it's still necessary. Ideally we would be
able to remove it.

CoordinatedGraphicsLayer is finally switched over to using
Nicosia layer objects for state updates of any kind. This patch only
adds all the necessary bits, but doesn't yet remove any of the existing
code (but rather disables it temporarily, before it's removed).

Updating of simple state values is already in place. For backing stores,
the flushCompositingStateForThisLayerOnly() method now takes care of
preparing the backing store object if necessary as per layer state,
while the updateContentBuffers() method is switched to operate with
TiledBackingStore objects now kept on the BackingStoreTextureMapperImpl
instance associated with that backing store. Helper methods like
adjustContentsScale() and createBackingStore(), only called from the
updateContentBuffers() method, are removed and the code there inlined.

For image-backed layers, the update is now done directly in
the flushCompositingStateForThisLayerOnly() method, if necessary. The
helper syncImageBacking() method is commented out in order to prevent
double-painting of image buffers for now, but all this (along with the
CoordinatedImageBacking logic in CompositingCoordinator) will be removed
later.

For layers backed by platform layer objects, integration is relatively
simple. setContentsToPlatformLayer() is changed to properly handle any
passed-in platform layer object, and updatePlatformLayer() invokes the
swapBuffersIfNeeded() method on the ContentLayerTextureMapperImpl object
during each flush, if necessary.

In order to ensure any Nicosia-specific state update properly triggers
a composition update, m_nicosia.performLayerUpdate is added and flipped
to true during the flush in case of any state change. This then triggers
a layer sync in the CompositingCoordinator object when the
syncPendingStateChangesIncludingSubLayers() method is called. While no
old-style layer state update is provided, it causes the necessary
synchronization step that properly picks up the Nicosia-provided state
changes. Once the old-style layer state tracking is removed, this method
of update triggering will have to be updated as well.

  • platform/graphics/nicosia/NicosiaPlatformLayer.h:

(Nicosia::CompositionLayer::flushState):
(Nicosia::CompositionLayer::commitState):
(Nicosia::CompositionLayer::accessCommitted):

  • platform/graphics/nicosia/NicosiaScene.h:
  • platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.cpp:

(Nicosia::ContentLayerTextureMapperImpl::flushUpdate):

  • platform/graphics/nicosia/texmap/NicosiaContentLayerTextureMapperImpl.h:
  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::~CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::setContentsNeedsDisplay):
(WebCore::CoordinatedGraphicsLayer::setContentsToPlatformLayer):
(WebCore::CoordinatedGraphicsLayer::updatePlatformLayer):
(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):
(WebCore::CoordinatedGraphicsLayer::syncPendingStateChangesIncludingSubLayers):
(WebCore::CoordinatedGraphicsLayer::updateContentBuffers):
(WebCore::CoordinatedGraphicsLayer::purgeBackingStores):
(WebCore::CoordinatedGraphicsLayer::adjustContentsScale): Deleted.
(WebCore::CoordinatedGraphicsLayer::createBackingStore): Deleted.

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

Source/WebKit:

Switch CoordinatedGraphicsScene to utilizing Nicosia::CompositionLayer
objects for state updates of the TextureMapper layer tree.

CoordinatedGraphicsScene::paintToCurrentGLContext() now calls
updateSceneState() at the beginning. This is a new method that manages
all updates for a given Nicosia::Scene instance. Any removed layers
have their composition-side state cleaned up, and the current set of
layers is then iterated to ensure and update the corresponding
TextureMapperLayer objects.

Layers with any backing (painted backing store, platform-layer or image
content) are temporarly stored for updating outside of mutex-controlled
scene update. Performing all other state updates outside of this mutex
area will be investigated at a later point.

We then iterate over vectors for each layer backing, gathering any
affected CoordinatedBackingStore or TextureMapperPlatformLayerProxy
objects that we have to update.

This drops a bunch of member variables and helper methods off the
CoordinatedGraphicsScene class. The applyStateChanges() method will be
further simplified in the future. coordinateUpdateCompletionWithClient
logic in ThreadedCompositor should be checked to see whether it still
addresses any real-life problem, because at the moment it imposes a few
additional operations in terms of scene updates that we could really do
without. This will be checked later and removed if possible.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::applyStateChanges):
(WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext):
(WebKit::compositionLayerImpl):
(WebKit::contentLayerImpl):
(WebKit::backingStoreImpl):
(WebKit::imageBackingImpl):
(WebKit::texmapLayer):
(WebKit::updateBackingStore):
(WebKit::updateImageBacking):
(WebKit::removeLayer):
(WebKit::CoordinatedGraphicsScene::commitSceneState):
(WebKit::CoordinatedGraphicsScene::updateSceneState):
(WebKit::CoordinatedGraphicsScene::purgeGLResources):
(WebKit::CoordinatedGraphicsScene::syncPlatformLayerIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::setLayerChildrenIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::setLayerFiltersIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::setLayerState): Deleted.
(WebKit::CoordinatedGraphicsScene::getLayerByIDIfExists): Deleted.
(WebKit::CoordinatedGraphicsScene::createLayers): Deleted.
(WebKit::CoordinatedGraphicsScene::createLayer): Deleted.
(WebKit::CoordinatedGraphicsScene::deleteLayers): Deleted.
(WebKit::CoordinatedGraphicsScene::deleteLayer): Deleted.
(WebKit::CoordinatedGraphicsScene::setRootLayerID): Deleted.
(WebKit::CoordinatedGraphicsScene::prepareContentBackingStore): Deleted.
(WebKit::CoordinatedGraphicsScene::createBackingStoreIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::removeBackingStoreIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::resetBackingStoreSizeToLayerSize): Deleted.
(WebKit::CoordinatedGraphicsScene::createTilesIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::removeTilesIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::updateTilesIfNeeded): Deleted.
(WebKit::CoordinatedGraphicsScene::syncImageBackings): Deleted.
(WebKit::CoordinatedGraphicsScene::createImageBacking): Deleted.
(WebKit::CoordinatedGraphicsScene::updateImageBacking): Deleted.
(WebKit::CoordinatedGraphicsScene::clearImageBackingContents): Deleted.
(WebKit::CoordinatedGraphicsScene::removeImageBacking): Deleted.
(WebKit::CoordinatedGraphicsScene::assignImageBackingToLayer): Deleted.
(WebKit::CoordinatedGraphicsScene::setLayerAnimationsIfNeeded): Deleted.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:

(WebKit::CoordinatedGraphicsScene::layerByID): Deleted.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::renderLayerTree):

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:

(WebKit::CompositingCoordinator::flushPendingLayerChanges):

3:37 AM Changeset in webkit [235164] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

Remove stale file references in WebCore Xcode project

I manually removed these using Xcode and verified that there was
a commit that removed the original files.

Found by tool created for Bug 188754: Tool to fix folders that
should map to directories in Xcode project files.

  • WebCore.xcodeproj/project.pbxproj:

(dom/DOMExceptions.in): Removed in r219741.
(Modules/modern-media-controls/start-button.js):
(Modules/modern-media-controls/volume-slider.css):
(Modules/modern-media-controls/icon-button.css):
(Modules/modern-media-controls/volume-slider.js):
(Modules/modern-media-controls/macos-media-controls.js):
(Modules/modern-media-controls/ios-inline-media-controls.css):
(Modules/modern-media-controls/scrubber.css):
(Modules/modern-media-controls/start-button.css):
(Modules/modern-media-controls/scrubber.js):
(Modules/modern-media-controls/icon-button.js):
(Modules/modern-media-controls/macos-compact-inline-media-controls.css):
(Modules/modern-media-controls/images/iOS/enter-fullscreen@2x.png):
(Modules/modern-media-controls/images/iOS/start@1x.png):
(Modules/modern-media-controls/images/iOS/enter-fullscreen@1x.png):
(Modules/modern-media-controls/images/iOS/pause@2x.png):
(Modules/modern-media-controls/images/iOS/play@3x.png):
(Modules/modern-media-controls/images/iOS/interval-skip-back@2x.png):
(Modules/modern-media-controls/images/iOS/interval-skip-back@3x.png):
(Modules/modern-media-controls/images/iOS/pip-in@2x.png):
(Modules/modern-media-controls/images/iOS/start@3x.png):
(Modules/modern-media-controls/images/iOS/airplay@1x.png):
(Modules/modern-media-controls/images/iOS/enter-fullscreen@3x.png):
(Modules/modern-media-controls/images/iOS/slider-thumb@2x.png):
(Modules/modern-media-controls/images/iOS/airplay@2x.png):
(Modules/modern-media-controls/images/iOS/pause@3x.png):
(Modules/modern-media-controls/images/iOS/pip-in@3x.png):
(Modules/modern-media-controls/images/iOS/interval-skip-back@1x.png):
(Modules/modern-media-controls/images/iOS/pause@1x.png):
(Modules/modern-media-controls/images/iOS/start@2x.png):
(Modules/modern-media-controls/images/iOS/play@2x.png):
(Modules/modern-media-controls/images/iOS/pip-in@1x.png):
(Modules/modern-media-controls/images/iOS/play@1x.png):
(Modules/modern-media-controls/images/macOS/enter-fullscreen-compact@1x.png):
(Modules/modern-media-controls/images/macOS/rewind@1x.png):
(Modules/modern-media-controls/images/macOS/play@2x.png):
(Modules/modern-media-controls/images/macOS/volume-mute@2x.png):
(Modules/modern-media-controls/images/macOS/airplay-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/volume@2x.png):
(Modules/modern-media-controls/images/macOS/interval-skip-back@2x.png):
(Modules/modern-media-controls/images/macOS/volume-compact@2x.png):
(Modules/modern-media-controls/images/macOS/start@2x.png):
(Modules/modern-media-controls/images/macOS/exit-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/airplay@2x.png):
(Modules/modern-media-controls/images/macOS/media-selection-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/interval-skip-back@1x.png):
(Modules/modern-media-controls/images/macOS/airplay@1x.png):
(Modules/modern-media-controls/images/macOS/pip-in@1x.png):
(Modules/modern-media-controls/images/macOS/scale-to-fill@2x.png):
(Modules/modern-media-controls/images/macOS/rewind@2x.png):
(Modules/modern-media-controls/images/macOS/play-compact@1x.png):
(Modules/modern-media-controls/images/macOS/media-selection-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/pip-in-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/volume@1x.png):
(Modules/modern-media-controls/images/macOS/pip-in@2x.png):
(Modules/modern-media-controls/images/macOS/play-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/volume-down-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/pause-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/enter-fullscreen-compact@2x.png):
(Modules/modern-media-controls/images/macOS/enter-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/pause-compact@1x.png):
(Modules/modern-media-controls/images/macOS/start@1x.png):
(Modules/modern-media-controls/images/macOS/pip-in-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/pause-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/play@1x.png):
(Modules/modern-media-controls/images/macOS/exit-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/forward@1x.png):
(Modules/modern-media-controls/images/macOS/enter-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/pause@1x.png):
(Modules/modern-media-controls/images/macOS/scale-to-fit@2x.png):
(Modules/modern-media-controls/images/macOS/interval-skip-back-compact@2x.png):
(Modules/modern-media-controls/images/macOS/pause@2x.png):
(Modules/modern-media-controls/images/macOS/volume-up-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/volume-compact@1x.png):
(Modules/modern-media-controls/images/macOS/play-compact@2x.png):
(Modules/modern-media-controls/images/macOS/media-selection@2x.png):
(Modules/modern-media-controls/images/macOS/forward@2x.png):
(Modules/modern-media-controls/images/macOS/interval-skip-back-compact@1x.png):
(Modules/modern-media-controls/images/macOS/scale-to-fill@1x.png):
(Modules/modern-media-controls/images/macOS/airplay-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/media-selection@1x.png):
(Modules/modern-media-controls/images/macOS/volume-mute@1x.png):
(Modules/modern-media-controls/images/macOS/pause-compact@2x.png):
(Modules/modern-media-controls/images/macOS/volume-up-fullscreen@2x.png):
(Modules/modern-media-controls/images/macOS/scale-to-fit@1x.png):
(Modules/modern-media-controls/images/macOS/play-fullscreen@1x.png):
(Modules/modern-media-controls/images/macOS/volume-down-fullscreen@2x.png):
(Modules/modern-media-controls/media/time-labels-support.js):

(Modules/webvr/VRDisplayCapabilities.cpp): Removed in r229089.
(Modules/webvr/VRFieldOfView.cpp): Removed in r228819.
(rendering/svg/RenderSVGAllInOne.cpp): Removed in r234655.

12:13 AM Changeset in webkit [235163] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebInspectorUI

Unreviewed. Do not include TreeOutlineDataGridSynchronizer.js in inspector main.

The script was removed in r235151.

  • UserInterface/Main.html:
12:01 AM Changeset in webkit [235162] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

Do not try to update the compositing policy when not in accelerated compositing mode
https://bugs.webkit.org/show_bug.cgi?id=188787

Reviewed by Simon Fraser.

RenderLayerCompositor::updateCompositingPolicy() is called very often (called from
RenderLayerCompositor::cacheAcceleratedCompositingFlags()) and it uses WTF::memoryFootprint() to decide the
current compositing policy. Getting the memory footprint is an expensive operation in Linux (and I suspect other
non-cocoa ports too), causing an excessive CPU usage. This caused the WPE and GTK+ unit test
/webkit/WebKitWebContext/uri-scheme to start timing out in the bots, because the test expects things to happen
fast and that's no longer the case. We could reduce the CPU usage a lot by not trying to update the policy when
not in accelerated compositing mode. We will need a solution for the accelerated compositing mode, though.

Fixes WPE/GTK+ unit test /webkit/WebKitWebContext/uri-scheme.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateCompositingPolicy): Return early when not in accelerated compositing mode.

Aug 21, 2018:

10:05 PM Changeset in webkit [235161] by yusukesuzuki@slowstart.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] HeapUtil should care about pointer overflow
https://bugs.webkit.org/show_bug.cgi?id=188740

Reviewed by Saam Barati.

pointer - sizeof(IndexingHeader) - 1 causes an undefined behavior if a pointer overflows.
For example, if pointer is nullptr, it causes pointer overflow. Instead of calculating this
with char* pointer, we cast it to uintptr_t temporarily. This issue is found by UBSan.

  • heap/HeapUtil.h:

(JSC::HeapUtil::findGCObjectPointersForMarking):

10:02 PM Changeset in webkit [235160] by yusukesuzuki@slowstart.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Should not rotate constant with 64
https://bugs.webkit.org/show_bug.cgi?id=188556

Reviewed by Saam Barati.

To defend against JIT splaying, we rotate a constant with a randomly generated seed.
But if a seed becomes 64 or 0, the following code performs value << 64 or value >> 64
where value's type is uint64_t, and they cause undefined behaviors (UBs). This patch limits
the seed in the range of [1, 63] not to generate code causing UBs. This is found by UBSan.

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::generateRotationSeed):
(JSC::MacroAssembler::rotationBlindConstant):

9:58 PM Changeset in webkit [235159] by yusukesuzuki@slowstart.org
  • 20 edits
    7 adds in trunk

Support "name" option for dedicated workers
https://bugs.webkit.org/show_bug.cgi?id=188779

Reviewed by Joseph Pecoraro.

LayoutTests/imported/w3c:

  • web-platform-tests/workers/interfaces.worker-expected.txt:
  • web-platform-tests/workers/name-property-expected.txt:

Source/WebCore:

This patch adds new Worker(url, { name: "Worker Name" }) option support[1].
This name can be accessible from self.name of DedicatedWorkerGlobalScope.
It is useful for debugging dedicated workers if the inspector can show the
names of the workers. This enhancement is tracked by [2].

[1]: https://github.com/whatwg/html/issues/2477
[2]: https://bugs.webkit.org/show_bug.cgi?id=164678

Tests: http/wpt/workers/name-property-enhanced.html

http/wpt/workers/name-property-no-name.html

  • workers/DedicatedWorkerGlobalScope.cpp:

(WebCore::DedicatedWorkerGlobalScope::create):
(WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):
Hold name member.

  • workers/DedicatedWorkerGlobalScope.h:
  • workers/DedicatedWorkerGlobalScope.idl:

Add name attribute.

  • workers/DedicatedWorkerThread.cpp:

(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
(WebCore::DedicatedWorkerThread::createWorkerGlobalScope):

  • workers/DedicatedWorkerThread.h:
  • workers/Worker.cpp:

(WebCore::Worker::Worker):
(WebCore::Worker::create):
(WebCore::Worker::notifyFinished):

  • workers/Worker.h:
  • workers/Worker.idl:

Add WorkerOptions for dedicated worker creation.

  • workers/WorkerGlobalScopeProxy.h:
  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):

  • workers/WorkerMessagingProxy.h:
  • workers/WorkerThread.cpp:

(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
Isolate copy the given name to pass the worker thread.

(WebCore::WorkerThread::WorkerThread):
(WebCore::WorkerThread::workerThread):

  • workers/WorkerThread.h:
  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::ServiceWorkerThread):
(WebCore::ServiceWorkerThread::createWorkerGlobalScope):

  • workers/service/context/ServiceWorkerThread.h:

LayoutTests:

  • http/wpt/workers/name-property-enhanced-expected.txt: Added.
  • http/wpt/workers/name-property-enhanced.html: Added.
  • http/wpt/workers/name-property-no-name-expected.txt: Added.
  • http/wpt/workers/name-property-no-name.html: Added.
  • http/wpt/workers/support/name.js: Added.

(test):

  • http/wpt/workers/support/no-name.js: Added.

(test):

9:41 PM Changeset in webkit [235158] by rniwa@webkit.org
  • 23 edits in trunk/Source

Replace booleans for modifier keys in UIEventWithKeyState with OptionSet<Modifier>
https://bugs.webkit.org/show_bug.cgi?id=188777

Reviewed by Simon Fraser.

Source/WebCore:

Replaced boolean arguments and instance variables for modifier keys (ctrl, alt, shift, and meta keys) in
UIEventWithKeyState with OptionSet<Modifier> and isSimulated boolean in MouseRelatedEvent with IsSimulated
enum class.

Also made movementDelta always compiled instead of only when ENABLE(POINTER_LOCK) to simplify the code.

No new tests since there should be no observable behavioral change.

  • dom/Element.cpp:

(WebCore::Element::dispatchMouseEvent):

  • dom/KeyboardEvent.cpp:

(WebCore::KeyboardEvent::KeyboardEvent):
(WebCore::KeyboardEvent::initKeyboardEvent): Call setModifierKeys.

  • dom/MouseEvent.cpp:

(WebCore::MouseEvent::create):
(WebCore::MouseEvent::MouseEvent):
(WebCore::MouseEvent::initMouseEvent): Ditto.

  • dom/MouseEvent.h:
  • dom/MouseRelatedEvent.cpp:

(WebCore::MouseRelatedEvent::MouseRelatedEvent): Added a new variant which takes the minimum arguments
for gesture & touch events. In those events, detail is always set to 0, movementDelta is always set to 0,0,
and they are never simulated.

  • dom/MouseRelatedEvent.h:

(WebCore::MouseRelatedEvent::IsSimulated): Added.

  • dom/SimulatedClick.cpp:

(WebCore::SimulatedMouseEvent::SimulatedMouseEvent): Get OptionSet<Modifier> out of the underlying event
instead of manually setting each key state. This code now preserves the state of caps lock and alt-graph
keys but this is not observable because we have yet to implement getModifierState on MouseEvent.
(WebCore::SimulatedMouseEvent::modifiersFromUnderlyingEvent): Added.

  • dom/TouchEvent.cpp:

(WebCore::TouchEvent::TouchEvent):

  • dom/TouchEvent.h:
  • dom/UIEventWithKeyState.h:

(WebCore::UIEventWithKeyState::Modifier): Alias to PlatformEvent::Modifier.
(WebCore::UIEventWithKeyState::ctrlKey const): Updated to use m_modifiers.
(WebCore::UIEventWithKeyState::shiftKey const): Ditto.
(WebCore::UIEventWithKeyState::altKey const): Ditto.
(WebCore::UIEventWithKeyState::metaKey const): Ditto.
(WebCore::UIEventWithKeyState::altGraphKey const): Ditto.
(WebCore::UIEventWithKeyState::capsLockKey const): Ditto.
(WebCore::UIEventWithKeyState::modifierKeys): Added.
(WebCore::UIEventWithKeyState::UIEventWithKeyState): Now takes OptionSet<Modifier>.
(WebCore::UIEventWithKeyState::setModifierKeys): Added. Used by init*Event functions in subclasses. Note that
these functions preseve the states of alt-graph and caps lock keys to match the existing behaviors in this
cleanup patch but they don't match behaviors of Chrome or Firefox.
(WebCore::UIEventWithKeyState::modifiersFromInitializer): Added.

  • dom/WheelEvent.cpp:

(WebCore::WheelEvent::WheelEvent): Simulated::No corresponds to the last boolean being false.

  • page/EventHandler.cpp:

(WebCore::EventHandler::dispatchDragEvent):
(WebCore::EventHandler::handleTouchEvent):

  • platform/PlatformEvent.h:

(WebCore::PlatformEvent::Modifier): Added AltGraphKey.

  • platform/mac/PlatformEventFactoryMac.h:

(WebCore::modifiersForEvent): Exported to be used in [WebPDFView PDFViewWillClickOnLink:withURL:].

  • platform/mac/PlatformEventFactoryMac.mm:

(WebCore::modifiersForEvent):

  • testing/Internals.cpp:

(WebCore::Internals::accessKeyModifiers const):

Source/WebKit:

Added two FIXMEs.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::navigateToPDFLinkWithSimulatedClick):

Source/WebKitLegacy/ios:

Create MouseEvent::create with IsSimulated set to Yes; correspoding to the last argument
being "true" before the code change.

  • WebView/WebPDFViewPlaceholder.mm:

(-[WebPDFViewPlaceholder simulateClickOnLinkToURL:]):

Source/WebKitLegacy/mac:

Create MouseEvent::create with IsSimulated set to Yes; correspoding to the last argument
being "true" before the code change.

Use modifiersForEvent to convert [nsEvent modifierFlags] to OptionSet<Modifier>.

  • WebView/WebPDFView.mm:

(-[WebPDFView PDFViewWillClickOnLink:withURL:]):

8:51 PM Changeset in webkit [235157] by achristensen@apple.com
  • 8 edits
    1 copy in trunk

Roll out r235139 and r235146
https://bugs.webkit.org/show_bug.cgi?id=188805

Source/WebKit:

It turns out shouldKeepCurrentBackForwardListItemInList has one use left.

  • UIProcess/API/APILoaderClient.h:

(API::LoaderClient::shouldKeepCurrentBackForwardListItemInList):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageLoaderClient):

  • UIProcess/WebBackForwardList.cpp:

(WebKit::WebBackForwardList::addItem):
(WebKit::WebBackForwardList::goToItem):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::shouldKeepCurrentBackForwardListItemInList):

  • UIProcess/WebPageProxy.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/ShouldKeepCurrentBackForwardListItemInList.cpp:
8:21 PM Changeset in webkit [235156] by Wenson Hsieh
  • 20 edits in trunk

[Attachment Support] Remove _WKAttachments and notify the UI client upon mainframe navigation
https://bugs.webkit.org/show_bug.cgi?id=188715
<rdar://problem/43541790>

Reviewed by Tim Horton.

Source/WebCore:

Rename didInsertAttachment to didInsertAttachmentWithIdentifier. See WebKit ChangeLog for more detail.

Tests: WKAttachmentTests.InvalidateAttachmentsAfterMainFrameNavigation

WKAttachmentTests.InvalidateAttachmentsAfterWebProcessTermination

  • editing/Editor.cpp:

(WebCore::Editor::notifyClientOfAttachmentUpdates):

  • page/EditorClient.h:

(WebCore::EditorClient::didInsertAttachmentWithIdentifier):
(WebCore::EditorClient::didRemoveAttachmentWithIdentifier):
(WebCore::EditorClient::didInsertAttachment): Deleted.
(WebCore::EditorClient::didRemoveAttachment): Deleted.

Source/WebKit:

Adds logic for invalidating Attachment objects upon mainframe navigation, or upon web content process
termination. An invalid Attachment's wrapper may still be retained by a UI client; however, calls to -info and
other SPI methods will either return nil or immediately invoke their completion handlers with a nil result and
an NSError. See changes below for more detail.

This patch also takes some extra measures to avoid sending redundant or unexpected removal updates to the UI
client upon invalidating all Attachments.

See Tools changes for new API tests.

  • UIProcess/API/APIAttachment.cpp:

(API::Attachment::invalidate):

  • UIProcess/API/APIAttachment.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _didInsertAttachment:withSource:]):
(-[WKWebView _didRemoveAttachment:]):

Refactor these methods to take references to the API::Attachment that is being inserted or removed, rather than
take attachment identifiers. This allows us to keep logic for setting the InsertionState of Attachment objects
in WebPageProxy, rather than in platform code.

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/API/Cocoa/_WKAttachment.h:
  • UIProcess/API/Cocoa/_WKAttachment.mm:

(-[_WKAttachment info]):

If the attachment object is invalid, return nil.

(-[_WKAttachment setDisplayOptions:completion:]):
(-[_WKAttachment setFileWrapper:contentType:completion:]):

If the attachment object is invalid, immediately invoke the completion block with an error.

(-[_WKAttachment isConnected]):

Add a new readonly property for a client to easily determine whether a _WKAttachment is connected to the
document, without having to maintain the current set of connected attachment objects by observing insertion and
removal callbacks.

  • UIProcess/Cocoa/PageClientImplCocoa.h:
  • UIProcess/Cocoa/PageClientImplCocoa.mm:

(WebKit::PageClientImplCocoa::didInsertAttachment):
(WebKit::PageClientImplCocoa::didRemoveAttachment):

Make these take API::Attachment&s rather than identifier strings.

  • UIProcess/PageClient.h:

(WebKit::PageClient::didInsertAttachment):
(WebKit::PageClient::didRemoveAttachment):

Also make these take API::Attachment&s rather than identifier strings.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
(WebKit::WebPageProxy::invalidateAllAttachments):

Introduce a helper function that invalidates all Attachments and notifies the UI client if needed. This is
invoked upon mainframe navigation, and when the web content process terminates.

(WebKit::WebPageProxy::platformRegisterAttachment):
(WebKit::WebPageProxy::didInsertAttachmentWithIdentifier):
(WebKit::WebPageProxy::didRemoveAttachmentWithIdentifier):
(WebKit::WebPageProxy::didInsertAttachment):
(WebKit::WebPageProxy::didRemoveAttachment):

Keep track of whether we've notified the UI client that an Attachment has been inserted into the document. This
allows us to send removal updates to the UI client only for Attachments that are currently in the document, from
the perspective of the UI client, and allows us to avoid sending extra removal updates in
invalidateAllAttachments for Attachments that either have already been removed, or Attachments which we haven't
inserted yet.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • WebProcess/WebCoreSupport/WebEditorClient.cpp:

(WebKit::WebEditorClient::didInsertAttachmentWithIdentifier):
(WebKit::WebEditorClient::didRemoveAttachmentWithIdentifier):
(WebKit::WebEditorClient::didInsertAttachment): Deleted.
(WebKit::WebEditorClient::didRemoveAttachment): Deleted.

  • WebProcess/WebCoreSupport/WebEditorClient.h:

Rename did{Insert|Remove}Attachment to did{Insert|Remove}AttachmentWithIdentifier.

Tools:

Adds API tests to exercises cases where (1) the UI client is notified of attachment removal upon mainframe
navigation, and (2) the UI client is notified of attachment removal upon web content process termination.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(TestWebKitAPI::ObserveAttachmentUpdatesForScope::expectAttachmentUpdates):
(TestWebKitAPI::TEST):

7:22 PM Changeset in webkit [235155] by Ryan Haddad
  • 20 edits
    3 deletes in trunk

Unreviewed, rolling out r235128.

The test added with this change is frequently failing.

Reverted changeset:

"Support "name" option for dedicated workers"
https://bugs.webkit.org/show_bug.cgi?id=188779
https://trac.webkit.org/changeset/235128

7:04 PM Changeset in webkit [235154] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore/PAL

Unreviewed macOS Mojave build fix after r235125.

  • pal/spi/cg/CoreGraphicsSPI.h:
6:41 PM Changeset in webkit [235153] by Megan Gardner
  • 5 edits in trunk

Change Selection modification to not snap the grabber when selecting above or below the selection anchor
https://bugs.webkit.org/show_bug.cgi?id=188826

Reviewed by Tim Horton.

Selecting single lines is sometimes difficult because we currently snap selections to single
characters if we move past the position of the other anchor in our selection. This patch changes
this behaviour to reflect the behaviour in the rest of this system, which snaps the selection
to the position on the line of the other anchor, rather than snapping it all the way a single
Source/WebKit:

character.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::rangeForPointInRootViewCoordinates):

LayoutTests:

character. This updates the tests to reflect this new behaviour.

  • fast/events/touch/ios/long-press-then-drag-down-to-change-selected-text.html:
  • fast/events/touch/ios/long-press-then-drag-up-to-change-selected-text.html:
6:24 PM Changeset in webkit [235152] by commit-queue@webkit.org
  • 22 edits in trunk/Source

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

"It revealed bugs in Blob code as well as regressed JS
performance tests" (Requested by saamyjoon on #webkit).

Reverted changeset:

"JSRunLoopTimer may run part of a member function after it's
destroyed"
https://bugs.webkit.org/show_bug.cgi?id=188426
https://trac.webkit.org/changeset/235107

6:08 PM Changeset in webkit [235151] by Matt Baker
  • 7 edits
    1 delete in trunk/Source/WebInspectorUI

Web Inspector: Remove TreeOutlineDataGridSynchronizer
https://bugs.webkit.org/show_bug.cgi?id=188449
<rdar://problem/43107980>

Reviewed by Devin Rousso.

  • UserInterface/Views/HeapAllocationsTimelineView.js:

(WI.HeapAllocationsTimelineView.prototype.layout):

  • UserInterface/Views/LayoutTimelineView.js:

(WI.LayoutTimelineView.prototype._processPendingRecords):

  • UserInterface/Views/NetworkTimelineView.js:

(WI.NetworkTimelineView.prototype._processPendingRecords):

  • UserInterface/Views/RenderingFrameTimelineView.js:

(WI.RenderingFrameTimelineView.prototype._processPendingRecords):
(WI.RenderingFrameTimelineView.prototype.dataGridNodeForTreeElement): Deleted.

  • UserInterface/Views/ScriptDetailsTimelineView.js:

(WI.ScriptDetailsTimelineView.prototype._processPendingRecords):

  • UserInterface/Views/TimelineDataGrid.js:

(WI.TimelineDataGrid):
(WI.TimelineDataGrid.prototype.reset):
(WI.TimelineDataGrid.prototype.shown):
(WI.TimelineDataGrid.prototype.addRowInSortOrder):
(WI.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
(WI.TimelineDataGrid.prototype._sort):
(WI.TimelineDataGrid.prototype.treeElementForDataGridNode): Deleted.
(WI.TimelineDataGrid.prototype.dataGridNodeForTreeElement): Deleted.

  • UserInterface/Views/TreeOutlineDataGridSynchronizer.js: Removed.
5:49 PM Changeset in webkit [235150] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit

Cleanup: Remove unused file-local static variable from TextCheckerIOS.mm
https://bugs.webkit.org/show_bug.cgi?id=188818

Reviewed by Wenson Hsieh.

  • UIProcess/ios/TextCheckerIOS.mm:

(WebKit::TextChecker::isSmartInsertDeleteEnabled):

5:45 PM Changeset in webkit [235149] by dbates@webkit.org
  • 3 edits in trunk/Source/WebKit

[iOS][WK2] Misspelled words are not underlined
https://bugs.webkit.org/show_bug.cgi?id=188800
<rdar://problem/34811332>

Reviewed by Wenson Hsieh.

Implement enough of TextChecker for iOS to compute the list of misspelled words in a
paragraph and advertise support for continuous spell checking. The WebCore editing
machinery queries TextChecker for the list of the misspelled words, creating document
markers that demarcate the misspelled words. When we paint a line of text we paint
the spelling correction dots under each misspelled word.

On iOS we make use of UITextChecker to perform spell checking of a string. We maintain
a side table that maps a "spell document tag" to a UITextChecker* to conform to the
shape of the TextChecker interface.

  • Platform/spi/ios/UIKitSPI.h: Forward declare some SPI.
  • UIProcess/ios/TextCheckerIOS.mm:

(WebKit::mutableState): Added.
(WebKit::TextChecker::state): Turns around and returns mutableState().
(WebKit::TextChecker::isContinuousSpellCheckingAllowed): Returns true if we are building
with USE(UNIFIED_TEXT_CHECKING). Otherwise, do what we do now.
(WebKit::TextChecker::setContinuousSpellCheckingEnabled): Update state.
(WebKit::TextChecker::continuousSpellCheckingEnabledStateChanged): Ditto.
(WebKit::spellDocumentTagMap): Returns HashMap that maps a "spell document tag" (int64_t) to
a RetainPtr<UITextChecker>>.
(WebKit::TextChecker::uniqueSpellDocumentTag): Generates a unique identifier for the page
this text checker is associated with.
(WebKit::TextChecker::closeSpellDocumentWithTag): Removes the entry for the specified identifier
from the HashMap.
(WebKit::textCheckerFor): Query the HashMap for the UITextChecker for the specified spell
document tag, if it exists. Otherwise, create a new UITextChecker and add a new map entry
that associates it with the specified spell document tag.
(WebKit::TextChecker::checkTextOfParagraph): Spell check the specified string and return a list
that represents the misspelled words.
(WebKit::TextChecker::checkSpellingOfString): Added a comment to explain that iOS does not implement
this function and instead implements checkTextOfParagraph().
(WebKit::TextChecker::checkGrammarOfString): Ditto.

4:59 PM Changeset in webkit [235148] by achristensen@apple.com
  • 5 edits in trunk

Transition ResizeReversePaginatedWebView API test from WKPageLoaderClient to WKPageNavigationClient
https://bugs.webkit.org/show_bug.cgi?id=188821

Reviewed by Simon Fraser.

Source/WebKit:

Add some more values to WKPageRenderingProgressEvents which were already supported by _WKRenderingProgressEvents and WKLayoutMilestones.

  • UIProcess/API/C/WKPageRenderingProgressEvents.h:
  • UIProcess/API/C/WKPageRenderingProgressEventsInternal.h:

(pageRenderingProgressEvents):

Tools:

  • TestWebKitAPI/Tests/WebKit/ResizeReversePaginatedWebView.cpp:

(TestWebKitAPI::didLayout):
(TestWebKitAPI::TEST):

4:58 PM Changeset in webkit [235147] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: ⌘G does not while find banner is focused
https://bugs.webkit.org/show_bug.cgi?id=188815
<rdar://problem/43577158>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2018-08-21
Reviewed by Matt Baker.

  • UserInterface/Base/Main.js:

Allow an <input> element to be the current focus element, which is what will
our global KeyboardShortcut handlers will interact with. Also make sure
that showing the find banner for the first time still focuses it.

4:56 PM WebKitGTK/2.22.x edited by Michael Catanzaro
(diff)
4:50 PM Changeset in webkit [235146] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix API tests after r235139
https://bugs.webkit.org/show_bug.cgi?id=188805

Apparently the call to didChangeBackForwardList with no changes was observable. We should rename, but I'm restoring existing behavior for now.

  • UIProcess/WebBackForwardList.cpp:

(WebKit::WebBackForwardList::goToItem):

4:32 PM Changeset in webkit [235145] by wilander@apple.com
  • 2 edits in trunk/Source/WebKit

Storage Access API: The call to ResourceLoadStatisticsMemoryStore::grantStorageAccessInternal() should send eTLD+1s, not full host names
https://bugs.webkit.org/show_bug.cgi?id=188783
<rdar://problem/43559215>

Reviewed by Alex Christensen.

  • UIProcess/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::grantStorageAccess):

Now sends the eTLD+1 for the top frame and sub frame.

4:28 PM Changeset in webkit [235144] by mmaxfield@apple.com
  • 7 edits in trunk/Tools

[WHLSL] Call expressions shouldn't have type arguments
https://bugs.webkit.org/show_bug.cgi?id=188770

Reviewed by Filip Pizlo.

Call expressions only had type arguments for casts, becuase native types can have type arguments.
However, instead of putting those type arguments on the CallExpression, we should parse the casted
type as a real type and not as an identifier, which puts the type arguments in the TypeRef.

Test: casts

  • WebGPUShadingLanguageRI/CallExpression.js:

(CallExpression):
(CallExpression.prototype.get name):
(CallExpression.resolve):
(CallExpression.prototype.get typeArguments): Deleted.
(CallExpression.prototype.becomeCast): Deleted.

  • WebGPUShadingLanguageRI/NameResolver.js:

(NameResolver.prototype.visitCallExpression):

  • WebGPUShadingLanguageRI/Parse.js:

(parseConstexpr):
(parseTypeDef):
(parseLeftOperatorCall):
(parseCallExpression.let.parseArguments):
(parsePossiblePrefix):
(parsePossibleRelationalEquality):
(parseLeftLogicalExpression):
(parseIfStatement):
(parseWhile):
(parseFor):
(parseDo):

  • WebGPUShadingLanguageRI/RemoveTypeArguments.js:
  • WebGPUShadingLanguageRI/Rewriter.js:

(Rewriter.prototype.visitCallExpression):

3:41 PM Changeset in webkit [235143] by Megan Gardner
  • 4 edits in trunk/Source

Use VisiblePosition to calculate selection ranges
https://bugs.webkit.org/show_bug.cgi?id=188767
<rdar://problem/43577166>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Exposing comparePositions.

  • editing/Editing.h:

Source/WebKit:

Switches to using VisiblePosition, instead of Position. This code used to use VisiblePosiiton,
but it has been changed a lot lately, and using Position causes issues with next and previous
when trying to snap a selection. VisiblePosition gives us the correct information, and does not
result in collapsed ranges.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::rangeForPointInRootViewCoordinates):

3:08 PM Changeset in webkit [235142] by Devin Rousso
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r235095): duplicate actions existing in WI.CanvasSidebarPanel
https://bugs.webkit.org/show_bug.cgi?id=188808

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/CanvasSidebarPanel.js:

(WI.CanvasSidebarPanel.prototype._recordingChanged):
Check that the WI.RecordingAction is not already represented in the WI.TreeOutline
before adding it.

  • UserInterface/Views/CanvasSidebarPanel.css:

(.sidebar > .panel.navigation.canvas > .content > .recording-content > .tree-outline .item.processing .subtitle > progress):
Drive-by: vertically center the <progress> shown for WI.RecordingFrame during processing.

2:22 PM Changeset in webkit [235141] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Canvas: provide default icon for all actions
https://bugs.webkit.org/show_bug.cgi?id=188807

Reviewed by Matt Baker.

  • UserInterface/Views/RecordingActionTreeElement.css:

(.item.action > .icon):
(.item.action.initial-state > .icon): Deleted.

2:17 PM Changeset in webkit [235140] by achristensen@apple.com
  • 3 edits
    1 delete in trunk/Tools

Translate WebKit.LimitTitleSize API test into ObjC
https://bugs.webkit.org/show_bug.cgi?id=188810

Reviewed by Andy Estes.

It uses WKPageLoaderClient.didReceiveTitleForFrame which has been replaced by KVO.
I'm translating the test into ObjC rather than introducing a new callback to WKPageNavigationClient.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/LimitTitleSize.cpp: Removed.
  • TestWebKitAPI/Tests/mac/LimitTitleSize.mm:

(TEST):
(-[LimitTitleSizeTestObserver observeValueForKeyPath:ofObject:change:context:]):
(TestWebKitAPI::TEST): Deleted.

2:14 PM Changeset in webkit [235139] by achristensen@apple.com
  • 8 edits
    1 delete in trunk

Remove unused shouldKeepCurrentBackForwardListItemInList check
https://bugs.webkit.org/show_bug.cgi?id=188805

Reviewed by Andy Estes.

Source/WebKit:

The check was only done in WKPageLoaderClient, and nobody implements the check.
It was not needed to put in WKPageNavigationClient or WKNavigationDelegate, so let's remove it!
This removes the unused ability to go back and remove the current back/forward list item.

  • UIProcess/API/APILoaderClient.h:

(API::LoaderClient::didChangeBackForwardList):
(API::LoaderClient::shouldKeepCurrentBackForwardListItemInList): Deleted.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageLoaderClient):

  • UIProcess/WebBackForwardList.cpp:

(WebKit::WebBackForwardList::addItem):
(WebKit::WebBackForwardList::goToItem):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::shouldKeepCurrentBackForwardListItemInList): Deleted.

  • UIProcess/WebPageProxy.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/ShouldKeepCurrentBackForwardListItemInList.cpp: Removed.
2:11 PM Changeset in webkit [235138] by achristensen@apple.com
  • 4 edits in trunk/Tools

Transition more API tests from WKPageLoaderClient to WKPageNavigationClient
https://bugs.webkit.org/show_bug.cgi?id=188813

Reviewed by Andy Estes.

  • TestWebKitAPI/Tests/WebKit/NewFirstVisuallyNonEmptyLayout.cpp:

(TestWebKitAPI::didLayout):
(TestWebKitAPI::setPageLoaderClient):

  • TestWebKitAPI/Tests/WebKit/NewFirstVisuallyNonEmptyLayoutFails.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::didLayout):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/NewFirstVisuallyNonEmptyLayoutForImages.cpp:

(TestWebKitAPI::didLayout):
(TestWebKitAPI::setPageLoaderClient):

2:10 PM Changeset in webkit [235137] by Wenson Hsieh
  • 50 edits
    1 move in trunk

[Attachment Support] Augment _WKAttachment SPI to handle NSFileWrappers in addition to NSData
https://bugs.webkit.org/show_bug.cgi?id=188496
<rdar://problem/43216836>

Reviewed by Tim Horton.

Source/WebCore:

Refactors logic around HTMLAttachmentElement and pasteboard reading helpers, in support of moving the data
backing for attachment elements to the client layer, instead of keeping it in the attachment element's File.
Augmented existing API tests in WKAttachmentTests, and also added a new API test (see Tools for more detail).

  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::didInsertAttachmentElement):

Notify the client layer when a newly inserted attachment element's identifier has been updated to avoid
colliding with the identifier of an existing attachment element. This can happen if, for instance, one or more
attachments are copied and pasted within the same document.

  • editing/Editor.cpp:

(WebCore::Editor::registerAttachmentIdentifier):
(WebCore::Editor::cloneAttachmentData):

Add new helper functions to notify the client when the attachment identifier to data mapping needs to be
updated. This can happen in three ways: (1) an attachment is created with raw data, or (2) an attachment is
created with a file path, or (3) the unique identifier for an attachment element has been reassigned. These
correspond to the two versions of registerAttachmentIdentifier, and cloneAttachmentData, respectively.

(WebCore::EditorClient::supportsClientSideAttachmentData const):

Add a new EditorClient hook to determine whether client-side attachment data management is supported. Currently,
this only returns true for WebKit2. If this flag is set to true, we register attachment identifiers and don't
create a new File object for the attachment element; otherwise, fall back to creating and setting a File for the
new attachment element.

(WebCore::Editor::insertAttachment):
(WebCore::Editor::insertAttachmentFromFile): Deleted.

Adjust logic when inserting an attachment; we now only need to update the attributes of the attachment element
with metadata from the client layer.

  • editing/Editor.h:
  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::supportsClientSideAttachmentData):
(WebCore::createFragmentForImageAttachment):

Notify the client when creating an attachment element from image data on the pasteboard.

(WebCore::replaceRichContentWithAttachments):

Refactor this helper function to no longer connect attachment elements to File objects created from
subresources. Instead, just update each attachment element's attributes using information about the subresource,
and then notify the client about the new attachment data and attachment identifier.

(WebCore::createFragmentAndAddResources):
(WebCore::sanitizeMarkupWithArchive):

Plumb the current WebContentReader's Frame& to each of these helpers, so that it can call out to the client.

(WebCore::WebContentReader::readWebArchive):
(WebCore::WebContentMarkupReader::readWebArchive):
(WebCore::WebContentReader::readImage):
(WebCore::WebContentReader::readFilePaths):

Notify the client when creating an attachment from the path of a dropped file.

  • html/AttachmentTypes.h:

Remove AttachmentInfo. This is no longer necessary because we don't need to request attachment data from the web
process anymore.

  • html/HTMLAttachmentElement.cpp:

(WebCore::HTMLAttachmentElement::ensureUniqueIdentifier):

Add a helper function on the attachment element to create and return a unique identifier if needed.

(WebCore::HTMLAttachmentElement::updateAttributes):

Add a helper method to update the displayed element attributes (type, title and subtitle) or an attachment.

(WebCore::AttachmentDataReader::create): Deleted.
(WebCore::AttachmentDataReader::AttachmentDataReader): Deleted.

Remove AttachmentDataReader. This helper class was only used to load attachment data when requesting attachment
information in the client, but this is now obviated by moving attachment data to the client layer.

(WebCore::HTMLAttachmentElement::updateFileWithData): Deleted.
(WebCore::HTMLAttachmentElement::requestInfo): Deleted.
(WebCore::HTMLAttachmentElement::destroyReader): Deleted.
(WebCore::AttachmentDataReader::~AttachmentDataReader): Deleted.
(WebCore::AttachmentDataReader::didFinishLoading): Deleted.
(WebCore::AttachmentDataReader::didFail): Deleted.
(WebCore::AttachmentDataReader::invokeCallbackAndFinishReading): Deleted.

  • html/HTMLAttachmentElement.h:
  • page/DragClient.h:
  • page/DragController.cpp:

(WebCore::DragController::startDrag):
(WebCore::DragController::doSystemDrag):
(WebCore::DragController::promisedAttachmentInfo):

Allow dragging an attachment (even if it does not have a file) as long as it has a unique identifier and a
content type.

(WebCore::DragController::promisedBlobInfo): Deleted.

  • page/DragController.h:
  • page/EditorClient.h:

(WebCore::EditorClient::registerAttachmentIdentifier):
(WebCore::EditorClient::cloneAttachmentData):

  • platform/DragItem.h:

(WebCore::DragItem::encode const):
(WebCore::DragItem::decode):

  • platform/PromisedAttachmentInfo.h: Renamed from Source/WebCore/platform/PromisedBlobInfo.h.

Add an attachment identifier to PromisedBlobInfo. Additionally, rename PromisedBlobInfo to
PromisedAttachmentInfo, since it is currently exclusively used to attachment element data to the pasteboard.
In the future, this could be renamed to something more general (e.g. PromisedPasteboardData), should we use this
mechanism to write data from other sources to the pasteboard.

(WebCore::PromisedAttachmentInfo::operator bool const):

Source/WebKit:

Adjusts WebKit's attachment editing SPI with the following modifications:

  • Deprecate -_insertAttachmentWithFilename:contentType:data:options:completion: in favor of

-_insertAttachmentWithFileWrapper:contentType:options:completion:.

  • Deprecate -requestInfo: and in favor of just -info.
  • Add a -fileWrapper property to _WKAttachmentInfo that returns an NSFileWrapper.
  • Remove some SPI methods that would otherwise be deprecated, but are not even necessary, since they're no

longer even used by Mail.

To make this possible, we refactor where and how attachment data is tracked. Currently, the data is stored in
the network process, and made accessible to the web process via blob URLs stored in the File object in the
attachment element. As such, requests from the UI process for attachment data would first be routed through the
web process to network process and back.

Instead, we now keep the relevant attachment data (in the form of NSFileWrapper on Cocoa platforms) in the UI
process, on API::Attachment. We additionally keep a map of attachment identifiers to API::Attachments, which
allows us to propagate the same _WKAttachment wrapper object to the SPI client for each uniquely identified
attachment element. This also has the benefit of allowing us to remove the asynchronous version of -requestInfo:
and replace it with just an info property.

Changes are covered by new and existing API tests.

  • PlatformMac.cmake:

Remove APIAttachment.cpp, now that APIAttachment.cpp is listed in Sources.txt.

  • Scripts/webkit/messages.py:
  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

Guard _WKAttachment creation with ENABLE_ATTACHMENT_ELEMENT.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<PromisedAttachmentInfo>::encode):
(IPC::ArgumentCoder<PromisedAttachmentInfo>::decode):
(IPC::ArgumentCoder<PromisedBlobInfo>::encode): Deleted.
(IPC::ArgumentCoder<PromisedBlobInfo>::decode): Deleted.
(IPC::ArgumentCoder<AttachmentInfo>::encode): Deleted.
(IPC::ArgumentCoder<AttachmentInfo>::decode): Deleted.

  • Shared/WebCoreArgumentCoders.h:

Continue removing encoding support for WebCore::AttachmentInfo. Additionally, rename PromisedBlobInfo to
PromisedAttachmentInfo.

  • Sources.txt:
  • SourcesCocoa.txt:

Move APIAttachment.cpp from the SourcesCocoa.txt to the platform-agnostic Sources.txt.

  • UIProcess/API/APIAttachment.cpp:

(API::Attachment::updateAttributes):

Rename setDataAndContentType to just updateAttributes; instead of sending data, only send the information needed
to update the presentational attributes of the attachment element.

(API::Attachment::requestInfo): Deleted.

Just call the completion handler with the result of self.info.

(API::Attachment::setDataAndContentType): Deleted.

  • UIProcess/API/APIAttachment.h:

Add additional attributes: a content type, a file path, and (on Cocoa platforms) an NSFileWrapper.

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

Remove -_webView:didInsertAttachment:, since this is unused by any client currently, and is superceded by
-_webView:didInsertAttachment:withSource:.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _didInsertAttachment:withSource:]):
(-[WKWebView _didRemoveAttachment:]):

Look up the API::Attachment corresponding to the identifier, and send its wrapper object to the client.

(-[WKWebView _insertAttachmentWithFilename:contentType:data:options:completion:]):
(-[WKWebView _insertAttachmentWithFileWrapper:contentType:options:completion:]):

Add a way to insert an attachment using NSFileWrapper, and reimplement _insertAttachmentWithFilename: using it.

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

(-[_WKAttachmentInfo initWithFileWrapper:filePath:contentType:]):
(-[_WKAttachmentInfo data]):
(-[_WKAttachmentInfo name]):
(isDeclaredOrDynamicTypeIdentifier):
(-[_WKAttachmentInfo _typeIdentifierFromPathExtension]):
(-[_WKAttachmentInfo contentType]):
(-[_WKAttachmentInfo mimeType]):
(-[_WKAttachmentInfo utiType]):
(-[_WKAttachmentInfo fileWrapper]):
(-[_WKAttachment info]):
(-[_WKAttachment requestInfo:]):

Add a property on _WKAttachment to retrieve a _WKAttachmentInfo (a snapshot of the current state of the
attachment, along with the NSFileWrapper). Reimplement requestInfo using this property.

(-[_WKAttachment setFileWrapper:contentType:completion:]):
(-[_WKAttachment setData:newContentType:newFilename:completion:]):

Reimplemented by calling -setFileWrapper:contentType:completion: with an NSFileWrapper created using the given
data. Additionally, create and associate the unique identifier with an API::Attachment right away.

(-[_WKAttachment uniqueIdentifier]):
(-[_WKAttachment description]):
(-[_WKAttachmentInfo initWithInfo:]): Deleted.
(-[_WKAttachmentInfo fileLoadingError]): Deleted.
(-[_WKAttachment isEqual:]): Deleted.
(-[_WKAttachment hash]): Deleted.

There's no longer any point to implementing these methods, since the SPI client is now guaranteed a unique
mapping of _WKAttachments to attachment elements in the document.

  • UIProcess/Cocoa/PageClientImplCocoa.mm:

(WebKit::PageClientImplCocoa::didInsertAttachment):

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::platformRegisterAttachment):
(WebKit::WebPageProxy::platformCloneAttachment):

Extend the behavior of registering new attachment data on Cocoa platforms by additionally creating and setting
NSFileWrappers on the API::Attachment.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::resetStateAfterProcessExited):

Clear out the map of attachment identifiers to API::Attachments when the web content process is terminated.

(WebKit::WebPageProxy::attachmentForIdentifier const):

Helper function to look up an API::Attachment for the given attachment identifier. Returns null if the
attachment is not found, or the attachment identifier is invalid.

(WebKit::WebPageProxy::insertAttachment):
(WebKit::WebPageProxy::updateAttachmentAttributes):
(WebKit::WebPageProxy::registerAttachmentIdentifierFromData):
(WebKit::WebPageProxy::registerAttachmentIdentifierFromFilePath):
(WebKit::WebPageProxy::cloneAttachmentData):
(WebKit::WebPageProxy::platformRegisterAttachment):
(WebKit::WebPageProxy::platformCloneAttachment):
(WebKit::WebPageProxy::didInsertAttachment):

Create an entry in the attachment identifier to API::Attachment map when an attachment is inserted, if one does
not already exist. An attachment mapping would not exist only in the case where an attachment element was
created via bindings; in this case, the client wouldn't have access to an NSFileWrapper containing the contents
of the file; in the future, this can be improved by adding a mechanism to register an attachment element with
this data, but for now, this is unnecessary for Mail's purposes.

(WebKit::WebPageProxy::didRemoveAttachment):
(WebKit::WebPageProxy::ensureAttachment):

Ensures an attachment identifier to API::Attachment mapping.

(WebKit::WebPageProxy::attachmentInfoCallback): Deleted.
(WebKit::WebPageProxy::requestAttachmentInfo): Deleted.
(WebKit::WebPageProxy::setAttachmentDataAndContentType): Deleted.

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

(-[WKContentView _startDrag:item:]):
(-[WKContentView _prepareToDragPromisedAttachment:]):
(-[WKContentView _prepareToDragPromisedBlob:]): Deleted.

Reimplement the way promised attachment data is delivered to the destination when an attachment element is
dragged. Instead of relying on the blob URL of the File on the attachment element, first try to find an API
Attachment object corresponding to the unique identifier of the dragged attachment, and use its NSFileWrapper to
deliver promised data to the destination file URL. The blob URL codepath still exists in the case where script
specifies the dragged attachment's File.

  • UIProcess/mac/PageClientImplMac.h:
  • UIProcess/mac/PageClientImplMac.mm:
  • WebProcess/WebCoreSupport/WebEditorClient.cpp:

(WebKit::WebEditorClient::registerAttachmentIdentifier):
(WebKit::WebEditorClient::cloneAttachmentData):

  • WebProcess/WebCoreSupport/WebEditorClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::insertAttachment):
(WebKit::WebPage::updateAttachmentAttributes):
(WebKit::WebPage::requestAttachmentInfo): Deleted.
(WebKit::WebPage::setAttachmentDataAndContentType): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

More renaming and IPC message plumbing.

Source/WebKitLegacy/win:

Adjust for changing PromisedAttachmentInfo.h to forward declare WebCore::SharedBuffer rather than include the
header directly.

  • WebCoreSupport/WebDragClient.cpp:

Tools:

Adjusts existing attachment API tests. See below for more detail.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(-[TestWKWebView synchronouslyInsertAttachmentWithFileWrapper:contentType:]):
(-[TestWKWebView synchronouslyInsertAttachmentWithFilename:contentType:data:]):
(-[_WKAttachment synchronouslySetData:newContentType:newFilename:error:]):
(-[_WKAttachment synchronouslySetFileWrapper:newContentType:error:]):

Move off of deprecated attachment SPI, and add new helper functions to synchronously insert a new attachment or
update an existing attachment with a file wrapper.

(-[_WKAttachment expectRequestedDataToBe:]):
(TestWebKitAPI::TEST):

Add a new test to verify that file-URL-backed NSFileWrappers can be used to insert and update attachment data.
Also augment an existing test to check that an attachment element which has been copied and pasted within the
same document has a different _WKAttachment wrapper object than its duplicate, but both _WKAttachments are
backed by the same NSFileWrapper that was originally used to insert the attachment.

Additionally, add another macOS test to verify that dropping promised files in an attachment-element-enabled
editable area inserts attachment elements into the document and notifies the UI client with the inserted
attachment data.

(-[_WKAttachment synchronouslyRequestInfo:]): Deleted.
(-[_WKAttachment synchronouslyRequestData:]): Deleted.

  • TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:

(-[DragAndDropSimulator _webView:didInsertAttachment:withSource:]):

Move off of -_webView:didInsertAttachment:.

(-[DragAndDropSimulator _webView:didInsertAttachment:]): Deleted.

2:08 PM Changeset in webkit [235136] by ddkilzer@apple.com
  • 2 edits in trunk/Tools

sort-Xcode-project-file: top-level files and folders are sorted unintentionally when mainGroup has no name
<https://webkit.org/b/188755>

Reviewed by Andy Estes.

  • Scripts/sort-Xcode-project-file: Fix regular expression to

make mainGroup name optional.

2:04 PM Changeset in webkit [235135] by youenn@apple.com
  • 103 edits
    1045 adds in trunk/Source/ThirdParty/libwebrtc

Update some libwebrtc third party libraries as per libwebrtc 984f1a80c0c
https://bugs.webkit.org/show_bug.cgi?id=188751

Patch by Youenn Fablet <youenn@apple.com> on 2018-08-21
Reviewed by Eric Carlson.

Added rnnoise and abseil which will be used by latest libwebrtc.
Updated libyuv as it is also required by latest libwebrtc.

  • Source/third_party/abseil-cpp: Added.
  • Source/third_party/libyuv: Refreshed.
  • Source/third_party/rnnoise: Added.
2:00 PM Changeset in webkit [235134] by commit-queue@webkit.org
  • 1 edit
    1 add in trunk/Source/WebInspectorUI

Web Inspector: Rulers.svg is missing
https://bugs.webkit.org/show_bug.cgi?id=188806
<rdar://problem/43574273>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2018-08-21
Reviewed by Devin Rousso.

  • UserInterface/Images/Rulers.svg: Added.
1:38 PM Changeset in webkit [235133] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Increment NetworkCache::Storage::lastStableVersion after r233742
https://bugs.webkit.org/show_bug.cgi?id=188798
<rdar://43561761>

Reviewed by Geoffrey Garen.

  • NetworkProcess/cache/NetworkCacheStorage.h:
1:37 PM Changeset in webkit [235132] by Brent Fulgham
  • 8 edits in trunk/Source

Remove experimental affiliated domain code now that StorageAccess API is available
https://bugs.webkit.org/show_bug.cgi?id=188756
<rdar://problem/43527848>

Reviewed by Alex Christensen.

In Bug 174661 we added a compatibility quirk to support wsj.com authentication. This quirk is no longer needed,
since the StorageAccess API provides the necessary tools to do this type of interaction without needing global
cross-site access.

Source/WebCore:

  • loader/ResourceLoadObserver.cpp:

(WebCore::ResourceLoadObserver::logSubresourceLoading):
(WebCore::ResourceLoadObserver::logWebSocketLoading):
(WebCore::areDomainsAssociated): Deleted.
(WebCore::shouldEnableSiteSpecificQuirks): Deleted.

  • loader/ResourceLoadStatistics.cpp:

(WebCore::ResourceLoadStatistics::areDomainsAssociated): Deleted.

  • loader/ResourceLoadStatistics.h:

Source/WebKit:

  • UIProcess/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::logFrameNavigation):

  • UIProcess/ResourceLoadStatisticsMemoryStore.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::logFrameNavigation):
(WebKit::areDomainsAssociated): Deleted.

12:39 PM Changeset in webkit [235131] by andy@vanwagoner.family
  • 2 edits in trunk/Tools

Unreviewed, add myself to committers list.

  • Scripts/webkitpy/common/config/contributors.json:
12:10 PM Changeset in webkit [235130] by bshafiei@apple.com
  • 1 copy in tags/Safari-606.1.36.2.3

Tag Safari-606.1.36.2.3.

12:09 PM Changeset in webkit [235129] by Antti Koivisto
  • 9 edits in trunk

Allow creating WeakPtrs to const objects
https://bugs.webkit.org/show_bug.cgi?id=188785

Reviewed by Geoffrey Garen.

Source/WebCore:

Remove some unneeded const_casts.

  • css/MediaQueryEvaluator.cpp:

(WebCore::MediaQueryEvaluator::MediaQueryEvaluator):
(WebCore::MediaQueryEvaluator::evaluate const):

  • css/MediaQueryEvaluator.h:
  • rendering/FloatingObjects.cpp:

(WebCore::ComputeFloatOffsetAdapter::ComputeFloatOffsetAdapter):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter::ComputeFloatOffsetForFloatLayoutAdapter):
(WebCore::ComputeFloatOffsetForLineLayoutAdapter::ComputeFloatOffsetForLineLayoutAdapter):
(WebCore::FindNextFloatLogicalBottomAdapter::FindNextFloatLogicalBottomAdapter):
(WebCore::FloatingObjects::FloatingObjects):

  • rendering/FloatingObjects.h:

(WebCore::FloatingObjects::renderer const):

Source/WTF:

const Foo foo;
WeakPtr<const Foo> weakConstFoo = makeWeakPtr(foo);

  • wtf/WeakPtr.h:

(WTF::WeakPtrFactory::createWeakPtr const):

Add a separate factory function for const T.
The underlying WeakReference is kept non-const in all cases.

Tools:

  • TestWebKitAPI/Tests/WTF/WeakPtr.cpp:

(TestWebKitAPI::Base::weakPtrFactory const):
(TestWebKitAPI::TEST):
(TestWebKitAPI::Base::weakPtrFactory): Deleted.

11:40 AM Changeset in webkit [235128] by yusukesuzuki@slowstart.org
  • 20 edits
    5 adds in trunk

Support "name" option for dedicated workers
https://bugs.webkit.org/show_bug.cgi?id=188779

Reviewed by Joseph Pecoraro.

LayoutTests/imported/w3c:

  • web-platform-tests/workers/interfaces.worker-expected.txt:
  • web-platform-tests/workers/name-property-expected.txt:

Source/WebCore:

This patch adds new Worker(url, { name: "Worker Name" }) option support[1].
This name can be accessible from self.name of DedicatedWorkerGlobalScope.
It is useful for debugging dedicated workers if the inspector can show the
names of the workers. This enhancement is tracked by [2].

[1]: https://github.com/whatwg/html/issues/2477
[2]: https://bugs.webkit.org/show_bug.cgi?id=164678

  • workers/DedicatedWorkerGlobalScope.cpp:

(WebCore::DedicatedWorkerGlobalScope::create):
(WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):
Hold name member.

  • workers/DedicatedWorkerGlobalScope.h:
  • workers/DedicatedWorkerGlobalScope.idl:

Add name attribute.

  • workers/DedicatedWorkerThread.cpp:

(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
(WebCore::DedicatedWorkerThread::createWorkerGlobalScope):

  • workers/DedicatedWorkerThread.h:
  • workers/Worker.cpp:

(WebCore::Worker::Worker):
(WebCore::Worker::create):
(WebCore::Worker::notifyFinished):

  • workers/Worker.h:
  • workers/Worker.idl:

Add WorkerOptions for dedicated worker creation.

  • workers/WorkerGlobalScopeProxy.h:
  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):

  • workers/WorkerMessagingProxy.h:
  • workers/WorkerThread.cpp:

(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
Isolate copy the given name to pass the worker thread.

(WebCore::WorkerThread::WorkerThread):
(WebCore::WorkerThread::workerThread):

  • workers/WorkerThread.h:
  • workers/service/context/ServiceWorkerThread.cpp:

(WebCore::ServiceWorkerThread::ServiceWorkerThread):
(WebCore::ServiceWorkerThread::createWorkerGlobalScope):

  • workers/service/context/ServiceWorkerThread.h:

LayoutTests:

  • http/wpt/workers/name-property-enhanced-expected.txt: Added.
  • http/wpt/workers/name-property-enhanced.html: Added.
  • http/wpt/workers/support/name.js: Added.

(test):

  • http/wpt/workers/support/no-name.js: Added.

(test):

11:12 AM Changeset in webkit [235127] by commit-queue@webkit.org
  • 11 edits in trunk/Source/WebKit

Add _WKWebsiteDataStoreConfiguration. sourceApplicationBundleIdentifier and sourceApplicationSecondaryIdentifier
https://bugs.webkit.org/show_bug.cgi?id=188748

Patch by Alex Christensen <achristensen@webkit.org> on 2018-08-21
Reviewed by Ryosuke Niwa.

  • NetworkProcess/NetworkSessionCreationParameters.h:

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

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

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

  • Shared/WebsiteDataStoreParameters.cpp:

(WebKit::WebsiteDataStoreParameters::privateSessionParameters):

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _initWithConfiguration:]):

  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:

(-[_WKWebsiteDataStoreConfiguration setSourceApplicationBundleIdentifier:]):
(-[_WKWebsiteDataStoreConfiguration sourceApplicationBundleIdentifier]):
(-[_WKWebsiteDataStoreConfiguration sourceApplicationSecondaryIdentifier]):
(-[_WKWebsiteDataStoreConfiguration setSourceApplicationSecondaryIdentifier:]):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
11:08 AM Changeset in webkit [235126] by Simon Fraser
  • 3 edits in trunk/LayoutTests

REGRESSION(r234993): Test results page ignores TestExpectations, shows 1800 failures
https://bugs.webkit.org/show_bug.cgi?id=188795

Reviewed by Tim Horton.

A MISSING result would trigger a code path that hit appendActualOnlyLinks() which had
a JS error, causing all expected results to be visible. Fix with a change to full_results.json
which tests the change.

  • fast/harness/full_results.json:
  • fast/harness/results.html:
11:04 AM Changeset in webkit [235125] by pvollan@apple.com
  • 22 edits
    4 adds in trunk

[WebGL] Contexts are not updated when display configuration changed.
https://bugs.webkit.org/show_bug.cgi?id=188750

Reviewed by Brent Fulgham.

Source/WebCore:

Calling CGDisplayRegisterReconfigurationCallback in GraphicsContext3DManager::addContext
returns kCGErrorSuccess when WindowServer access is blocked in the WebContent process,
but the callback function is never called. We should register the callback function in
the UI process, and send a message to the WebContent process when the display
configuration changed.

Test: fast/canvas/webgl/context-update-on-display-configuration.html

  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/GraphicsContext3DManager.cpp:

(WebCore::GraphicsContext3DManager::displayWasReconfigured):
(WebCore::GraphicsContext3DManager::addContext):
(WebCore::GraphicsContext3DManager::removeContext):
(WebCore::displayWasReconfigured): Deleted.

  • platform/graphics/GraphicsContext3DManager.h:

Source/WebKit:

Calling CGDisplayRegisterReconfigurationCallback in GraphicsContext3DManager::addContext
returns kCGErrorSuccess when WindowServer access is blocked in the WebContent process,
but the callback function is never called. We should register the callback function in
the UI process, and send a message to the WebContent process when the display
configuration changed.

  • Sources.txt:
  • UIProcess/API/C/WKMockDisplay.cpp: Added.

(WKSendDisplayConfigurationChangedMessageForTesting):

  • UIProcess/API/C/WKMockDisplay.h: Added.
  • UIProcess/WebProcessPool.cpp:

(WebKit::displayReconfigurationCallBack):
(WebKit::WebProcessPool::sendDisplayConfigurationChangedMessageForTesting):

  • UIProcess/WebProcessPool.h:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::displayConfigurationChanged):

Tools:

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::sendDisplayConfigurationChangedMessageForTesting):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::sendDisplayConfigurationChangedMessageForTesting):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

  • TestExpectations:
  • fast/canvas/webgl/context-update-on-display-configuration-expected.txt: Added.
  • fast/canvas/webgl/context-update-on-display-configuration.html: Added.
  • platform/mac-wk2/TestExpectations:
11:02 AM Changeset in webkit [235124] by wilander@apple.com
  • 21 edits
    3 adds in trunk

Make ResourceLoadObserver::logWebSocketLoading() handle websockets in detached frames
https://bugs.webkit.org/show_bug.cgi?id=188757
<rdar://problem/38713390>

Reviewed by Alex Christensen.

Source/WebCore:

Test: http/tests/websocket/construct-in-detached-frame-resource-load-statistics.html

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::connect):

Now logs even when a frame doesn't exist.

  • loader/ResourceLoadObserver.cpp:

(WebCore::ResourceLoadObserver::shouldLog const):

Now takes boolean 'usesEphemeralSession' instead of a page to support logging when there is no page.

(WebCore::ResourceLoadObserver::logSubresourceLoading):

Changed to send a boolean to ResourceLoadObserver::shouldLog().

(WebCore::ResourceLoadObserver::logWebSocketLoading):

Changed to:

  • receive the main frame's URL and a boolean for ephemeral sessions instead of the Frame.
  • send a boolean to ResourceLoadObserver::shouldLog().
  • No longer call areDomainsAssociated(). It is being removed in https://bugs.webkit.org/show_bug.cgi?id=188756.

(WebCore::ResourceLoadObserver::logUserInteractionWithReducedTimeResolution):

Changed to send a boolean to ResourceLoadObserver::shouldLog().

  • loader/ResourceLoadObserver.h:

Source/WebKit:

These changes are test infrastructure to support the new WebKitTestRunner
function isStatisticsRegisteredAsSubresourceUnder().

  • UIProcess/API/C/WKWebsiteDataStoreRef.cpp:

(WKWebsiteDataStoreIsStatisticsRegisteredAsSubresourceUnder):

  • UIProcess/API/C/WKWebsiteDataStoreRef.h:
  • UIProcess/ResourceLoadStatisticsMemoryStore.cpp:

(WebKit::ResourceLoadStatisticsMemoryStore::isRegisteredAsSubresourceUnder const):

  • UIProcess/ResourceLoadStatisticsMemoryStore.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::isRegisteredAsSubresourceUnder):

  • UIProcess/WebResourceLoadStatisticsStore.h:

Tools:

These changes add the new WebKitTestRunner function
isStatisticsRegisteredAsSubresourceUnder().

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::isStatisticsRegisteredAsSubresourceUnder):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::isStatisticsRegisteredAsSubresourceUnder):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

Skipped the new test case since it is only supported on WebKit2.

  • http/tests/websocket/construct-in-detached-frame-resource-load-statistics-expected.txt: Added.
  • http/tests/websocket/construct-in-detached-frame-resource-load-statistics.html: Added.
  • http/tests/websocket/resources/construct-in-detached-frame-resource-load-statistics.html: Added.
  • platform/wk2/TestExpectations:

Marked the new test case as [ Pass ].

10:31 AM Changeset in webkit [235123] by achristensen@apple.com
  • 15 edits in trunk/Tools

Transition more API tests from WKPageLoaderClient to WKPageNavigationClient
https://bugs.webkit.org/show_bug.cgi?id=188797

Reviewed by Tim Horton.

  • TestWebKitAPI/Tests/WebKit/AboutBlankLoad.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/EphemeralSessionPushStateNoHistoryCallback.cpp:

(TestWebKitAPI::didSameDocumentNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didSameDocumentNavigationForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/FailedLoad.cpp:

(TestWebKitAPI::didFailProvisionalNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFailProvisionalLoadWithErrorForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/FrameMIMETypeHTML.cpp:

(TestWebKitAPI::didStartProvisionalNavigation):
(TestWebKitAPI::didCommitNavigation):
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didStartProvisionalLoadForFrame): Deleted.
(TestWebKitAPI::didCommitLoadForFrame): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/FrameMIMETypePNG.cpp:

(TestWebKitAPI::didStartProvisionalNavigation):
(TestWebKitAPI::didCommitNavigation):
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didStartProvisionalLoadForFrame): Deleted.
(TestWebKitAPI::didCommitLoadForFrame): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/LayoutMilestonesWithAllContentInFrame.cpp:

(TestWebKitAPI::renderingProgressDidChange):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didLayout): Deleted.

  • TestWebKitAPI/Tests/WebKit/NewFirstVisuallyNonEmptyLayoutFrames.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::renderingProgressDidChange):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::didLayout): Deleted.

  • TestWebKitAPI/Tests/WebKit/PageLoadBasic.cpp:

(TestWebKitAPI::State::State):
(TestWebKitAPI::didStartProvisionalNavigation):
(TestWebKitAPI::didCommitNavigation):
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::decidePolicyForNavigationAction):
(TestWebKitAPI::decidePolicyForResponse):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didStartProvisionalLoadForFrame): Deleted.
(TestWebKitAPI::didCommitLoadForFrame): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::decidePolicyForNewWindowAction): Deleted.

  • TestWebKitAPI/Tests/WebKit/PageLoadDidChangeLocationWithinPageForFrame.cpp:

(TestWebKitAPI::didSameDocumentNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::didSameDocumentNavigationForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/PrivateBrowsingPushStateNoHistoryCallback.cpp:

(TestWebKitAPI::TEST):
(TestWebKitAPI::didSameDocumentNavigationForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/ReloadPageAfterCrash.cpp:

(TestWebKitAPI::didFinishLoad):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/WKBundleFileHandle.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/RestoreStateAfterTermination.mm:

(TestWebKitAPI::didFinishLoad):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/CommandBackForward.mm:

(WebKit2_CommandBackForwardTestWKView::SetUp):
(WebKit2_CommandBackForwardTestWKView::didFinishLoadForFrame): Deleted.

10:20 AM Changeset in webkit [235122] by bshafiei@apple.com
  • 7 edits in branches/safari-606.1.36.2-branch/Source

Versioning.

9:50 AM Changeset in webkit [235121] by dbates@webkit.org
  • 3 edits
    2 adds in trunk

Disallow navigations when page cache updates the current document of the frame
https://bugs.webkit.org/show_bug.cgi?id=188422

Reviewed by Ryosuke Niwa.

Source/WebCore:

Make use of NavigationDisabler to disallow navigations when associating the cached
document back with its frame (i.e. calling Frame::setDocument()).

When we associate a cached document with its frame we will construct its render tree
and run post style resolution callbacks that can do anything, including performing
a frame load. Until page restoration is comnplete the frame tree is in a transient
state that makes reasoning about it difficult and error prone. We should not allow
navigations in this state.

Test: fast/history/go-back-to-object-subframe.html

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::open):

LayoutTests:

Add a test case that ensures that we do not hit the assertion ASSERT(ownerFrame
m_frame.isMainFrame())

in FrameLoader::addExtraFieldsToRequest() when navigating back to a page that loads a nested
page, whose URL contains a fragment, via an HTML object element. This assertion fails if
navigations are allowed when restoring a page from the page cache.

This change does not prevent navigations initiated from a pageshow event handler.

  • fast/history/go-back-to-object-subframe-expected.txt: Added.
  • fast/history/go-back-to-object-subframe.html: Added.
9:47 AM Changeset in webkit [235120] by dbates@webkit.org
  • 35 edits
    1 add in trunk/Source

Replace TextCheckingTypeMask with OptionSet
https://bugs.webkit.org/show_bug.cgi?id=188678

Reviewed by Antti Koivisto.

Source/WebCore:

Replaces TextCheckingTypeMask with an OptionSet to improve type safety and code clarity. Additionally
change the values of TextCheckingType such that all the enumerators fit within an uint8_t.

  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::hasMisspelling const):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(AXAttributeStringSetSpelling):

  • editing/AlternativeTextController.cpp:

(WebCore::AlternativeTextController::timerFired):
(WebCore::AlternativeTextController::processMarkersOnTextToBeReplacedByResult):

  • editing/Editor.cpp:

(WebCore::Editor::replaceSelectionWithFragment):
(WebCore::Editor::markMisspellingsAfterTypingToWord):
(WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges):
(WebCore::isAutomaticTextReplacementType):
(WebCore::Editor::markAndReplaceFor): For now, change a local variable from const to non-const to work
around the following MSVC compiler bug: <https://developercommunity.visualstudio.com/content/problem/316713/msvc-cant-compile-webkits-optionsetcontainsany.html>.
(WebCore::Editor::markMisspellingsAndBadGrammar):
(WebCore::Editor::updateMarkersForWordsAffectedByEditing):
(WebCore::Editor::editorUIUpdateTimerFired):
(WebCore::Editor::resolveTextCheckingTypeMask):

  • editing/Editor.h:
  • editing/SpellChecker.cpp:

(WebCore::SpellCheckRequest::SpellCheckRequest):
(WebCore::SpellCheckRequest::create):
(WebCore::SpellChecker::didCheckSucceed):

  • editing/SpellChecker.h:
  • editing/TextCheckingHelper.cpp:

(WebCore::findGrammaticalErrors):
(WebCore::findMisspellings):
(WebCore::TextCheckingHelper::findFirstMisspellingOrBadGrammar):
(WebCore::TextCheckingHelper::guessesForMisspelledOrUngrammaticalRange const):
(WebCore::checkTextOfParagraph):

  • editing/TextCheckingHelper.h:
  • loader/EmptyClients.cpp:
  • platform/text/TextCheckerClient.h:
  • platform/text/TextChecking.h: Remove TextCheckingTypeMask. Reorganized the fields of TextCheckingRequestData

to coallesce padding and move it to the end of class. Also used default initializer syntax and defaulted (= default)
the default constructor of TextCheckingRequestData, removing the need for a user-defined default constructor.
(WebCore::TextCheckingRequestData::TextCheckingRequestData):
(WebCore::TextCheckingRequestData::text const): Changed return type from String to const String&
to avoid unnecessary ref-count churn for callers that do not need to take a shared ownership in
this string.
(WebCore::TextCheckingRequestData::checkingTypes const): Renamed; formerly named mask.
(WebCore::TextCheckingRequestData::mask const): Deleted.

  • platform/text/mac/TextCheckingMac.mm: Added.

(WebCore::nsTextCheckingTypes):

  • testing/Internals.cpp:

(WebCore::Internals::handleAcceptedCandidate):

Source/WebKit:

  • Scripts/webkit/messages.py: Add WebCore::TextCheckingType to the special case map so that

the generator knows what header has the definition for this type.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<TextCheckingRequestData>::encode):
(IPC::ArgumentCoder<TextCheckingRequestData>::decode):

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::coreTextCheckingType):
(WebKit::textCheckingResultFromNSTextCheckingResult):

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

(WebKit::WebPageProxy::checkTextOfParagraph):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/gtk/TextCheckerGtk.cpp:

(WebKit::TextChecker::requestCheckingOfString):
(WebKit::TextChecker::checkTextOfParagraph): Also simplified return expressions.

  • UIProcess/ios/TextCheckerIOS.mm:

(WebKit::TextChecker::checkTextOfParagraph):

  • UIProcess/mac/TextCheckerMac.mm:

(WebKit::TextChecker::checkTextOfParagraph):

  • UIProcess/win/TextCheckerWin.cpp:

(WebKit::TextChecker::checkTextOfParagraph):

  • WebProcess/WebCoreSupport/WebEditorClient.cpp:

(WebKit::WebEditorClient::shouldEraseMarkersAfterChangeSelection const):
(WebKit::WebEditorClient::checkTextOfParagraph):

  • WebProcess/WebCoreSupport/WebEditorClient.h:

Source/WebKitLegacy/mac:

Currently we have code in WebEditorClient::checkTextOfParagraph() that incorrectly assumes
that the enumerators of TextCheckingType have a one-to-one correspondence with NSTextCheckingType.
(This is not the case because there is not corresponding NSTextCheckingType for TextCheckingTypeShowCorrectionPanel).
We now explicitly convert from OptionSet<TextCheckingType> to NSTextCheckingTypes.

  • WebCoreSupport/WebEditorClient.h:
  • WebCoreSupport/WebEditorClient.mm:

(WebEditorClient::checkTextOfParagraph):
(WebEditorClient::shouldEraseMarkersAfterChangeSelection const):
(core): Fix up code style nits; compare resultType on the right-hand side instead of the
left as this is more readable and unncessary now that modern compilers like Clang have
diagnostics to catch accidental assignments when equality was intended.
(WebEditorClient::didCheckSucceed):

  • WebView/WebView.mm:

(coreTextCheckingType):
(textCheckingResultFromNSTextCheckingResult):

9:37 AM Changeset in webkit [235119] by dbates@webkit.org
  • 17 edits in trunk

[iOS][WK1] Support toggling continuous spell checking from tests
https://bugs.webkit.org/show_bug.cgi?id=188763

Reviewed by Simon Fraser.

Source/WebKitLegacy/mac:

Move some more code out from under a !PLATFORM(IOS)-guard so as to support toggling continuous
spell checking from tests in iOS WebKit Legacy.

  • WebCoreSupport/WebEditorClient.h:

(WebEditorClient::toggleContinuousSpellChecking): Deleted.

  • WebCoreSupport/WebEditorClient.mm:
  • WebView/WebView.h:
  • WebView/WebView.mm:

(-[WebView toggleContinuousSpellChecking:]):
(-[WebView toggleSmartInsertDelete:]):

LayoutTests:

Fix up some spelling tests so that they enable continuous spell checking and unskip them,
with the exception of fast/writing-mode/english-rl-text-with-spelling-marker.html, now
that they pass.

Mark the test fast/writing-mode/english-rl-text-with-spelling-marker.html as an image-only
failure. See <https://bugs.webkit.org/show_bug.cgi?id=188762> for more details.

  • editing/spelling/spelling-marker-includes-hyphen-expected.html:
  • editing/spelling/spelling-marker-includes-hyphen.html:
  • editing/spelling/spelling-markers-in-overlapping-lines-expected.html:
  • editing/spelling/spelling-markers-in-overlapping-lines-large-font-expected.html:
  • editing/spelling/spelling-markers-in-overlapping-lines-large-font.html:
  • editing/spelling/spelling-markers-in-overlapping-lines.html:
  • fast/writing-mode/english-bt-text-with-spelling-marker-expected.html:
  • fast/writing-mode/english-bt-text-with-spelling-marker.html:
  • fast/writing-mode/english-rl-text-with-spelling-marker-expected.html:
  • fast/writing-mode/english-rl-text-with-spelling-marker.html:
  • platform/ios/TestExpectations:
9:33 AM Changeset in webkit [235118] by Adrian Perez de Castro
  • 4 edits in trunk

Unreviewed. Update OptionsWPE.cmake and NEWS for 2.21.91 release.

.:

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

Source/WebKit:

  • wpe/NEWS: Add release notes for the 2.21.91 release.
9:16 AM Changeset in webkit [235117] by achristensen@apple.com
  • 48 edits in trunk/Tools

Replace WKPageLoaderClient with WKPageNavigationClient in many API tests
https://bugs.webkit.org/show_bug.cgi?id=188771

Reviewed by Tim Horton.

  • TestWebKitAPI/Tests/WebKit/CloseThenTerminate.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/CookieManager.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/DeferredViewInWindowStateChange.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/DidNotHandleKeyDown.cpp:

(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/DidRemoveFrameFromHiearchyInPageCache.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/EventModifiers.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setClients):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/Find.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/FindMatches.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/ForceRepaint.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/FrameHandle.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/Geolocation.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/HitTestResultNodeHandle.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/InjectedBundleBasic.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/LimitTitleSize.cpp:

(TestWebKitAPI::didFinishLoadForFrame):

  • TestWebKitAPI/Tests/WebKit/LoadAlternateHTMLStringWithNonDirectoryURL.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::loadAlternateHTMLString):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/LoadCanceledNoServerRedirectCallback.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/LoadPageOnCrash.cpp:

(TestWebKitAPI::WebKit2CrashLoader::WebKit2CrashLoader):
(TestWebKitAPI::didFinishLoad):

  • TestWebKitAPI/Tests/WebKit/MenuTypesForMouseEvents.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/MouseMoveAfterCrash.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/NewFirstVisuallyNonEmptyLayoutFails.cpp:

(TestWebKitAPI::didFinishLoadForFrame):

  • TestWebKitAPI/Tests/WebKit/PageLoadBasic.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/PendingAPIRequestURL.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/ResizeWindowAfterCrash.cpp:

(TestWebKitAPI::didFinishLoad):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/RestoreSessionState.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/RestoreSessionStateContainingFormData.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/ScrollPinningBehaviors.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishDocumentLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/SpacebarScrolling.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/StopLoadingDuringDidFailProvisionalLoad.cpp:

(TestWebKitAPI::didFailProvisionalNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFailProvisionalLoadWithErrorForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/TerminateTwice.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/TextFieldDidBeginAndEndEditing.cpp:

(TestWebKitAPI::WebKit2TextFieldBeginAndEditEditingTest::didFinishNavigation):
(TestWebKitAPI::WebKit2TextFieldBeginAndEditEditingTest::setPageLoaderClient):
(TestWebKitAPI::WebKit2TextFieldBeginAndEditEditingTest::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/UserMessage.cpp:

(TestWebKitAPI::WebKit2UserMessageRoundTripTest::didFinishNavigation):
(TestWebKitAPI::WebKit2UserMessageRoundTripTest::setPageLoaderClient):
(TestWebKitAPI::WebKit2UserMessageRoundTripTest::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/WKPageConfiguration.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/WKPageCopySessionStateWithFiltering.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/WKPageGetScaleFactorNotZero.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/WKPageIsPlayingAudio.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setUpClients):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/WKThumbnailView.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/WebArchive.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/AttributedSubstringForProposedRangeWithImage.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/ContextMenuDownload.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/CustomBundleParameter.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/EditorCommands.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/GetPIDAfterAbortedProcessLaunch.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/InjectedBundleAppleEvent.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKitCocoa/FullscreenDelegate.mm:

(didFinishNavigation):
(TestWebKitAPI::TEST):
(didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKitCocoa/PictureInPictureDelegate.mm:

(didFinishNavigation):
(TestWebKitAPI::TEST):
(didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/mac/FirstResponderScrollingPosition.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/mac/WebKitAgnosticTest.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

7:25 AM Changeset in webkit [235116] by Adrian Perez de Castro
  • 5 edits
    1 move in trunk

[WPE] Update to use libwpe-1.0.0 and WPEBackend-fdo-1.0.0
https://bugs.webkit.org/show_bug.cgi?id=188782

Reviewed by Michael Catanzaro.

Make the build depend on wpe-0.2, and change the Flatpak and JHBuild development
environments to use version 1.0.0 of libwpe and WPEBackend-fdo.

.:

  • Source/cmake/FindWPE.cmake: Renamed from Source/cmake/FindWPEBackend.cmake and changed

to check for libwpe-0.2.

  • Source/cmake/OptionsWPE.cmake: Adapt to the rename to FindWPE.cmake.

Tools:

  • flatpak/org.webkit.WPE.yaml: Update to use libwpe and WPEBackend-fdo version 1.0.0 from

release tarballs, and removed the (now unneeded) Lua and LuaJIT modules.

  • wpe/jhbuild.modules: Ditto.
6:55 AM Changeset in webkit [235115] by Fujii Hironori
  • 14 edits in trunk/Source/WebCore

Don't place "using namespace XXX;" in global space for unified source builds
https://bugs.webkit.org/show_bug.cgi?id=188739

Reviewed by Yusuke Suzuki.

No new tests (No behavior change).

  • html/track/AudioTrackList.cpp:
  • html/track/TextTrackList.cpp:
  • html/track/VideoTrackList.cpp:
  • page/SecurityOriginData.cpp:
  • page/TextIndicator.cpp:
  • platform/geoclue/GeolocationProviderGeoclue.cpp:
  • platform/graphics/gstreamer/ImageGStreamerCairo.cpp:
  • platform/graphics/win/FullScreenController.cpp:
  • platform/mediastream/CaptureDeviceManager.cpp:
  • platform/mock/MediaPlaybackTargetPickerMock.cpp:
  • svg/animation/SMILTime.cpp:
  • testing/js/WebCoreTestSupport.cpp:
  • xml/XPathParser.cpp:
6:53 AM Changeset in webkit [235114] by Michael Catanzaro
  • 4 edits
    3 deletes in trunk/Tools

[Flatpak] Update to GNOME master runtime
https://bugs.webkit.org/show_bug.cgi?id=188731

Reviewed by Philippe Normand.

The 3.28 runtime is pretty stale at this point. We could wait a couple weeks for the 3.30
runtime, but I don't think there's any need to stick with the stable runtime when we have
the ability to pin to a particular version of the master runtime. There are also several
advantages to switching to the master runtime.

  • flatpak/files/httpd-autogen.sh: Removed.
  • flatpak/flatpakutils.py:

(WebkitFlatpak.clean_args):

  • flatpak/org.webkit.GTK.yaml:
  • flatpak/org.webkit.WebKit.yaml:
  • flatpak/patches/httpd-0001-configure-use-pkg-config-for-PCRE-detection.patch: Removed.
  • flatpak/patches/libgcrypt-0001-Use-pkg-config-to-detect-gpg-error.patch: Removed.
6:27 AM Changeset in webkit [235113] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WTF

[Linux] Cache the memory footprint and only update it after 1 second
https://bugs.webkit.org/show_bug.cgi?id=188791

Reviewed by Yusuke Suzuki.

Getting the memory footprint is an expensive operation in Linux. When called multiple times, the CPU usage is
too much (see bug #188787). We could cache the result for at least 1 second to ensure we don't call it more than
once per second.

  • wtf/linux/MemoryFootprintLinux.cpp:

(WTF::forEachLine):
(WTF::computeMemoryFootprint):
(WTF::memoryFootprint):

6:20 AM Changeset in webkit [235112] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

[GStreamer] Warn early about incomplete MSE track switching support
https://bugs.webkit.org/show_bug.cgi?id=188653

Patch by Philippe Normand <philn@igalia.com> on 2018-08-21
Reviewed by Xabier Rodriguez-Calvar.

The proper track switching support shall be fixed at some point by:
https://bugs.webkit.org/show_bug.cgi?id=182531.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::updateTracks): Remove redundant test.
(WebCore::MediaPlayerPrivateGStreamer::enableTrack): Exit early if
this method is called by the MSE player.

6:10 AM Changeset in webkit [235111] by commit-queue@webkit.org
  • 9 edits in trunk/Source/WebKit

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

It was not the main cause of the high CPU usage in the end
(Requested by KaL on #webkit).

Reverted changeset:

"Unreviewed, rolling out r234259."
https://bugs.webkit.org/show_bug.cgi?id=188005
https://trac.webkit.org/changeset/234981

2:07 AM Changeset in webkit [235110] by Philippe Normand
  • 3 edits in trunk/Source/WebCore

[GStreamer][MSE] Generic main thread notification support
https://bugs.webkit.org/show_bug.cgi?id=188647

Patch by Philippe Normand <philn@igalia.com> on 2018-08-21
Reviewed by Xabier Rodriguez-Calvar.

Using GstBus for main thread notifications has the side effect of "leaking" the
application messages to the media player, leading to CPU cycles wasting.

No new tests, existing MSE tests cover this change.

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:

(webkit_media_src_init):
(webKitMediaSrcFinalize):
(webKitMediaSrcSetMediaPlayerPrivate):

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamerPrivate.h:
1:49 AM Changeset in webkit [235109] by Philippe Normand
  • 4 edits in trunk/Source/WebCore

[GStreamer][MSE] Remove parsers from playback pipeline
https://bugs.webkit.org/show_bug.cgi?id=188646

Patch by Philippe Normand <philn@igalia.com> on 2018-08-16
Reviewed by Xabier Rodriguez-Calvar.

Decodebin already includes parsers in front of the decoders.

No new tests, existing MSE tests cover this change.

  • platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:

(WebCore::PlaybackPipeline::addSourceBuffer):
(WebCore::PlaybackPipeline::attachTrack):

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:

(webKitMediaSrcLinkSourcePad):

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamerPrivate.h:
1:39 AM Changeset in webkit [235108] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

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

broke ubuntu LTS build (Requested by philn on #webkit).

Reverted changeset:

"[GTK] Never return an uninitialized ImageGStreamer object."
https://bugs.webkit.org/show_bug.cgi?id=188305
https://trac.webkit.org/changeset/234979

12:27 AM Changeset in webkit [235107] by sbarati@apple.com
  • 22 edits in trunk/Source

JSRunLoopTimer may run part of a member function after it's destroyed
https://bugs.webkit.org/show_bug.cgi?id=188426

Reviewed by Mark Lam.

Source/JavaScriptCore:

When I was reading the JSRunLoopTimer code, I noticed that it is possible
to end up running timer code after the class had been destroyed.

The issue I spotted was in this function:
`
void JSRunLoopTimer::timerDidFire()
{

JSLock* apiLock = m_apiLock.get();
if (!apiLock) {

Likely a buggy usage: the timer fired while JSRunLoopTimer was being destroyed.
return;

}
HERE
std::lock_guard<JSLock> lock(*apiLock);
RefPtr<VM> vm = apiLock->vm();
if (!vm) {

The VM has been destroyed, so we should just give up.
return;

}

doWork();

}
`

Look at the comment 'HERE'. Let's say that the timer callback thread gets context
switched before grabbing the API lock. Then, some other thread destroys the VM.
And let's say that the VM owns (perhaps transitively) this timer. Then, the
timer would run code and access member variables after it was destroyed.

This patch fixes this issue by introducing a new timer manager class.
This class manages timers on a per VM basis. When a timer is scheduled,
this class refs the timer. It also calls the timer callback while actively
maintaining a +1 ref to it. So, it's no longer possible to call the timer
callback after the timer has been destroyed. However, calling a timer callback
can still race with the VM being destroyed. We continue to detect this case and
bail out of the callback early.

This patch also removes a lot of duplicate code between GCActivityCallback
and JSRunLoopTimer.

  • heap/EdenGCActivityCallback.cpp:

(JSC::EdenGCActivityCallback::doCollection):
(JSC::EdenGCActivityCallback::lastGCLength):
(JSC::EdenGCActivityCallback::deathRate):

  • heap/EdenGCActivityCallback.h:
  • heap/FullGCActivityCallback.cpp:

(JSC::FullGCActivityCallback::doCollection):
(JSC::FullGCActivityCallback::lastGCLength):
(JSC::FullGCActivityCallback::deathRate):

  • heap/FullGCActivityCallback.h:
  • heap/GCActivityCallback.cpp:

(JSC::GCActivityCallback::doWork):
(JSC::GCActivityCallback::scheduleTimer):
(JSC::GCActivityCallback::didAllocate):
(JSC::GCActivityCallback::willCollect):
(JSC::GCActivityCallback::cancel):
(JSC::GCActivityCallback::cancelTimer): Deleted.
(JSC::GCActivityCallback::nextFireTime): Deleted.

  • heap/GCActivityCallback.h:
  • heap/Heap.cpp:

(JSC::Heap::reportAbandonedObjectGraph):
(JSC::Heap::notifyIncrementalSweeper):
(JSC::Heap::updateAllocationLimits):
(JSC::Heap::didAllocate):

  • heap/IncrementalSweeper.cpp:

(JSC::IncrementalSweeper::scheduleTimer):
(JSC::IncrementalSweeper::doWork):
(JSC::IncrementalSweeper::doSweep):
(JSC::IncrementalSweeper::sweepNextBlock):
(JSC::IncrementalSweeper::startSweeping):
(JSC::IncrementalSweeper::stopSweeping):

  • heap/IncrementalSweeper.h:
  • heap/StopIfNecessaryTimer.cpp:

(JSC::StopIfNecessaryTimer::doWork):
(JSC::StopIfNecessaryTimer::scheduleSoon):

  • heap/StopIfNecessaryTimer.h:
  • runtime/JSRunLoopTimer.cpp:

(JSC::epochTime):
(JSC::JSRunLoopTimer::Manager::timerDidFireCallback):
(JSC::JSRunLoopTimer::Manager::PerVMData::setRunLoop):
(JSC::JSRunLoopTimer::Manager::PerVMData::PerVMData):
(JSC::JSRunLoopTimer::Manager::PerVMData::~PerVMData):
(JSC::JSRunLoopTimer::Manager::timerDidFire):
(JSC::JSRunLoopTimer::Manager::shared):
(JSC::JSRunLoopTimer::Manager::registerVM):
(JSC::JSRunLoopTimer::Manager::unregisterVM):
(JSC::JSRunLoopTimer::Manager::scheduleTimer):
(JSC::JSRunLoopTimer::Manager::cancelTimer):
(JSC::JSRunLoopTimer::Manager::timeUntilFire):
(JSC::JSRunLoopTimer::Manager::didChangeRunLoop):
(JSC::JSRunLoopTimer::timerDidFire):
(JSC::JSRunLoopTimer::JSRunLoopTimer):
(JSC::JSRunLoopTimer::timeUntilFire):
(JSC::JSRunLoopTimer::setTimeUntilFire):
(JSC::JSRunLoopTimer::cancelTimer):
(JSC::JSRunLoopTimer::setRunLoop): Deleted.
(JSC::JSRunLoopTimer::timerDidFireCallback): Deleted.
(JSC::JSRunLoopTimer::scheduleTimer): Deleted.

  • runtime/JSRunLoopTimer.h:

(JSC::JSRunLoopTimer::Manager::PerVMData::PerVMData):

  • runtime/PromiseDeferredTimer.cpp:

(JSC::PromiseDeferredTimer::doWork):
(JSC::PromiseDeferredTimer::runRunLoop):
(JSC::PromiseDeferredTimer::addPendingPromise):
(JSC::PromiseDeferredTimer::hasPendingPromise):
(JSC::PromiseDeferredTimer::hasDependancyInPendingPromise):
(JSC::PromiseDeferredTimer::cancelPendingPromise):
(JSC::PromiseDeferredTimer::scheduleWorkSoon):

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

(JSC::VM::VM):
(JSC::VM::~VM):
(JSC::VM::setRunLoop):
(JSC::VM::registerRunLoopTimer): Deleted.
(JSC::VM::unregisterRunLoopTimer): Deleted.

  • runtime/VM.h:

(JSC::VM::runLoop const):

  • wasm/js/WebAssemblyPrototype.cpp:

(JSC::webAssemblyModuleValidateAsyncInternal):
(JSC::instantiate):
(JSC::compileAndInstantiate):
(JSC::webAssemblyModuleInstantinateAsyncInternal):
(JSC::webAssemblyCompileStreamingInternal):
(JSC::webAssemblyInstantiateStreamingInternal):

Source/WebCore:

  • page/cocoa/ResourceUsageThreadCocoa.mm:

(WebCore::ResourceUsageThread::platformThreadBody):

  • page/linux/ResourceUsageThreadLinux.cpp:

(WebCore::ResourceUsageThread::platformThreadBody):

12:00 AM WebKitGTK/2.20.x edited by zandobersek@gmail.com
(diff)
Note: See TracTimeline for information about the timeline view.