Timeline



Oct 8, 2020:

10:16 PM Changeset in webkit [268248] by jiewen_tan@apple.com
  • 2 edits
    7 adds in trunk/Source/WebKit

[WebAuthn] Implement a dummy WebAuthenticationAgent
https://bugs.webkit.org/show_bug.cgi?id=217401
<rdar://problem/70012011>

Reviewed by Darin Adler.

Part 1.

This patch introduces a new dummy WebAuthenticationAgent where in the future it will take over all WebAuthn operations
from the UI Process such that we can isolate high privileged entitlements to this standalone daemon and therefore are able
offer WebAuthn to third party WKWebView clients. One of the future feautres will require this new process to listen to
LaunchEvents, which only daemons can do. That's why it is implemented as a user agent instead of a XPC service.

This is the first part of establishing such a dummy daemon. What it does is to set up a new build target for the daemon and
hook it up with WebKit's build system. One can manually load the launchd plist and load the daemon to verify this change.

Commands are:
launchctl load /to/your/path/com.apple.webkit.WebAuthenticationAgent.plist
launchctl start com.apple.webkit.WebAuthenticationAgent.Development

Covered by manual tests.

  • Configurations/WebAuthenticationAgent.xcconfig: Added.

Somehow the executable has a suffix .Development for debug/release builds. Will fix that in the later part.

  • Daemons/WebAuthenticationAgent/Info.plist: Added.
  • Daemons/WebAuthenticationAgent/WebAuthenticationAgent.entitlements: Added.
  • Daemons/WebAuthenticationAgent/com.apple.webkit.WebAuthenticationAgent.plist: Added.

The executable location is hardcoded for now. It will be fixed in Part 2 to dynamically point to the right binary.

  • Daemons/WebAuthenticationAgent/main.mm: Added.

(main):

  • WebKit.xcodeproj/project.pbxproj:

Not sure why libWTF.a is needed. Will fix that in the later part.

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

Unreviewed, reland r268170
https://bugs.webkit.org/show_bug.cgi?id=217460

Source/JavaScriptCore:

Fixed missing wrong OperationPtrTag use in Repatch.cpp.

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::getLinkerAddress):

  • assembler/AssemblerBuffer.h:

(JSC::ARM64EHash::update):
(JSC::ARM64EHash::finalHash const):

  • assembler/JITOperationList.cpp:

(JSC::addPointers):

  • assembler/MacroAssemblerARM64.cpp:

(JSC::MacroAssembler::probe):

  • assembler/MacroAssemblerCodeRef.h:

(JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
(JSC::MacroAssemblerCodePtr::createFromExecutableAddress):

  • assembler/testmasm.cpp:

(JSC::testProbeModifiesProgramCounter):

  • b3/air/testair.cpp:
  • ftl/FTLOutput.h:

(JSC::FTL::Output::callWithoutSideEffects):
(JSC::FTL::Output::operation):

  • ftl/FTLSlowPathCall.cpp:

(JSC::FTL::SlowPathCallContext::makeCall):

  • jit/JITCode.cpp:

(JSC::JITCodeWithCodeRef::executableAddressAtOffset):

  • jit/JITExceptions.cpp:

(JSC::genericUnwind):

  • jit/JITOperations.cpp:
  • jit/Repatch.cpp:

(JSC::readPutICCallTarget):
(JSC::ftlThunkAwareRepatchCall):
(JSC::tryCacheGetBy):
(JSC::tryCachePutByID):

  • llint/LLIntData.cpp:

(JSC::LLInt::initialize):

  • llint/LLIntPCRanges.h:

(JSC::LLInt::isLLIntPC):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::setUpCall):

  • llint/LLIntThunks.cpp:

(JSC::LLInt::generateThunkWithJumpTo):

  • runtime/JSCPtrTag.h:
  • runtime/MachineContext.h:

(JSC::MachineContext::instructionPointer):

  • runtime/NativeExecutable.cpp:

(JSC::NativeExecutable::finishCreation):

  • runtime/PutPropertySlot.h:

(JSC::PutPropertySlot::setCustomValue):
(JSC::PutPropertySlot::setCustomAccessor):
(JSC::PutPropertySlot::customSetter const):

  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::emitCCall):

  • wasm/WasmSlowPaths.cpp:

Source/WTF:

  • wtf/PlatformRegisters.cpp:

(WTF::threadStateLRInternal):
(WTF::threadStatePCInternal):

  • wtf/PtrTag.h:

(WTF::tagCodePtr):
(WTF::untagCodePtr):
(WTF::assertIsCFunctionPtr):
(WTF::assertIsNullOrCFunctionPtr):
(WTF::assertIsNotTagged):
(WTF::assertIsTagged):
(WTF::assertIsNullOrTagged):
(WTF::isTaggedWith):
(WTF::assertIsTaggedWith):
(WTF::assertIsNullOrTaggedWith):
(WTF::tagCFunctionPtr):
(WTF::tagCFunction):
(WTF::untagCFunctionPtr):
(WTF::tagInt):

9:02 PM Changeset in webkit [268246] by Chris Fleizach
  • 3 edits in trunk/Source/WebKit

AX: Website Warning page is inaccessible
https://bugs.webkit.org/show_bug.cgi?id=217489

Reviewed by Zalan Bujtas.

If we have a safe browsing window, we need to use that instead of the content view.

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

(WebKit::WebViewImpl::accessibilityAttributeValue):

8:13 PM Changeset in webkit [268245] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

Nil-check results of -[AVPlayerItemVideoOutput initWithPixelBufferAttributes:]
https://bugs.webkit.org/show_bug.cgi?id=217498
<rdar://problem59666003>

Reviewed by Jer Noble.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoOutput): Log an error and
return immediately if -[AVPlayerItemVideoOutput initWithPixelBufferAttributes:]
returns nil.

8:05 PM Changeset in webkit [268244] by mmaxfield@apple.com
  • 4 edits
    2 adds in trunk

Stop clamping text-underline-offset to 0
https://bugs.webkit.org/show_bug.cgi?id=217455

Reviewed by Simon Fraser.

Source/WebCore:

As per the CSSWG resolution at
https://github.com/w3c/csswg-drafts/issues/4059

Test: fast/text/negative-underline-position.html

  • style/InlineTextBoxStyle.cpp:

(WebCore::computeUnderlineOffset):

LayoutTests:

  • fast/text/negative-underline-position-expected-mismatch.html: Added.
  • fast/text/negative-underline-position.html: Added.
  • fast/css3-text/css3-text-decoration/text-underline-negative-expected.html: Update.
7:31 PM Changeset in webkit [268243] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

REGRESSION (r267763): SHOULD NEVER BE REACHED in WebKit::contentRuleListsFromIdentifier
https://bugs.webkit.org/show_bug.cgi?id=217499

There was an invalid assertion. NBD.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::contentRuleListsFromIdentifier):

7:26 PM Changeset in webkit [268242] by Matt Lewis
  • 2 edits in trunk/Tools

Move EWS to new SDKs: tvOS 14, and watchOS 7.
https://bugs.webkit.org/show_bug.cgi?id=217145

Reviewed by Aakash Jain.

  • BuildSlaveSupport/ews-build/config.json:
6:18 PM Changeset in webkit [268241] by commit-queue@webkit.org
  • 27 edits in trunk/Source

Unreviewed, reverting r268170 and r268190.
https://bugs.webkit.org/show_bug.cgi?id=217502

Crash on ARM64E exclusively

Reverted changesets:

"[JSC] Restrict more ptr-tagging and avoid using
OperationPtrTag for JIT code"
https://bugs.webkit.org/show_bug.cgi?id=217460
https://trac.webkit.org/changeset/268170

"Unreviewed, build fix for ARM64E"
https://bugs.webkit.org/show_bug.cgi?id=217460
https://trac.webkit.org/changeset/268190

6:17 PM Changeset in webkit [268240] by Wenson Hsieh
  • 3 edits in trunk/Source/WebCore

[MotionMark] Add a fast path for GraphicsContext::strokePath in the case where the path is a line
https://bugs.webkit.org/show_bug.cgi?id=217496

Reviewed by Tim Horton.

When running the Canvas Lines subtest with GPU process enabled, we currently suffer from increased memory usage
in the GPU process. Much of this increased memory usage is due to the allocation of approximately 35 million
CGPathRefs over the course of the subtest, which ends up dirtying a large number of pages; this also adds a
nontrivial amount of overhead due to creating and destroying these platform CGPathRefs.

We can mitigate most of this overhead in the GPU process by avoiding platform CGPathRef allocation entirely
when stroking simple line segments in GraphicsContext::strokePath. Rather than reifying Path::m_path and
then using CGContextDrawPathDirect, we can simply use CGContextStrokeLineSegments with a fixed array of
2 CGPoints.

No change in behavior.

  • platform/graphics/Path.h:

(WebCore::Path::inlineData const):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::strokePath):

5:48 PM Changeset in webkit [268239] by rniwa@webkit.org
  • 16 edits
    3 adds in trunk

Make it possible to send an arbitrary IPC message from JavaScript
https://bugs.webkit.org/show_bug.cgi?id=217423
<rdar://problem/69969351>

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Added a helper function to get uint64_t out of BigInt.

  • runtime/JSBigInt.cpp:

(JSC::JSBigInt::toUint64Heap): Added.

  • runtime/JSBigInt.h:

(JSC::JSBigInt::toUint64): Added.

Source/WebKit:

This patch introduces the JavaScript API (window.IPC) to send IPC out of WebContent process.
The feature is compiled in under ASAN and Debug builds and can be enabled at runtime.

window.IPC has two methods: sendMessage and sendSyncMessage which sends an async and sync IPC respectively.
It takes the destination process name (UI, GPU, or Networking), the destination ID (e.g. WebPageProxy ID),
message ID, timeout for sendSyncMessage, and optionally IPC message arguments. The message arguments can be
passed in as a TypedArray or ArrayBuffer, or a JavaScript array that recursively describes encoded objects.

Each object can be either a TypedArray or ArrayBuffer, which will be treated as encoded message, an array
which will be encoded as a Vector with each item within the array encoded recursively, or a dictionary which
describes a specific type.

When a specific type is described via a dictionary, "value" is encoed based on "type" as follows:

  • When "type" is "String", "value" is encoded as a WTF::String, treating null or undefined as a null string.
  • When "type" is "bool", "int8_t", "int16_t", "int32_t", "int64_t", "uint8_t", "uint16_t", "uint32_t", or "uint64_t", "value" (which can be BigInt or a number) is encoded as the respective C++ type.
  • When "type" is "RGBA", "value" is used as PackedColor::RGBA to construct WebCore::Color to be encoded.
  • When "type" is "IntRect" or "FloatRect", "x", "y", "width", and "height" are treated as respective values of IntRect or FloatRect C++ objects, and the constructed *Rect is encoded.
  • When "type" is "FrameInfoData", the context object's WebFrame's FrameInfoData is encoded.

The list of IPC messages are exposed on window.IPC.messages, and VisitedLinkStore ID, WebPageProxy ID,
and frame identifiers are also exposed as static variables on window.IPC.

  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld): Inject the API if enabled.

  • WebProcess/WebPage/IPCTestingAPI.cpp: Added.

(WebKit::IPCTestingAPI::JSIPC::create): Added.
(WebKit::IPCTestingAPI::JSIPC::webFrame): Added.
(WebKit::IPCTestingAPI::JSIPC::JSIPC): Added.
(WebKit::IPCTestingAPI::JSIPC::wrapperClass): Added.
(WebKit::IPCTestingAPI::JSIPC::unwrap): Added.
(WebKit::IPCTestingAPI::JSIPC::toWrapped): Added.
(WebKit::IPCTestingAPI::JSIPC::initialize): Added.
(WebKit::IPCTestingAPI::JSIPC::finalize): Added.
(WebKit::IPCTestingAPI::JSIPC::staticFunctions): Added.
(WebKit::IPCTestingAPI::JSIPC::staticValues): Added.
(WebKit::IPCTestingAPI::convertToUint64): Added.
(WebKit::IPCTestingAPI::processTargetFromArgument): Added.
(WebKit::IPCTestingAPI::destinationIDFromArgument): Added.
(WebKit::IPCTestingAPI::messageIDFromArgument): Added.
(WebKit::IPCTestingAPI::encodeTypedArray): Added.
(WebKit::IPCTestingAPI::createTypeError): Added.
(WebKit::IPCTestingAPI::encodeRectType): Added.
(WebKit::IPCTestingAPI::encodeIntegralType): Added.
(WebKit::IPCTestingAPI::VectorEncodeHelper::encode const): Added.
(WebKit::IPCTestingAPI::encodeArgument): Added.
(WebKit::IPCTestingAPI::JSIPC::sendMessage): Added.
(WebKit::IPCTestingAPI::JSIPC::sendSyncMessage): Added.
(WebKit::IPCTestingAPI::JSIPC::visitedLinkStoreID): Added.
(WebKit::IPCTestingAPI::JSIPC::webPageProxyID): Added.
(WebKit::IPCTestingAPI::JSIPC::frameIdentifier): Added.
(WebKit::IPCTestingAPI::JSIPC::retrieveID): Added.
(WebKit::IPCTestingAPI::JSIPC::messages): Added.
(WebKit::IPCTestingAPI::inject):

  • WebProcess/WebPage/IPCTestingAPI.h: Added.
  • WebProcess/WebPage/WebFrame.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_limitsNavigationsToAppBoundDomains):
(WebKit::WebPage::updatePreferences):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::ipcTestingAPIEnabled const):
(WebKit::WebPage::webPageProxyID const):
(WebKit::WebPage::visitedLinkTableID const):

Source/WTF:

Added a compile time flag (ENABLE_IPC_TESTING_API) and a runtime flag (IPCTestingAPIEnabled)
for the JavaScript API to test IPC.

  • Scripts/GeneratePreferences.rb:

(Preference::nameLower): Keep IPC uppercase.

  • Scripts/Preferences/WebPreferencesInternal.yaml: Added IPCTestingAPIEnabled.
  • wtf/PlatformEnable.h: Added ENABLE_IPC_TESTING_API.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitCocoa/IPCTestingAPI.mm: Added.

(-[IPCTestingAPIDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(TEST):

5:45 PM Changeset in webkit [268238] by weinig@apple.com
  • 21 edits in trunk

Refactor TestOptions code in WebKitTestRunner to make it easier to rationalize and extend
https://bugs.webkit.org/show_bug.cgi?id=217390

Reviewed by Darin Adler.

Refactors TestOptions code in WebKitTestRunner to make it clear how options coming in at
different levels are treated and what precedence each has. The order is (from least to most):

  • Global features passed to WebKitTestRunner via the command line (e.g. --show-touches)
  • Hardcoded features based on the path of the test being run (hopefully we can remove all soon)
  • Hardcoded platform specific defaults (currently only used by macOS for useThreadedScrolling).
  • Features from the test headers within the test itself.
  • Finally, a second chance for more platform specific defaults (currenly only used the Cocoa ports for setting enableProcessSwapOnNavigation and enableProcessSwapOnWindowOpen based on NSUserDefaults.)

To make this change work, and pave the way for future autogeneration of some of these test options,
the TestOptions struct (now class) was overhauled. Instead of storing the state itself, TestOptions
is now an immutable owner of a TestFeatures object. TestFeatures is a simple struct that contains maps
of option keys to values and can be merged with other TestFeatures objects. TestOptions takes a
TestFeatures at construction, and exposes getters for all keys, as well as defaults for when they are
not in the maps. In future changes, I would like to remove many of these (the ones that correspond
with WebKit preferences anyway) and have the keys and values automatically dealt with by WKPreferences.

  • WebKitTestRunner/Options.cpp:
  • WebKitTestRunner/Options.h:

Switch to std::unordered_map for consistency and ease of conversion.

  • WebKitTestRunner/PlatformWebView.h:

(WTR::PlatformWebView::viewSupportsOptions const):
Update to call new TestOptions functions.

  • WebKitTestRunner/StringFunctions.h:

(WTR::toWK):
(WTR::toWTFString):
Add conversions for std::string.

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

(WTR::TestController::initialize):
Replace some bools with a new global TestFeatures instance that forms the base of
all TestFeatures merges.

(WTR::TestController::generateContextConfiguration const):
(WTR::TestController::generatePageConfiguration):
(WTR::TestController::createWebViewWithOptions):
(WTR::TestController::ensureViewSupportsOptionsForTest):
(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::TestController::resetStateToConsistentValues):
Update to call new TestOptions functions.

(WTR::TestController::createTestURL):
Expose as a static member function on TestController for use in other files.

(WTR::TestController::testOptionsForTest const):
Rework to be a sequence of TestFeatures merges.

(WTR::TestController::updateWebViewSizeForTest):
(WTR::TestController::updateWindowScaleForTest):
Update to call new TestOptions functions.

(WTR::createTestURL): Deleted.
(WTR::parseBooleanTestHeaderValue): Deleted.
(WTR::parseStringTestHeaderValueAsRelativePath): Deleted.
(WTR::parseStringTestHeaderValueAsURL): Deleted.
(WTR::updateTestOptionsFromTestHeader): Deleted.
(WTR::TestController::platformAddTestOptions const): Deleted.
Moved TestOptions parsing to TestOptions.cpp

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::createTestSettingsDictionary):
Update to call new TestOptions functions.

  • WebKitTestRunner/TestOptions.h:

Reworks TestOptions to be an immutable owner of a TestFeatures struct, which is a set
of maps that map feature string keys, to values of type bool, double, string or string vector.

  • WebKitTestRunner/TestOptions.cpp:

(WTR::merge):
Merges two TestFeatures objects. If both contain the same key, the 'additional'
TestFeatures overrides the 'base' TestFeatures.

(WTR::dumpFeatures):
Helper to dump features to stderr, useful for debugging.

(WTR::keyType):
Helper for parser to know which value parser to use.

(WTR::parseBooleanTestHeaderValue):
(WTR::parseStringTestHeaderValueAsRelativePath):
(WTR::parseStringTestHeaderValueAsURL):
Value parsers moved from TestController.cpp

(WTR::parseTestHeader):
Header parser moved from TestController.cpp. Update to now return
a TestFeatures object and use keyType to pick value parser rather
than inlining the if statements.

(WTR::hardcodedFeaturesBasedOnPathForTest):
Moved from the TestOptions contructor and reworked to return a TestFeatures
object to be merged by the caller.

(WTR::featureDefaultsFromTestHeaderForTest):
Creates a TestFeatures for the test headers of the current test.

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::platformSpecificFeatureOverridesDefaultsForTest const):
Reworked to now return a TestFeatures object that will be merged, rather than updating
a TestOptions. Moves enableInAppBrowserPrivacy work to TestController::platformWillRunTest
where it is more appropriate.

(WTR::TestController::platformInitializeDataStore):
(WTR::TestController::platformCreateWebView):
(WTR::TestController::finishCreatingPlatformWebView):
(WTR::TestController::setApplicationBundleIdentifier):
(WTR::TestController::cocoaResetStateToConsistentValues):
(WTR::contentMode):
Update to call new TestOptions functions.

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformResetStateToConsistentValues):
(WTR::TestController::platformConfigureViewForTest):
Update to call new TestOptions functions.

(WTR::TestController::platformSpecificFeatureDefaultsForTest const):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest const): Deleted.
Moved GeneratedTouchesDebugWindow work to TestController::platformConfigureViewForTest
where it is more appropriate and removed shouldShowTouches setting as that is done
globally now.

  • WebKitTestRunner/mac/PlatformWebViewMac.mm:

(WTR::PlatformWebView::PlatformWebView):
Update to call new TestOptions functions.

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::platformSpecificFeatureDefaultsForTest const):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest const): Deleted.
Remove shouldUseRemoteLayerTree and shouldShowWebView, as those are now done globally,
and re-implemented useThreadedScrolling to use boolFeatures.

  • WebKitTestRunner/win/TestControllerWin.cpp:

(WTR::TestController::platformSpecificFeatureDefaultsForTest const):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest const): Deleted.
Updated for new signature.

  • WebKitTestRunner/wpe/TestControllerWPE.cpp:

(WTR::TestController::platformSpecificFeatureDefaultsForTest const):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest const): Deleted.
Updated for new signature.

  • WebKitTestRunner/gtk/TestControllerGTK.cpp:

(WTR::TestController::platformSpecificFeatureDefaultsForTest const):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest const): Deleted.
Updated for new signature.

5:34 PM Changeset in webkit [268237] by Russell Epstein
  • 3 edits in branches/safari-610.2.11.0-branch/Source/WebCore

Apply patch. rdar://problem/70104437

5:27 PM Changeset in webkit [268236] by Wenson Hsieh
  • 2 edits in trunk/LayoutTests

Unreviewed, unskip several canvas-related layout test directories when enabling GPU process

The vast majority of tests in these directories now pass; we can now enable these directories by default, and
track the remaining tests as individual failures.

  • gpu-process/TestExpectations:
5:26 PM Changeset in webkit [268235] by Russell Epstein
  • 3 edits in branches/safari-610.2.11.1-branch/Source/WebCore

Apply patch. rdar://problem/69594474

5:24 PM Changeset in webkit [268234] by James Darpinian
  • 15 edits
    10 adds in trunk

Support EXT_texture_compression_rgtc WebGL extension
https://bugs.webkit.org/show_bug.cgi?id=217198

Reviewed by Kenneth Russell.

Source/WebCore:

Test: webgl/conformance/extensions/ext-texture-compression-rgtc.html

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMConvertWebGL.cpp:

(WebCore::convertToJSValue):

  • html/canvas/EXTTextureCompressionRGTC.cpp: Added.

(WebCore::EXTTextureCompressionRGTC::EXTTextureCompressionRGTC):
(WebCore::EXTTextureCompressionRGTC::getName const):

  • html/canvas/EXTTextureCompressionRGTC.h: Added.
  • html/canvas/EXTTextureCompressionRGTC.idl: Added.
  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::getExtension):
(WebCore::WebGL2RenderingContext::getSupportedExtensions):

  • html/canvas/WebGLExtension.h:
  • html/canvas/WebGLRenderingContext.cpp:

(WebCore::WebGLRenderingContext::getExtension):
(WebCore::WebGLRenderingContext::getSupportedExtensions):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::extensionIsEnabled):
(WebCore::WebGLRenderingContextBase::validateCompressedTexFuncData):
(WebCore::WebGLRenderingContextBase::loseExtensions):

  • html/canvas/WebGLRenderingContextBase.h:
  • platform/graphics/ExtensionsGL.h:

LayoutTests:

  • webgl/conformance/extensions/ext-texture-compression-rgtc-expected.txt: Added.
  • webgl/conformance/extensions/ext-texture-compression-rgtc.html: Added.
  • webgl/conformance/extensions/s3tc-and-rgtc-expected.txt: Added.
  • webgl/conformance/extensions/s3tc-and-rgtc.html: Added.
  • webgl/resources/webgl_test_files/conformance/extensions/ext-texture-compression-rgtc.html: Added.
  • webgl/resources/webgl_test_files/conformance/extensions/s3tc-and-rgtc.html: Added.
  • webgl/resources/webgl_test_files/js/tests/compressed-texture-utils.js: Added.
5:15 PM Changeset in webkit [268233] by Hector Lopez
  • 1 edit
    2 adds in trunk/LayoutTests

Add Mojave specific result
https://bugs.webkit.org/show_bug.cgi?id=167729

Unreviewed test gardening.

  • platform/mac-mojave/imported/w3c/web-platform-tests/css/css-pseudo/text-selection-expected.txt: Added.
5:03 PM Changeset in webkit [268232] by achristensen@apple.com
  • 7 edits in trunk

FileReader.result should return null if it isn't done yet
https://bugs.webkit.org/show_bug.cgi?id=217484

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

  • web-platform-tests/FileAPI/reading-data-section/filereader_result-expected.txt:

Source/WebCore:

This matches Chrome and Firefox.
Covered by newly passing web platform tests.

  • fileapi/FileReader.cpp:

(WebCore::FileReader::result const):

LayoutTests:

  • fast/files/read-file-async-expected.txt:
  • fast/files/workers/worker-read-file-async-expected.txt:
4:44 PM Changeset in webkit [268231] by Peng Liu
  • 4 edits in trunk

[Media in GPU Process] Cannot activate or deactivate an audio session
https://bugs.webkit.org/show_bug.cgi?id=217492

Reviewed by Eric Carlson.

Source/WebKit:

No new tests, covered by existing tests.

  • WebProcess/GPU/media/RemoteAudioSession.cpp:

(WebKit::RemoteAudioSession::tryToSetActiveInternal):

LayoutTests:

  • gpu-process/TestExpectations:
4:28 PM Changeset in webkit [268230] by Alan Coon
  • 1 edit in branches/safari-610-branch/Source/WebKit/UIProcess/mac/WebContextMenuProxyMac.mm

Build fix for makeBlockPtr.

4:28 PM Changeset in webkit [268229] by Alan Coon
  • 4 edits in branches/safari-610-branch/Source

Cherry-pick r268052. rdar://problem/70097377

Enable video capture in WebProcess by default on MacOS
https://bugs.webkit.org/show_bug.cgi?id=217385
<rdar://problem/69999542>

Reviewed by Sam Weinig.

Source/WebKit:

Manually tested in MiniBrowser.

  • Shared/WebPreferencesDefaultValues.cpp:
  • Shared/WebPreferencesDefaultValues.h:

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:

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

4:28 PM Changeset in webkit [268228] by achristensen@apple.com
  • 16 edits
    5 adds in trunk

Implement Blob.stream
https://bugs.webkit.org/show_bug.cgi?id=217457

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/FileAPI/blob/Blob-stream.any-expected.txt:
  • web-platform-tests/FileAPI/blob/Blob-stream.any.worker-expected.txt:
  • web-platform-tests/FileAPI/idlharness-expected.txt:
  • web-platform-tests/FileAPI/idlharness.worker-expected.txt:

Source/WebCore:

It's implemented in Chrome and Firefox.

  • Modules/async-clipboard/ClipboardItemBindingsDataSource.h:
  • bindings/js/ReadableStream.h:

(WebCore::toJSNewlyCreated):

  • bindings/scripts/CodeGeneratorJS.pm:

(AddToIncludesForIDLType):

  • fileapi/Blob.cpp:

(WebCore::Blob::stream):

  • fileapi/Blob.h:
  • fileapi/Blob.idl:
  • fileapi/FileReaderLoader.cpp:

(WebCore::FileReaderLoader::FileReaderLoader):
(WebCore::FileReaderLoader::takeRawData):

  • fileapi/FileReaderLoader.h:
  • fileapi/FileReaderLoaderClient.h:

LayoutTests:

  • fast/files/blob-stream-error-expected.txt: Added.
  • fast/files/blob-stream-error.html: Added.
  • fast/files/blob-stream-frame-expected.txt: Added.
  • fast/files/blob-stream-frame.html: Added.
  • fast/files/resources/blob-stream-iframe.html: Added.
4:28 PM Changeset in webkit [268227] by Alan Coon
  • 3 edits in branches/safari-610-branch/Tools

Cherry-pick r268023. rdar://problem/70056589

Disable media capture if an app's entitlements won't allow access to capture devices
https://bugs.webkit.org/show_bug.cgi?id=217319
<rdar://problem/69956112>

Unreviewed, address post-review comments.

  • MiniBrowser/mac/Info.plist: Update media capture usage strings.
  • MobileMiniBrowser/MobileMiniBrowser/Info.plist: Ditto.

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

4:28 PM Changeset in webkit [268226] by Alan Coon
  • 8 edits in branches/safari-610-branch

Cherry-pick r268012. rdar://problem/70056589

Disable media capture if an app's entitlements won't allow access to capture devices
https://bugs.webkit.org/show_bug.cgi?id=217319
<rdar://problem/69956112>

Reviewed by Youenn Fablet.

Source/WebKit:

No new tests, tested manually with MiniBrowser and Safari.

  • UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm: (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureAudio): If the app is sandboxed, check for the entitlement required for audio capture. Don't bother checking for usage string if TCC has already authorized capture. (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo): Ditto for video capture.
  • UIProcess/Cocoa/WebPreferencesCocoa.mm: (WebKit::WebPreferences::platformInitializeStore): Initialize mediaDevicesEnabled manually because its default value is always false in the WebProcess and may be true in the UIProcess. WebPreferences assumes the default will always be the same in both processes, and so has an optimization that only sends values to the WebProcess if they differ from the default value. This means if the default in the UIProcess is true it won't be pushed to the WebProcess, so capture won't work.
  • Platform/spi/ios/TCCSPI.h: Update TCCAccessPreflightResult.

Tools:

  • MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
  • MiniBrowser/mac/AppDelegate.m: (-[BrowserAppDelegate defaultConfiguration]): Don't set configuration._mediaCaptureEnabled, it should no longer be necessary.
  • MiniBrowser/mac/Info.plist: Remove unneeded keys.
  • MobileMiniBrowser/MobileMiniBrowser/Info.plist: Ditto. Add usage strings.

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

4:28 PM Changeset in webkit [268225] by Alan Coon
  • 10 edits
    1 add in branches/safari-610-branch

Cherry-pick r267844. rdar://problem/70056601

Prevent media capture unless the application has correct data for system permission prompt
https://bugs.webkit.org/show_bug.cgi?id=217104
<rdar://problem/69761929>

Reviewed by Darin Adler.

Source/WebKit:

Tested manually with MiniBrowser.

  • SourcesCocoa.txt:
  • UIProcess/Cocoa/UIDelegate.mm: (WebKit::requestAVCaptureAccessForMediaType): Renamed from requestAccessForMediaType. (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest): Deny requests of the application is not permitted to capture. Restructure logic to make it easier to understand. (WebKit::requestAccessForMediaType): Deleted.
  • UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm: Added. (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureAudio): Check for required Info.plist string. (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo): Ditto.
  • UIProcess/Cocoa/WebPageProxyCocoa.mm: Update for unified build.
  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp: (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureAudio): (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo):
  • UIProcess/UserMediaPermissionRequestManagerProxy.h:
  • WebKit.xcodeproj/project.pbxproj:

Tools:

  • MiniBrowser/mac/Info.plist: Add necessary entitlements and usage strings.
  • MobileMiniBrowser/MobileMiniBrowserFramework/WebViewController.m: (-[WebViewController createWebView]): Setting the private capture preference is not necessary because we set configuration._mediaCaptureEnabled.

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

4:28 PM Changeset in webkit [268224] by Alan Coon
  • 3 edits in branches/safari-610-branch/Source/WebKit

Cherry-pick r267698. rdar://problem/70056601

Make sure our calls to AVCaptureDevice requestAccessForMediaType do processing on the main thread
https://bugs.webkit.org/show_bug.cgi?id=216974

Reviewed by Darin Adler.

The completion handler to [AVCaptureDeviceClass requestAccessForMediaType:] may sometimes be called in a background thread on iOS.
Make sure to hop to the main thread if that is the case.
Also make sure to ref/weakref lambda captured variables.

  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm: (WebKit::requestAccessForMediaType): (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):

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

4:28 PM Changeset in webkit [268223] by Alan Coon
  • 16 edits in branches/safari-610-branch

Cherry-pick r267563. rdar://problem/70056594

Introduce WKWebViewConfiguration mediaCaptureEnabled
https://bugs.webkit.org/show_bug.cgi?id=216872

Reviewed by Alex Christensen.

Source/WebKit:

Add a new boolean configuration to enable/disable mediaDevices exposure.
Value is off by default.
A future patch will remove the mediaDevices WebPreferences based API, given there is no need
to enable/disable mediaDevices during the lifetime of a page.

Covered by existing tests.

  • UIProcess/API/APIPageConfiguration.cpp: (API::PageConfiguration::copy const):
  • UIProcess/API/APIPageConfiguration.h: (API::PageConfiguration::setMediaDevicesEnabled): (API::PageConfiguration::mediaDevicesEnabled const):
  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _setupPageConfiguration:]):
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm: (-[WKWebViewConfiguration _mediaDevicesEnabled]): (-[WKWebViewConfiguration _setMediaDevicesEnabled:]):
  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

Tools:

Make use of new configuration boolean instead of mediaDevicesEnabled WebPreferences API.

  • MiniBrowser/mac/AppDelegate.m: (-[BrowserAppDelegate defaultConfiguration]):
  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm: (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WebKit/GetUserMediaNavigation.mm: (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm: (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WebKit/MediaStreamTrackDetached.mm: (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WebKitCocoa/GetDisplayMedia.mm: (TestWebKitAPI::GetDisplayMediaTest::SetUp):
  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
  • TestWebKitAPI/Tests/WebKitCocoa/UserMediaDisabled.mm: (MediaCaptureDisabledTest::SetUp):
  • TestWebKitAPI/Tests/WebKitCocoa/UserMediaSimulateFailedSandbox.mm: (MediaCaptureSimulateFailedSandbox::SetUp):

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

4:28 PM Changeset in webkit [268222] by Alan Coon
  • 13 edits in branches/safari-610-branch

Cherry-pick r267081. rdar://problem/70056594

End of media capture should not be reported before 3 seconds of the start of capture
https://bugs.webkit.org/show_bug.cgi?id=216415
Source/WebCore:

Reviewed by Eric Carlson.

Add a timer that allows taking a function and a delay as parameter.
Covered by added API test.

  • platform/Timer.h: (WebCore::DeferrableTaskTimer::fired): (WebCore::DeferrableTaskTimer::doTask): (WebCore::DeferrableTaskTimer::cancel):

Source/WebKit:

<rdar://problem/68512358>

Reviewed by Eric Carlson.

Add support for delaying of end of capture notification to the application.
This allows to ensure that a capture indicator stays for long enough for the user to notice it.
A capture indicator should be visible to the user for at least three seconds.

A timer is scheduled when starting a capture and there is no ongoing capture.
As long as the timer is active, the capture state cannot be transitioned to no capture.
Other transitions are allowed.
Once the timer kicks in, any capture state update is done synchronously.
Ensure to update the capture state when the timer kicks in.

Note that even navigations will not allow transitioning the capture state sooner.
This is done to ensure a page does not try to capture one frame before navigating to another page.
In practice, very few pages should navigate quickly after starting capture.

  • UIProcess/API/C/WKPage.cpp: (WKPageGetMediaState): (WKPageSetMediaCaptureReportingDelayForTesting):
  • UIProcess/API/C/WKPagePrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm: (-[WKWebView _mediaCaptureState]):
  • UIProcess/API/Cocoa/WKWebViewPrivateForTesting.h:
  • UIProcess/API/Cocoa/WKWebViewTesting.mm: (-[WKWebView _mediaCaptureReportingDelayForTesting]): (-[WKWebView _setMediaCaptureReportingDelayForTesting:]):
  • UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::updatePlayingMediaDidChange): (WebKit::WebPageProxy::updateReportedMediaCaptureState):
  • UIProcess/WebPageProxy.h: (WebKit::WebPageProxy::reportedMediaCaptureState const): (WebKit::WebPageProxy::mediaCaptureReportingDelay const): (WebKit::WebPageProxy::setMediaCaptureReportingDelay):

Tools:

Reviewed by Eric Carlson.

  • TestWebKitAPI/Tests/WebKit/GetUserMedia.mm: (TestWebKitAPI::TEST):
  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm: (-[GetUserMediaUIDelegate _webView:mediaCaptureStateDidChange:]): Add a notCapturing boolean and wait for the notification before going back to the capturing page. Decrease delay to 1 second to make the test run faster.
  • WebKitTestRunner/TestController.cpp: (WTR::TestController::resetStateToConsistentValues): Make sure to set media capture state delay to zero.

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

4:28 PM Changeset in webkit [268221] by Alan Coon
  • 6 edits
    2 adds in branches/safari-610-branch

Cherry-pick r267838. rdar://problem/70056580

getUserMedia with sampleRate constraints may fail
https://bugs.webkit.org/show_bug.cgi?id=217147
<rdar://problem/69831144>

Reviewed by Eric Carlson.

In case of new capture, make sure to reset sample rate and volume to default values.
This ensures that a sample rate that will fail the capture will not stick for other pages.
Manually tested.

  • platform/mediastream/mac/BaseAudioSharedUnit.cpp: (WebCore::BaseAudioSharedUnit::prepareForNewCapture):

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

4:28 PM Changeset in webkit [268220] by Alan Coon
  • 10 edits
    1 move
    1 delete in branches/safari-610-branch

Cherry-pick r267568. rdar://problem/70056584

Implement default behavior for getUserMedia requests in case where there is no delegate set
https://bugs.webkit.org/show_bug.cgi?id=216968

Reviewed by Eric Carlson.

Source/WebKit:

In case page UIDelegate is not set, make the getUserMedia request do its default action.
In case there is a UIDelegate but no getUserMedia specific delegates, make the getUserMedia request do its default action.
Default action is deny for getDisplayMedia and for non cocoa ports.
For cocoa ports, a prompt is shown.

Manually tested with MiniBrowser and MobileMiniBrowser.

  • SourcesCocoa.txt:
  • UIProcess/API/APIUIClient.h: (API::UIClient::decidePolicyForUserMediaPermissionRequest):
  • UIProcess/Cocoa/UIDelegate.mm: (WebKit::requestUserMediaAuthorizationForFrame):
  • UIProcess/Cocoa/UserMediaPermissionRequestProxy.mm: Renamed from Source/WebKit/UIProcess/Cocoa/WKUserMediaCaptureAccessAlert.mm. (WebKit::alertMessageText): (WebKit::UserMediaPermissionRequestProxy::doDefaultAction):
  • UIProcess/Cocoa/WKUserMediaCaptureAccessAlert.h: Removed.
  • UIProcess/UserMediaPermissionRequestProxy.cpp: (WebKit::UserMediaPermissionRequestProxy::doDefaultAction):
  • UIProcess/UserMediaPermissionRequestProxy.h:
  • WebKit.xcodeproj/project.pbxproj:

Tools:

Add camera and microphone entitlements to MobileMiniBrowser.
Expose mediaDevices to web pages and use mock devices.

  • MobileMiniBrowser/MobileMiniBrowser/Info.plist:
  • MobileMiniBrowser/MobileMiniBrowserFramework/WebViewController.m: (-[WebViewController createWebView]):

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

4:28 PM Changeset in webkit [268219] by Alan Coon
  • 11 edits
    2 adds in branches/safari-610-branch

Cherry-pick r267414. rdar://problem/70056613

Implement a default prompt for getUserMedia
https://bugs.webkit.org/show_bug.cgi?id=216821

Reviewed by Eric Carlson.

Source/WebCore:

Manually tested by running Minibrowser.

  • en.lproj/Localizable.strings:

Source/WebKit:

Move preferences used by WebRTC develop menu to internals.
This allows having them in MiniBrowser.

Enable video capture in UIProcess by default for non Safari applications.
Add support for a getUserMedia prompt, very similar to iOS current prompt.
Use the prompt in case the application does not implement any of the two delegates.

  • Shared/WebPreferences.yaml:
  • Shared/WebPreferencesDefaultValues.cpp: (WebKit::defaultCaptureVideoInUIProcessEnabled):
  • Shared/WebPreferencesDefaultValues.h:
  • Shared/WebPreferencesExperimental.yaml:
  • Shared/WebPreferencesInternal.yaml:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm: (WebKit::UIDelegate::setDelegate): (WebKit::requestUserMediaAuthorizationForFrame): (WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
  • UIProcess/Cocoa/WKUserMediaCaptureAccessAlert.h: Added.
  • UIProcess/Cocoa/WKUserMediaCaptureAccessAlert.mm: Added. (WebKit::visibleDomain): (WebKit::alertMessageText): (WebKit::presentUserMediaCaptureAccessAlert):
  • WebKit.xcodeproj/project.pbxproj:

Tools:

Remove getUserMedia delegate implementations to use WebKit built-in prompt.
Add camera and microphone entitlements to allow using real cameras and microphones.
Keep using mock devices as the default.

  • MiniBrowser/MiniBrowser.entitlements:
  • MiniBrowser/mac/WK2BrowserWindowController.m: (-[WK2BrowserWindowController _webView:requestMediaCaptureAuthorization:decisionHandler:]): Deleted. (-[WK2BrowserWindowController _webView:includeSensitiveMediaDeviceDetails:]): Deleted.

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

4:27 PM Changeset in webkit [268218] by Alan Coon
  • 6 edits in branches/safari-610-branch/Source/WebKit

Cherry-pick r267237. rdar://problem/70056605

Unified build fixes in media code
https://bugs.webkit.org/show_bug.cgi?id=216691

Reviewed by Sam Weinig.

Add missing includes and/or missing undef.
No change of behavior.

  • GPUProcess/webrtc/RemoteAudioMediaStreamTrackRenderer.cpp:
  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:
  • WebProcess/WebPage/WebPageOverlay.h:
  • WebProcess/cocoa/RemoteRealtimeMediaSource.cpp:
  • WebProcess/cocoa/RemoteRealtimeMediaSource.h:

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

4:05 PM Changeset in webkit [268217] by Hector Lopez
  • 2 edits
    2 deletes in trunk/Source/WebKit

Unreviewed, reverting r268155.

This reverts r268155 becasue it broke internal builds

Reverted changeset:

"[WebAuthn] Implement a dummy WebAuthenticationAgent"
https://bugs.webkit.org/show_bug.cgi?id=217401
https://trac.webkit.org/changeset/268155

3:33 PM Changeset in webkit [268216] by Russell Epstein
  • 1 copy in branches/safari-610.2.11.3-branch

New branch.

3:33 PM Changeset in webkit [268215] by Russell Epstein
  • 1 copy in branches/safari-610.2.11.2-branch

New branch.

3:20 PM Changeset in webkit [268214] by commit-queue@webkit.org
  • 16 edits in trunk

REGRESSION (r267763): [ iOS wk2 ] http/tests/in-app-browser-privacy/non-app-bound-domain-does-not-get-app-bound-session.html is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=217386

Patch by Alex Christensen <achristensen@webkit.org> on 2020-10-08
Reviewed by Brent Fulgham.

Source/WebKit:

Use SPI instead of NSUserDefaults to turn on test mode for app browser privacy.
This is more reliable with the timing change of when a WebsiteDataStore's parameters are sent to the network process.

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

(-[_WKWebsiteDataStoreConfiguration enableInAppBrowserPrivacyForTesting]):
(-[_WKWebsiteDataStoreConfiguration setEnableInAppBrowserPrivacyForTesting:]):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::platformSetNetworkParameters):
(WebKit::WebsiteDataStore::ensureAppBoundDomains const):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:

(WebKit::WebsiteDataStoreConfiguration::copy const):

  • UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:

(WebKit::WebsiteDataStoreConfiguration::enableInAppBrowserPrivacyForTesting const):
(WebKit::WebsiteDataStoreConfiguration::setEnableInAppBrowserPrivacyForTesting):

Source/WTF:

  • Scripts/Preferences/WebPreferencesDebug.yaml:

Tools:

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::platformAddTestOptions const):
(WTR::TestController::platformInitializeDataStore):

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformResetStateToConsistentValues):

LayoutTests:

  • platform/ios-simulator-wk2/TestExpectations:
2:41 PM Changeset in webkit [268213] by Russell Epstein
  • 5 edits in branches/safari-610.2.11.0-branch

Cherry-pick r268117. rdar://problem/70097482

Presidential Executive Order pages not accessible with Safari.
https://bugs.webkit.org/show_bug.cgi?id=217415

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/aria-modal.html.

These pages have a dialog modal element of the form

<div class="popover" role="dialog" aria-modal="true">

with style visible and a display value different from none. This makes
WebCore/accessibility to treat it as if the dialog were always visible,
and thus do not convey the content of the page outside the dialog to
VoiceOver. The author controls the visibility of the dialog using the
style opacity. This patch adds the check for the opacity to determine
whether an element is visible or not.

  • accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::isNodeVisible const):

LayoutTests:

Expanded this test to cover the case whether the modal dialog visibility
is controlled by its opacity. Cleaned up JS code and made it work in
isolated tree mode.

  • accessibility/aria-modal-expected.txt:
  • accessibility/aria-modal.html:

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

2:40 PM Changeset in webkit [268212] by Russell Epstein
  • 4 edits in branches/safari-610.2.11.1-branch/Source/WebCore/dom

Cherry-pick f9437de2cd47. rdar://problem/69101091

Fix the build after cherry-picking r266909.

2:40 PM Changeset in webkit [268211] by Russell Epstein
  • 8 edits
    2 adds in branches/safari-610.2.11.1-branch

Cherry-pick r266909. rdar://problem/69101091

Source/WebCore:
Text replacements at the beginning of a second line are replaced too early
https://bugs.webkit.org/show_bug.cgi?id=216327
<rdar://problem/68170353>

Reviewed by Darin Adler.

In the changes in r258871, using SimpleRanges instead of Range causing some side effects
when the replacements at the beginning of lines. The ranges that we are counting are backwards
and the return characters are being counted instead of being ignored. There is almost
certainly a better fix than this, but this patch restores the original logic that
was present when Range was being used, until a better fix can be worked out.

Test: editing/spelling/text-replacement-first-word-second-line.html

  • editing/Editor.cpp: (WebCore::Editor::markAndReplaceFor):
  • editing/TextCheckingHelper.cpp: (WebCore::TextCheckingParagraph::automaticReplacementStart const): (WebCore::TextCheckingParagraph::automaticReplacementLength const):
  • editing/TextCheckingHelper.h:

LayoutTests:
Overlapping text replacements at the beginning of a line are replaced too early
https://bugs.webkit.org/show_bug.cgi?id=216327

Reviewed by Darin Adler.

  • editing/spelling/text-replacement-first-word-second-line-expected.txt: Added.
  • editing/spelling/text-replacement-first-word-second-line.html: Added.

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

2:39 PM Changeset in webkit [268210] by Russell Epstein
  • 4 edits
    2 adds in branches/safari-610.2.11.1-branch

Cherry-pick r268162. rdar://problem/70097353

REGRESSION: Safari unable to load PDF in <embed> (docs.legalconnect.com)
https://bugs.webkit.org/show_bug.cgi?id=217451
<rdar://problem/69767043>

Reviewed by Alex Christensen.

Source/WebCore:

Test: fast/replaced/pdf-as-embed-with-no-mime-type-is-not-blank.html

If plugins are enabled, we'll always let the request go through, and WebKit will
guess that files with PDFPlugin-handled extensions should instantiate PDFPlugin,
even if no other plugins are available.

However, if plugins are disabled, requestPlugin() will early return if the explicitly
specified MIME type is not handled by an application plugin (even though the downstream
WebKit code would have happily instantiated an application plugin for us).

Application plugins shouldn't depend on the plugin enablement setting.
To fix this, have SubframeLoader guess the MIME type if not explicitly specified
(matching WebKit's behavior), and allow the request if it matches an application plugin.

  • loader/SubframeLoader.cpp: (WebCore::findPluginMIMETypeFromURL): Improve this previously logging-only function to use the lastPathComponent of the URL instead of randomly looking at the end of the URL, to ignore query strings and fragments when looking for the file extension.

(WebCore::FrameLoader::SubframeLoader::requestPlugin):
Make use of findPluginMIMETypeFromURL to guess the MIME type if it's not
explicitly specified. If the guessed MIME type is one that is handled
by application plugins, allow the request to go out to WebKit (which
may then instantiate a PDFPlugin, for example).

(WebCore::logPluginRequest):
(WebCore::FrameLoader::SubframeLoader::requestObject):
(WebCore::FrameLoader::SubframeLoader::createJavaAppletWidget):
Pass the URL instead of stringifying it, so we can lastPathComponent as above.

LayoutTests:

  • fast/replaced/pdf-as-embed-with-no-mime-type-is-not-blank-expected-mismatch.html: Added.
  • fast/replaced/pdf-as-embed-with-no-mime-type-is-not-blank.html: Added. Add a test ensuring that <embed> with no specified MIME type still renders the PDF.

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

2:39 PM Changeset in webkit [268209] by Russell Epstein
  • 5 edits in branches/safari-610.2.11.1-branch

Cherry-pick r268117. rdar://problem/70104128

Presidential Executive Order pages not accessible with Safari.
https://bugs.webkit.org/show_bug.cgi?id=217415

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/aria-modal.html.

These pages have a dialog modal element of the form

<div class="popover" role="dialog" aria-modal="true">

with style visible and a display value different from none. This makes
WebCore/accessibility to treat it as if the dialog were always visible,
and thus do not convey the content of the page outside the dialog to
VoiceOver. The author controls the visibility of the dialog using the
style opacity. This patch adds the check for the opacity to determine
whether an element is visible or not.

  • accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::isNodeVisible const):

LayoutTests:

Expanded this test to cover the case whether the modal dialog visibility
is controlled by its opacity. Cleaned up JS code and made it work in
isolated tree mode.

  • accessibility/aria-modal-expected.txt:
  • accessibility/aria-modal.html:

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

2:17 PM Changeset in webkit [268208] by Fujii Hironori
  • 3 edits in trunk/Source/WebCore

[WinCairo] ASSERTION FAILED: m_renderingUpdateRemainingSteps.last().isEmpty() in WebCore::Page::finalizeRenderingUpdate since r268075
https://bugs.webkit.org/show_bug.cgi?id=217490

Reviewed by Simon Fraser.

When the assertion failed, m_renderingUpdateRemainingSteps was
0x2000 (ScrollingTreeUpdate). The flag ScrollingTreeUpdate should
be used only if ENABLE(ASYNC_SCROLLING).

  • page/Page.cpp:

(WebCore::operator<<):

  • page/Page.h:

Conditioned out ScrollingTreeUpdate by ENABLE(ASYNC_SCROLLING).

2:07 PM Changeset in webkit [268207] by Jonathan Bedard
  • 2 edits in trunk/Tools

[webkitpy] Support custom version information
https://bugs.webkit.org/show_bug.cgi?id=217485
<rdar://problem/70069051>

Rubber-stamped by Aakash Jain.

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

(PlatformInfo.init):

1:20 PM Changeset in webkit [268206] by Andres Gonzalez
  • 4 edits in trunk

Presidential Executive Order pages not accessible with Safari.
https://bugs.webkit.org/show_bug.cgi?id=217415
<rdar://problem/69922416>

Reviewed by Chris Fleizach and Simon Fraser.

Follow up to the previous change for this bug per Simon Fraser's comment.
Check not only the visibility and opacity of the object in question but
also of its ancestors.
Expanded the test accessibility/aria-modal.html to include the case
where the visibility of the modal dialog is determined by the opacity of
its parent object.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::isNodeVisible const):

12:53 PM Changeset in webkit [268205] by Russell Epstein
  • 8 edits in branches/safari-610.2.11.0-branch/Source

Versioning.

WebKit-7610.2.11.0.1

12:47 PM Changeset in webkit [268204] by Russell Epstein
  • 8 edits in branches/safari-610.2.11.1-branch/Source

Versioning.

WebKit-7610.2.11.1.1

12:29 PM Changeset in webkit [268203] by Russell Epstein
  • 1 copy in branches/safari-610.2.11.1-branch

New branch.

12:29 PM Changeset in webkit [268202] by Alan Bujtas
  • 10 edits in trunk

[LFC][Integration] Enable float clear for <br>
https://bugs.webkit.org/show_bug.cgi?id=217450

Reviewed by Antti Koivisto.

Source/WebCore:

This patch enables IFC layout for <br clear> content.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

  • layout/integration/LayoutIntegrationInlineContent.h:
  • layout/integration/LayoutIntegrationLine.h:
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::constructContent):
(WebCore::LayoutIntegration::LineLayout::contentLogicalHeight const):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::clearFloats): Match the floored position of the float boxes in the search tree.

LayoutTests:

  • platform/ios-wk1/fast/css/word-space-extra-expected.txt: Rebaselining.
  • platform/ios/fast/css/word-space-extra-expected.txt:
  • platform/mac/fast/css/word-space-extra-expected.txt:
12:23 PM Changeset in webkit [268201] by Russell Epstein
  • 1 copy in branches/safari-610.2.11.0-branch

New branch.

12:10 PM Changeset in webkit [268200] by Keith Rollin
  • 6 edits
    2 deletes in trunk

Remove copy-webkitlibraries-to-product-directory
https://bugs.webkit.org/show_bug.cgi?id=217465
<rdar://problem/70082193>

Reviewed by Darin Adler.

This script no longer does anything, so remove it along with the
scaffolding around it that invokes it during the build.

.:

  • Makefile:

Tools:

  • Scripts/build-jsc:
  • Scripts/build-webkit:
  • Scripts/copy-webkitlibraries-to-product-directory: Removed.

WebKitLibraries:

  • Makefile: Removed.
12:03 PM Changeset in webkit [268199] by Chris Dumez
  • 4 edits in trunk

Crash under WebKit::WebProcessCache::clear()
https://bugs.webkit.org/show_bug.cgi?id=217480

Reviewed by Geoffrey Garen.

Source/WebKit:

Protect |process| in the responsiveness check lambda in WebProcessCache::addProcessIfPossible().
If we fail to do so and WebProcessCache::clear() gets called while the responsiveness check is
pending, the WebProcessProxy destructor may get called while clear() clears m_pendingAddRequests,
which would resolve the responsiveness check with responsive=false, and cause the lambda to
try and remove the entry from m_pendingAddRequests (while clear() is clearing it).

  • UIProcess/WebProcessCache.cpp:

(WebKit::WebProcessCache::addProcessIfPossible):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:
11:56 AM Changeset in webkit [268198] by commit-queue@webkit.org
  • 28 edits
    3 deletes in trunk/Source/WebCore

Mac: Remove OpenGL and OpenGL ES backends
https://bugs.webkit.org/show_bug.cgi?id=217374

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-10-08
Reviewed by Darin Adler.

Remove macOS OpenGL (CGL) and iOS OpenGL ES (EAGL)
implementations of GraphicsContextGLOpenGL. These
are not used anymore and cannot be used for conformant
WebGL. The two removed backends would just create
maintainance burden.

Removes TextureCacheCV, this was not implemented for
ANGLE and in comments it was said to be disabled in
the platform.

Fixes a bug where iOS apps on Mac Apple Silicon would
not use correct texture target to convert the video
frames in VideoTextureCopierCV.

Fixes few instances of using GL types in WebGL implementation
instead of WebCore defined GCGL types. This is needed
now that the includes are (a bit) more correct.

No new tests, a refactoring.

  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/canvas/ANGLEInstancedArrays.cpp:

(WebCore::ANGLEInstancedArrays::supported):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::create):
(WebCore::WebGLRenderingContextBase::readPixels):

  • platform/graphics/GraphicsContextGL.cpp:
  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::reshapeFBOs):
(WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToCanvas):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm:

(WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL):
(WebCore::GraphicsContextGLOpenGL::IOSurfaceTextureTarget):
(WebCore::GraphicsContextGLOpenGL::IOSurfaceTextureTargetQuery):
(WebCore::GraphicsContextGLOpenGL::EGLIOSurfaceTextureTarget):
(WebCore::GraphicsContextGLOpenGL::makeContextCurrent):
(WebCore::GraphicsContextGLOpenGL::checkGPUStatus):
(WebCore::GraphicsContextGLOpenGL::setContextVisibility):
(WebCore::GraphicsContextGLOpenGL::screenDidChange):

  • platform/graphics/cocoa/WebGLLayer.h:
  • platform/graphics/cocoa/WebGLLayer.mm:

(-[WebGLLayer initWithGraphicsContextGL:]):
(-[WebGLLayer setAnchorPoint:]):
(-[WebGLLayer copyImageSnapshotWithColorSpace:]):
(-[WebGLLayer prepareForDisplay]):
(-[WebGLLayer display]):
(-[WebGLLayer releaseGLResources]):
(-[WebGLLayer allocateIOSurfaceBackingStoreWithSize:usingAlpha:]):
(-[WebGLLayer bindFramebufferToNextAvailableSurface]):

  • platform/graphics/cv/TextureCacheCV.h: Removed.
  • platform/graphics/cv/TextureCacheCV.mm: Removed.
  • platform/graphics/cv/VideoTextureCopierCV.cpp:

(WebCore::VideoTextureCopierCV::initializeContextObjects):
(WebCore::VideoTextureCopierCV::initializeUVContextObjects):
(WebCore::VideoTextureCopierCV::attachIOSurfaceToTexture):
(WebCore::VideoTextureCopierCV::detachIOSurfaceFromTexture):
(WebCore::VideoTextureCopierCV::copyImageToPlatformTexture):
(WebCore::VideoTextureCopierCV::copyVideoTextureToPlatformTexture):

  • platform/graphics/cv/VideoTextureCopierCV.h:
  • platform/graphics/ios/GraphicsContextGLOpenGLESIOS.h: Removed.
  • platform/graphics/opengl/ExtensionsGLOpenGL.cpp:

(WebCore::ExtensionsGLOpenGL::blitFramebuffer):
(WebCore::ExtensionsGLOpenGL::createVertexArrayOES):
(WebCore::ExtensionsGLOpenGL::deleteVertexArrayOES):
(WebCore::ExtensionsGLOpenGL::isVertexArrayOES):
(WebCore::ExtensionsGLOpenGL::bindVertexArrayOES):
(WebCore::ExtensionsGLOpenGL::supportsExtension):
(WebCore::ExtensionsGLOpenGL::drawBuffersEXT):
(WebCore::ExtensionsGLOpenGL::drawArraysInstanced):
(WebCore::ExtensionsGLOpenGL::drawElementsInstanced):
(WebCore::ExtensionsGLOpenGL::vertexAttribDivisor):

  • platform/graphics/opengl/ExtensionsGLOpenGL.h:
  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp:

(WebCore::ExtensionsGLOpenGLCommon::initializeAvailableExtensions):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:

(WebCore::GraphicsContextGLOpenGL::setContextVisibility):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:

(WebCore::GraphicsContextGLOpenGL::readPixelsAndConvertToBGRAIfNecessary):
(WebCore::GraphicsContextGLOpenGL::reshapeFBOs):
(WebCore::GraphicsContextGLOpenGL::resolveMultisamplingIfNecessary):
(WebCore::GraphicsContextGLOpenGL::getIntegerv):
(WebCore::GraphicsContextGLOpenGL::depthRange):
(WebCore::GraphicsContextGLOpenGL::clearDepth):
(WebCore::GraphicsContextGLOpenGL::getExtensions):
(WebCore::GraphicsContextGLOpenGL::readPixels):

  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:

(WebCore::GraphicsContextGLOpenGL::paintRenderingResultsToCanvas):
(WebCore::GraphicsContextGLOpenGL::copyTexImage2D):
(WebCore::GraphicsContextGLOpenGL::copyTexSubImage2D):
(WebCore::GraphicsContextGLOpenGL::finish):
(WebCore::GraphicsContextGLOpenGL::flush):
(WebCore::GraphicsContextGLOpenGL::deleteTexture):

  • platform/graphics/opengl/GraphicsContextGLOpenGLES.cpp:
  • platform/graphics/opengl/GraphicsContextGLOpenGLManager.cpp:

(WebCore::GraphicsContextGLOpenGLManager::updateAllContexts):
(WebCore::GraphicsContextGLOpenGLManager::updateHighPerformanceState):
(WebCore::GraphicsContextGLOpenGLManager::disableHighPerformanceGPUTimerFired):

  • platform/graphics/opengl/GraphicsContextGLOpenGLManager.h:
11:50 AM Changeset in webkit [268197] by david_quesada@apple.com
  • 2 edits in trunk/Source/WebKit

WKWebViewConfiguration._shouldRelaxThirdPartyCookieBlocking should be available on iOS
https://bugs.webkit.org/show_bug.cgi?id=217443
rdar://problem/69900089

Reviewed by Youenn Fablet.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration _setShouldRelaxThirdPartyCookieBlocking:]):

Allow this method to be used by Safari and SafariViewService on iOS-family platforms.

11:18 AM Changeset in webkit [268196] by Peng Liu
  • 6 edits in trunk

RemoteAudioSession::category() returns an incorrect value after category changing
https://bugs.webkit.org/show_bug.cgi?id=217459

Reviewed by Youenn Fablet.

Source/WebKit:

No new tests, covered by existing tests.

  • WebProcess/GPU/media/RemoteAudioSession.cpp:

(WebKit::RemoteAudioSession::setCategory): Update m_configuration.category
and m_configuration.routeSharingPolicy so that RemoteAudioSession::category()
will return the correct value.

  • WebProcess/GPU/media/RemoteAudioSession.h:

LayoutTests:

  • gpu-process/TestExpectations: Minor clean-up and unskip some tests after fixing

the bug of RemoteAudioSession::category().

  • platform/mac/media/audio-session-category-audio-autoplay.html:
11:18 AM Changeset in webkit [268195] by Antti Koivisto
  • 11 edits in trunk/Source/WebCore

[LFC][Integration] Convert RenderText::positionForPoint use iterator
https://bugs.webkit.org/show_bug.cgi?id=217468

Reviewed by Zalan Bujtas.

Replace InlineBox traversal code with a generic version.

  • layout/integration/LayoutIntegrationLineIterator.cpp:

(WebCore::LayoutIntegration::LineIterator::operator== const):

  • layout/integration/LayoutIntegrationLineIterator.h:

(WebCore::LayoutIntegration::LineIterator::operator!= const):
(WebCore::LayoutIntegration::PathLine::top const):
(WebCore::LayoutIntegration::PathLine::bottom const):
(WebCore::LayoutIntegration::PathLine::selectionTop const):
(WebCore::LayoutIntegration::PathLine::selectionTopForHitTesting const):
(WebCore::LayoutIntegration::PathLine::selectionBottom const):
(WebCore::LayoutIntegration::PathLine::operator!= const): Deleted.
(WebCore::LayoutIntegration::PathLine::rect const): Deleted.
(WebCore::LayoutIntegration::PathLine::operator== const): Deleted.

  • layout/integration/LayoutIntegrationLineIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LegacyLinePath::top const):
(WebCore::LayoutIntegration::LegacyLinePath::bottom const):
(WebCore::LayoutIntegration::LegacyLinePath::selectionTop const):
(WebCore::LayoutIntegration::LegacyLinePath::selectionTopForHitTesting const):
(WebCore::LayoutIntegration::LegacyLinePath::selectionBottom const):
(WebCore::LayoutIntegration::LegacyLinePath::rect const): Deleted.

  • layout/integration/LayoutIntegrationLineIteratorModernPath.h:

(WebCore::LayoutIntegration::ModernLinePath::top const):
(WebCore::LayoutIntegration::ModernLinePath::bottom const):
(WebCore::LayoutIntegration::ModernLinePath::selectionTop const):
(WebCore::LayoutIntegration::ModernLinePath::selectionTopForHitTesting const):
(WebCore::LayoutIntegration::ModernLinePath::selectionBottom const):
(WebCore::LayoutIntegration::ModernLinePath::traversePrevious):
(WebCore::LayoutIntegration::ModernLinePath::rect const): Deleted.

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::PathTextRun::offsetForPosition const):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LegacyPath::offsetForPosition const):

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::ModernPath::offsetForPosition const):
(WebCore::LayoutIntegration::ModernPath::traversePreviousOnLine):

  • rendering/RenderText.cpp:

(WebCore::lineDirectionPointFitsInBox):
(WebCore::createVisiblePositionForBox):
(WebCore::createVisiblePositionAfterAdjustingOffsetForBiDi):
(WebCore::RenderText::positionForPoint):

  • rendering/RenderTextLineBoxes.cpp:

(): Deleted.
(WebCore::lineDirectionPointFitsInBox): Deleted.
(WebCore::createVisiblePositionForBox): Deleted.
(WebCore::createVisiblePositionAfterAdjustingOffsetForBiDi): Deleted.
(WebCore::RenderTextLineBoxes::positionForPoint const): Deleted.

  • rendering/RenderTextLineBoxes.h:
11:01 AM Changeset in webkit [268194] by Alan Coon
  • 8 edits in branches/safari-611.1.3-branch

Cherry-pick r268012. rdar://problem/70100644

Disable media capture if an app's entitlements won't allow access to capture devices
https://bugs.webkit.org/show_bug.cgi?id=217319
<rdar://problem/69956112>

Reviewed by Youenn Fablet.

Source/WebKit:

No new tests, tested manually with MiniBrowser and Safari.

  • UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm: (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureAudio): If the app is sandboxed, check for the entitlement required for audio capture. Don't bother checking for usage string if TCC has already authorized capture. (WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo): Ditto for video capture.
  • UIProcess/Cocoa/WebPreferencesCocoa.mm: (WebKit::WebPreferences::platformInitializeStore): Initialize mediaDevicesEnabled manually because its default value is always false in the WebProcess and may be true in the UIProcess. WebPreferences assumes the default will always be the same in both processes, and so has an optimization that only sends values to the WebProcess if they differ from the default value. This means if the default in the UIProcess is true it won't be pushed to the WebProcess, so capture won't work.
  • Platform/spi/ios/TCCSPI.h: Update TCCAccessPreflightResult.

Tools:

  • MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
  • MiniBrowser/mac/AppDelegate.m: (-[BrowserAppDelegate defaultConfiguration]): Don't set configuration._mediaCaptureEnabled, it should no longer be necessary.
  • MiniBrowser/mac/Info.plist: Remove unneeded keys.
  • MobileMiniBrowser/MobileMiniBrowser/Info.plist: Ditto. Add usage strings.

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

11:00 AM Changeset in webkit [268193] by Alan Coon
  • 8 edits in branches/safari-611.1.3-branch/Source

Versioning.

WebKit-7611.1.3

10:59 AM Changeset in webkit [268192] by sihui_liu@apple.com
  • 5 edits
    1 add in trunk

Adjust heuristic for checking whether view reaches visually non-empty state
https://bugs.webkit.org/show_bug.cgi?id=217400

Reviewed by Geoffrey Garen.

Source/WebCore:

We decide that view reaches visually non-empty state and fire corresponding events when main document is parsed
and no more content (font or css resources) is to be loaded. An edge case is when the page has an empty document
and depends on async scripts to fill content (like wpt.fyi), then we may fire the events too early. To mitigate
this issue, now we don't set the state if content is completely empty and there are scripts to be loaded. Also,
because lazily loading elements need rendering update to decide if they can be loaded, we should not wait for
scripts where there are such elements.

API Test: WebKit.FirstVisuallyNonEmptyMilestoneWithDeferredScriptInEmptyDocument

  • page/FrameView.cpp:

(WebCore::FrameView::checkAndDispatchDidReachVisuallyNonEmptyState):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/deferred-script-load-in-empty-document.html: Added.
  • TestWebKitAPI/Tests/WebKitCocoa/FirstVisuallyNonEmptyMilestone.mm:

(-[RenderingProgressNavigationDelegate _webView:renderingProgressDidChange:]):
(TEST):

10:58 AM Changeset in webkit [268191] by Alan Coon
  • 1 copy in branches/safari-611.1.3-branch

New branch.

10:56 AM Changeset in webkit [268190] by ysuzuki@apple.com
  • 2 edits in trunk/Source/WTF

Unreviewed, build fix for ARM64E
https://bugs.webkit.org/show_bug.cgi?id=217460

  • wtf/PtrTag.h:

(WTF::tagCodePtr):
(WTF::untagCodePtr):
(WTF::assertIsCFunctionPtr):
(WTF::assertIsNullOrCFunctionPtr):
(WTF::assertIsNotTagged):
(WTF::assertIsTagged):
(WTF::assertIsNullOrTagged):
(WTF::isTaggedWith):
(WTF::assertIsTaggedWith):
(WTF::assertIsNullOrTaggedWith):

10:40 AM Changeset in webkit [268189] by Russell Epstein
  • 4 edits
    2 adds in branches/safari-610.2-branch

Cherry-pick r268162. rdar://problem/70097353

REGRESSION: Safari unable to load PDF in <embed> (docs.legalconnect.com)
https://bugs.webkit.org/show_bug.cgi?id=217451
<rdar://problem/69767043>

Reviewed by Alex Christensen.

Source/WebCore:

Test: fast/replaced/pdf-as-embed-with-no-mime-type-is-not-blank.html

If plugins are enabled, we'll always let the request go through, and WebKit will
guess that files with PDFPlugin-handled extensions should instantiate PDFPlugin,
even if no other plugins are available.

However, if plugins are disabled, requestPlugin() will early return if the explicitly
specified MIME type is not handled by an application plugin (even though the downstream
WebKit code would have happily instantiated an application plugin for us).

Application plugins shouldn't depend on the plugin enablement setting.
To fix this, have SubframeLoader guess the MIME type if not explicitly specified
(matching WebKit's behavior), and allow the request if it matches an application plugin.

  • loader/SubframeLoader.cpp: (WebCore::findPluginMIMETypeFromURL): Improve this previously logging-only function to use the lastPathComponent of the URL instead of randomly looking at the end of the URL, to ignore query strings and fragments when looking for the file extension.

(WebCore::FrameLoader::SubframeLoader::requestPlugin):
Make use of findPluginMIMETypeFromURL to guess the MIME type if it's not
explicitly specified. If the guessed MIME type is one that is handled
by application plugins, allow the request to go out to WebKit (which
may then instantiate a PDFPlugin, for example).

(WebCore::logPluginRequest):
(WebCore::FrameLoader::SubframeLoader::requestObject):
(WebCore::FrameLoader::SubframeLoader::createJavaAppletWidget):
Pass the URL instead of stringifying it, so we can lastPathComponent as above.

LayoutTests:

  • fast/replaced/pdf-as-embed-with-no-mime-type-is-not-blank-expected-mismatch.html: Added.
  • fast/replaced/pdf-as-embed-with-no-mime-type-is-not-blank.html: Added. Add a test ensuring that <embed> with no specified MIME type still renders the PDF.

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

10:40 AM Changeset in webkit [268188] by Russell Epstein
  • 5 edits in branches/safari-610.2-branch

Cherry-pick r268117. rdar://problem/70097482

Presidential Executive Order pages not accessible with Safari.
https://bugs.webkit.org/show_bug.cgi?id=217415

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/aria-modal.html.

These pages have a dialog modal element of the form

<div class="popover" role="dialog" aria-modal="true">

with style visible and a display value different from none. This makes
WebCore/accessibility to treat it as if the dialog were always visible,
and thus do not convey the content of the page outside the dialog to
VoiceOver. The author controls the visibility of the dialog using the
style opacity. This patch adds the check for the opacity to determine
whether an element is visible or not.

  • accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::isNodeVisible const):

LayoutTests:

Expanded this test to cover the case whether the modal dialog visibility
is controlled by its opacity. Cleaned up JS code and made it work in
isolated tree mode.

  • accessibility/aria-modal-expected.txt:
  • accessibility/aria-modal.html:

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

10:29 AM Changeset in webkit [268187] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

AudioParamMap.idl has the Exposed extended attribute twice. (With the same value)
https://bugs.webkit.org/show_bug.cgi?id=217472

Patch by Tuomas Karkkainen <tuomas.webkit@apple.com> on 2020-10-08
Reviewed by Antti Koivisto.

This commit removes one of the two identical Exposed=Window extended
attributes from the IDL files.

  • Modules/webaudio/AudioParamMap.idl:
9:52 AM Changeset in webkit [268186] by Karl Rackler
  • 3 edits in trunk/LayoutTests

Move test expectations from ios-wk2 to ios-simulator-wk2
https://bugs.webkit.org/show_bug.cgi?id=217357
https://bugs.webkit.org/show_bug.cgi?id=217412

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-wk2/TestExpectations:
9:49 AM Changeset in webkit [268185] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Rename AudioParamTimeline::valuesForTimeRangeImpl() and split it into separate functions
https://bugs.webkit.org/show_bug.cgi?id=217453

Reviewed by Eric Carlson.

Rename AudioParamTimeline::valuesForTimeRangeImpl() to valuesForFrameRangeImpl() since
the function takes start / end frames in argument nowadays (This changed fairly recently).

Also split event processing into separate function for each event type. This reduces the
size of AudioParamTimeline::valuesForTimeRangeImpl() as the function was getting huge.
The size will also increase in the future when we vectorize processing for more event
types.

This change is based on the corresponding Blink implementation:

No new tests, no behavior change.

  • Modules/webaudio/AudioParam.cpp:

(WebCore::AudioParam::calculateTimelineValues):

  • Modules/webaudio/AudioParamTimeline.cpp:

(WebCore::AudioParamTimeline::valueForContextTime):
(WebCore::AudioParamTimeline::valuesForFrameRange):
(WebCore::AudioParamTimeline::valuesForFrameRangeImpl):
(WebCore::AudioParamTimeline::processLinearRamp):
(WebCore::AudioParamTimeline::processExponentialRamp):
(WebCore::AudioParamTimeline::processCancelValues):
(WebCore::AudioParamTimeline::processSetTarget):
(WebCore::AudioParamTimeline::processSetValueCurve):

  • Modules/webaudio/AudioParamTimeline.h:

(WebCore::AudioParamTimeline::ParamEvent::curve const):

  • WebCore.xcodeproj/project.pbxproj:
9:11 AM Changeset in webkit [268184] by Hector Lopez
  • 2 edits in trunk/LayoutTests

Test expectation correction
https://bugs.webkit.org/show_bug.cgi?id=167729

Unreviewed test gardening.

  • platform/mac/TestExpectations:
9:07 AM Changeset in webkit [268183] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION (r268138): [ Mojave+ wk1 ] imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-descendant-text-mutated-001.html is a flaky image failure
https://bugs.webkit.org/show_bug.cgi?id=217478

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
8:10 AM Changeset in webkit [268182] by Aditya Keerthi
  • 3 edits
    2 adds in trunk

[iOS] Blurring a text input and focusing a date input changes the scrollable area
https://bugs.webkit.org/show_bug.cgi?id=217325
<rdar://problem/69979171>

Reviewed by Wenson Hsieh.

Source/WebKit:

iOS 14 changed the presentation style of date/time pickers on iPhones.
Previously, date/time pickers would show up in the keyboard view. Now,
pickers are shown in UIContextMenus.

When the change was made, shouldShowKeyboardForElement in WKContentViewInteraction
was not updated to reflect the new behavior, and continued to return
true for date/time inputs.

This inaccuracy led to WKContentView ignoring the UIKeyboardWillHideNotification
when blurring a text input and focusing a date input, since it assumed
the keyboard would stay presented. Consequently, the UIScrollView
adjustments made when presenting the keyboard for the text input are not
reverted when presenting the date picker, leading to a permanent change
in the scrollable area.

To fix, update shouldShowKeyboardForElement to return false for date/time
inputs. Note that the original patch which changed the behavior
correctly updated [WKContentView requiresAccessoryView] but did not
update shouldShowKeyboardForElement. To prevent a similar mistake from
happening again, the logic which determines which input types have a
keyboard view was moved into elementTypeRequiresAccessoryView.

Test: fast/forms/ios/constant-scroll-area-when-moving-focus-between-fields.html

  • UIProcess/ios/WKContentViewInteraction.mm:

(elementTypeRequiresAccessoryView):
(-[WKContentView requiresAccessoryView]):
(shouldShowKeyboardForElement):

LayoutTests:

Added a regression test which focuses a text input, then focuses a date
input, and finally attempts to scroll the content.

  • fast/forms/ios/constant-scroll-area-when-moving-focus-between-fields-expected.txt: Added.
  • fast/forms/ios/constant-scroll-area-when-moving-focus-between-fields.html: Added.
6:45 AM Changeset in webkit [268181] by pvollan@apple.com
  • 5 edits in trunk

[macOS] Deny access to performance analysis service in the WebContent process
https://bugs.webkit.org/show_bug.cgi?id=217452
Source/WebKit:

<rdar://problem/68878318>

Reviewed by Youenn Fablet.

It has been confirmed that mach-lookup to 'com.apple.PerformanceAnalysis.animationperfd' can be denied in the WebContent process on macOS.

Test: fast/sandbox/sandbox-mach-lookup.html

  • WebProcess/com.apple.WebProcess.sb.in:

LayoutTests:

Reviewed by Youenn Fablet.

  • fast/sandbox/mac/sandbox-mach-lookup-expected.txt:
  • fast/sandbox/mac/sandbox-mach-lookup.html:
6:23 AM Changeset in webkit [268180] by Noam Rosenthal
  • 2 edits in trunk/LayoutTests

REGRESSION (r268138): [ iOS Mojave+ ] imported/w3c/web-platform-tests/css/css-masking/clip-path/svg-clipPath.svg is missing expected results
https://bugs.webkit.org/show_bug.cgi?id=217461
<rdar://problem/70074200>

Unreviewed, skipping a test resource file.

6:17 AM Changeset in webkit [268179] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

[LFC][IFC] Using the mixture of LayoutUnit and InlineLayoutUnit types causes ASSERT(verticalGap >= 0)
https://bugs.webkit.org/show_bug.cgi?id=217458

Reviewed by Antti Koivisto.

Line gap computation can produce an incorrect result when the LayoutUnit based lineLogicalTop
holds LayoutUnit::max() value while lineLogicalRect.bottom() (float atm) holds a larger value.
(This is a great opportunity to transition the line logical constraints to InlineRect(FloatRect)).

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::layoutInlineContent):
(WebCore::Layout::LineBuilder::constraintsForLine):

  • layout/inlineformatting/InlineLineBuilder.h:
5:49 AM Changeset in webkit [268178] by commit-queue@webkit.org
  • 4 edits in trunk

Fix image-loading-lazy-multiple-times.html
https://bugs.webkit.org/show_bug.cgi?id=216979

Patch by Rob Buis <rbuis@igalia.com> on 2020-10-08
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Add improved test result.

  • web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-multiple-times-expected.txt:

Source/WebCore:

Once an image has been lazy loaded, it should be possible
to trigger a new lazy load through relevant mutations.

Test: imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/image-loading-lazy-multiple-times.html

  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::updateFromElement):

5:42 AM Changeset in webkit [268177] by youenn@apple.com
  • 3 edits in trunk/LayoutTests

Add a test case to verify WebRTC getCapabilities expose H264 profiles
https://bugs.webkit.org/show_bug.cgi?id=217464

Reviewed by Eric Carlson.

Validate the exposed profiles in sender/receiver getCapabilities.

  • webrtc/video-h264-expected.txt:
  • webrtc/video-h264.html:
5:40 AM Changeset in webkit [268176] by Lauro Moura
  • 6 edits in trunk

[GTK][WPE] Missing Exif Orientation support
https://bugs.webkit.org/show_bug.cgi?id=95299

Reviewed by Carlos Alberto Lopez Perez.

Source/WebCore:

CairoOperations::drawSurface is not taking 90/270 degrees orientation
changes in account correctly.

As in these operations the size of the surfaces will be the same but
not exactly equal (by transposing width and height), drawSurface
currently wrongly presumes the need for some some padding. The same
happens to the scale factors.

Covered by existing tests.

  • platform/graphics/cairo/CairoOperations.cpp:

(WebCore::Cairo::drawNativeImage): Forward usesWidthAsHeight to
drawSurface.
(WebCore::Cairo::drawSurface): use correct scaling/padding when
getting surfaces from images rotated 90/270 degrees.

  • platform/graphics/cairo/CairoOperations.h: Add new enum to forward

Orientation.usesWidthAsHeight.

LayoutTests:

Update expectations after partial EXIF support

  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
12:57 AM Changeset in webkit [268175] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit

Replace unqualified use of PlatformDisplayID in WebViewImpl
https://bugs.webkit.org/show_bug.cgi?id=217422

Patch by Saagar Jha <saagar@saagarjha.com> on 2020-10-08
Reviewed by Youenn Fablet.

WebViewImpl utilizes things from WebCore but doesn't use the namespace, instead choosing to
qualify each reference. However, there is one use of WebCore::PlatformDisplayID that
doesn't use the the namespace qualifier. Usually this "works" because the code is in the
WebKit namespace, and other files that get included above this one often contain code of
the form

namespace WebKit {
using WebCore;
code
}

which hides the issue by making PlatformDisplayID visible to this file as well without the
prefix. If we use auto none of this matters because it'll deduce the prefix even if
WebViewImpl.mm ends up near the top of a unified source file, before another file with the
using declaration shows up.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::windowDidChangeScreen): Replace PlatformDisplayID with auto.

12:54 AM Changeset in webkit [268174] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

Web Inspector: inspector/cpu-profiler/threads.html, use only 4 decimal digits to compare total and workers usage
https://bugs.webkit.org/show_bug.cgi?id=195134

Reviewed by Darin Adler.

  • inspector/cpu-profiler/threads.html:
12:11 AM Changeset in webkit [268173] by graouts@webkit.org
  • 19 edits in trunk

Add support for non-accelerated animation of individual transform properties
https://bugs.webkit.org/show_bug.cgi?id=217429
<rdar://problem/70046645>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update WPT expectations after adding support for animating the rotate, scale and translate properties.

  • web-platform-tests/css/css-transforms/animation/rotate-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/rotate-interpolation-expected.txt:
  • web-platform-tests/css/css-transforms/animation/scale-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/scale-interpolation-expected.txt:
  • web-platform-tests/css/css-transforms/animation/translate-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/translate-interpolation-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
  • web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:

Source/WebCore:

We add support for animating the rotate, scale and translate properties. The required changes were mainly to
add the relevant wrappers and blendFunc() implementations in CSSPropertyAnimation.cpp as well as improving
the computed style for those properties to match the "shortest serialization principle" from CSSOM so that
WPT tests would pass and not fail due to some incorrect computed style output.

We also had to update the rareNonInheritedDataChangeRequiresLayout() method such that layout may be required
when RenderStyle::diff() is called with changing values for rotate, scale or translate.

Additionally, since the rotate, scale and translate properties are currently enabled by a setting, we needed
to make sure that setting properties and values on the MutableStyleProperties objects during parsing of styles
provided through the Web Animations JS API had a CSSParserContext with knowledge of the current document
to access the settings.

  • animation/CSSPropertyAnimation.cpp:

(WebCore::blendFunc):
(WebCore::PropertyWrapperScale::PropertyWrapperScale):
(WebCore::PropertyWrapperRotate::PropertyWrapperRotate):
(WebCore::PropertyWrapperTranslate::PropertyWrapperTranslate):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • animation/KeyframeEffect.cpp:

(WebCore::processIterableKeyframes):
(WebCore::processPropertyIndexedKeyframes):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::computedTranslate):
(WebCore::computedScale):
(WebCore::computedRotate):

  • platform/graphics/transforms/RotateTransformOperation.h:
  • platform/graphics/transforms/ScaleTransformOperation.h:
  • platform/graphics/transforms/TranslateTransformOperation.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::rareNonInheritedDataChangeRequiresLayout):

  • rendering/style/StyleRareNonInheritedData.cpp:

(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator== const):

Oct 7, 2020:

10:26 PM Changeset in webkit [268172] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebKit

Unreviewed. Remove the build warning below since r238330.
warning: unused variable ‘connectionIdentifier’ [-Wunused-variable]

No new tests, no new behaviors.

  • WebProcess/Inspector/WebInspectorUI.cpp:

(WebKit::WebInspectorUI::updateConnection):

9:56 PM Changeset in webkit [268171] by Hector Lopez
  • 2 edits in trunk/LayoutTests

Rebaseline test result
https://bugs.webkit.org/show_bug.cgi?id=167729

Unreviewed test gardening.

  • platform/mac/imported/w3c/web-platform-tests/css/css-pseudo/text-selection-expected.txt:
9:18 PM Changeset in webkit [268170] by ysuzuki@apple.com
  • 27 edits in trunk/Source

[JSC] Restrict more ptr-tagging and avoid using OperationPtrTag for JIT code
https://bugs.webkit.org/show_bug.cgi?id=217460

Reviewed by Saam Barati.

Source/JavaScriptCore:

This patch makes tagging / untagging pointer functions solid by using PtrTag in template parameter.
Later, we will introduce compile time behavior change for different kind of PtrTag so that we can insert OperationPtrTag validation
when tagging a function with OperationPtrTag.

We also found that FTL is tagging JIT code with OperationPtrTag wrongly. We should tag it with JITThunkPtrTag.

  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::getLinkerAddress):

  • assembler/AssemblerBuffer.h:

(JSC::ARM64EHash::update):
(JSC::ARM64EHash::finalHash const):

  • assembler/JITOperationList.cpp:

(JSC::addPointers):

  • assembler/MacroAssemblerARM64.cpp:

(JSC::MacroAssembler::probe):

  • assembler/MacroAssemblerCodeRef.h:

(JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
(JSC::MacroAssemblerCodePtr::createFromExecutableAddress):

  • assembler/testmasm.cpp:

(JSC::testProbeModifiesProgramCounter):

  • b3/air/testair.cpp:
  • ftl/FTLOutput.h:

(JSC::FTL::Output::callWithoutSideEffects):
(JSC::FTL::Output::operation):

  • ftl/FTLSlowPathCall.cpp:

(JSC::FTL::SlowPathCallContext::makeCall):

  • jit/JITCode.cpp:

(JSC::JITCodeWithCodeRef::executableAddressAtOffset):

  • jit/JITExceptions.cpp:

(JSC::genericUnwind):

  • jit/JITOperations.cpp:
  • jit/Repatch.cpp:

(JSC::readPutICCallTarget):
(JSC::ftlThunkAwareRepatchCall):
(JSC::tryCacheGetBy):
(JSC::tryCachePutByID):

  • llint/LLIntData.cpp:

(JSC::LLInt::initialize):

  • llint/LLIntPCRanges.h:

(JSC::LLInt::isLLIntPC):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::setUpCall):

  • llint/LLIntThunks.cpp:

(JSC::LLInt::generateThunkWithJumpTo):

  • runtime/MachineContext.h:

(JSC::MachineContext::instructionPointer):

  • runtime/NativeExecutable.cpp:

(JSC::NativeExecutable::finishCreation):

  • runtime/PutPropertySlot.h:

(JSC::PutPropertySlot::setCustomValue):
(JSC::PutPropertySlot::setCustomAccessor):
(JSC::PutPropertySlot::customSetter const):

  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::AirIRGenerator::emitCCall):

  • wasm/WasmSlowPaths.cpp:

Source/WTF:

  • wtf/PlatformRegisters.cpp:

(WTF::threadStateLRInternal):
(WTF::threadStatePCInternal):

  • wtf/PtrTag.h:

(WTF::tagCFunctionPtr):
(WTF::tagCFunction):
(WTF::untagCFunctionPtr):
(WTF::tagInt):
(WTF::isTaggedWith):
(WTF::assertIsTaggedWith):
(WTF::assertIsNullOrTaggedWith):

8:19 PM Changeset in webkit [268169] by Aditya Keerthi
  • 2 edits in trunk/Tools

REGRESSION(r268123): [ iOS ] 4 TestWebKitAPI.WebKitLegacy failures: File name unavailable. Unknown C++ exception thrown in the test body.
https://bugs.webkit.org/show_bug.cgi?id=217445
<rdar://problem/70063370>

Reviewed by Wenson Hsieh.

The patch which introduced these tests swizzled [UIDatePicker setDatePickerMode:]
to avoid a crash within UIKit, resulting from the fact that TestWebKitAPI isn't
actually an app.

However, this was not a reliable solution since UIKit was still attempting to
create a QoS interval. To fix, swizzle out a method much closer to the source
of the exception: [UITableView cellForRowAtIndexPath:].

  • TestWebKitAPI/Tests/WebKitLegacy/ios/DateTimeInputsAccessoryViewTests.mm:

(cellForRowAtIndexPath):
(runTestWithInputType):

7:11 PM Changeset in webkit [268168] by Hector Lopez
  • 2 edits in trunk/LayoutTests

REGRESSION(r267940): [ macOS Catalina ] imported/w3c/web-platform-tests/css/css-pseudo/text-selection.html is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=167729#add_comment

Unreviewed test gardening.

  • platform/mac/TestExpectations:
6:52 PM Changeset in webkit [268167] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION (iOS 14): [ iOS wk2 ] imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-add.https.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217462

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
6:35 PM Changeset in webkit [268166] by Karl Rackler
  • 3 edits
    3 adds in trunk/LayoutTests

REGRESSION (r268138): [ iOS Mojave+ ] imported/w3c/web-platform-tests/css/css-masking/clip-path/svg-clipPath.svg is missing expected results
https://bugs.webkit.org/show_bug.cgi?id=217461

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac/TestExpectations:
5:59 PM Changeset in webkit [268165] by Ross Kirsling
  • 9 edits in trunk

[JSC] Revert String.prototype.item
https://bugs.webkit.org/show_bug.cgi?id=217449

Reviewed by Yusuke Suzuki.

JSTests:

  • stress/item-method.js:
  • test262/config.yaml:

Source/JavaScriptCore:

This patch reverts the String part of r267814, as it has been shown to be web-incompatible:
https://github.com/tc39/proposal-item-method/issues/31

Thankfully, this was the inessential part of the proposal; the core parts (Array and %TypedArray%) remain for now.

  • builtins/StringPrototype.js:

(item): Deleted.

  • runtime/StringPrototype.cpp:

LayoutTests:

  • js/Object-getOwnPropertyNames-expected.txt:
  • js/script-tests/Object-getOwnPropertyNames.js:
5:27 PM Changeset in webkit [268164] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Unreviewed, fix Windows build after r268161.

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::createdMessagePort):
(WebCore::ScriptExecutionContext::destroyedMessagePort):

  • workers/WorkerOrWorkletGlobalScope.h:

(isType):

5:23 PM Changeset in webkit [268163] by Keith Rollin
  • 12 edits in trunk/Source

Update post-processing rules for headers to not unnecessarily change timestamps
https://bugs.webkit.org/show_bug.cgi?id=217371
<rdar://problem/69992230>

Reviewed by Darin Adler.

Under XCBuild, the scripts employed in custom build rules can be
invoked in innocuous situations. A common example is when the user is
building from the command-line and they change the make output from
stdout to a file, or vice-versa. Changing the output changes the
setting of the COLOR_DIAGNOSTICS environment variable, which is enough
to cause XCBuild to think something is different and that the custom
build rule needs to be invoked. For the script's part, nothing
significant has changed, yet it post-processes the header files,
causing their modification dates to change, causing downstream
rebuilds to occur.

Fix this problem by adopting an approach that doesn't modify the
post-processed header files unless their contents actually change.

Source/JavaScriptCore:

  • Scripts/postprocess-header-rule:

Source/ThirdParty/ANGLE:

  • adjust-angle-include-paths-rule:

Source/ThirdParty/libwebrtc:

  • libwebrtc.xcodeproj/project.pbxproj:

Source/WebKit:

No new tests -- this is a build change only.

  • Scripts/postprocess-header-rule:

Source/WebKitLegacy:

  • scripts/postprocess-header-rule:

Source/WTF:

  • Scripts/GeneratePreferences.rb:
5:01 PM Changeset in webkit [268162] by timothy_horton@apple.com
  • 4 edits
    2 adds in trunk

REGRESSION: Safari unable to load PDF in <embed> (docs.legalconnect.com)
https://bugs.webkit.org/show_bug.cgi?id=217451
<rdar://problem/69767043>

Reviewed by Alex Christensen.

Source/WebCore:

Test: fast/replaced/pdf-as-embed-with-no-mime-type-is-not-blank.html

If plugins are enabled, we'll always let the request go through, and WebKit will
guess that files with PDFPlugin-handled extensions should instantiate PDFPlugin,
even if no other plugins are available.

However, if plugins are disabled, requestPlugin() will early return if the explicitly
specified MIME type is not handled by an application plugin (even though the downstream
WebKit code would have happily instantiated an application plugin for us).

Application plugins shouldn't depend on the plugin enablement setting.
To fix this, have SubframeLoader guess the MIME type if not explicitly specified
(matching WebKit's behavior), and allow the request if it matches an application plugin.

  • loader/SubframeLoader.cpp:

(WebCore::findPluginMIMETypeFromURL):
Improve this previously logging-only function to use the lastPathComponent
of the URL instead of randomly looking at the end of the URL, to ignore
query strings and fragments when looking for the file extension.

(WebCore::FrameLoader::SubframeLoader::requestPlugin):
Make use of findPluginMIMETypeFromURL to guess the MIME type if it's not
explicitly specified. If the guessed MIME type is one that is handled
by application plugins, allow the request to go out to WebKit (which
may then instantiate a PDFPlugin, for example).

(WebCore::logPluginRequest):
(WebCore::FrameLoader::SubframeLoader::requestObject):
(WebCore::FrameLoader::SubframeLoader::createJavaAppletWidget):
Pass the URL instead of stringifying it, so we can lastPathComponent as above.

LayoutTests:

  • fast/replaced/pdf-as-embed-with-no-mime-type-is-not-blank-expected-mismatch.html: Added.
  • fast/replaced/pdf-as-embed-with-no-mime-type-is-not-blank.html: Added.

Add a test ensuring that <embed> with no specified MIME type still renders the PDF.

4:31 PM Changeset in webkit [268161] by Chris Dumez
  • 35 edits
    1 copy in trunk

Constructing a AudioWorkletNode should construct an AudioWorkletProcessor on the Worklet thread
https://bugs.webkit.org/show_bug.cgi?id=217442

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Rebaseline WPT tests now that we are passing more checks.

  • web-platform-tests/webaudio/the-audio-api/the-audiocontext-interface/processing-after-resume.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-messageport.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-timing-info.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-options.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processor-construction-port.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/suspended-context-messageport.https-expected.txt:

Source/WebCore:

Constructing a AudioWorkletNode should construct an AudioWorkletProcessor on the Worklet thread:

No new tests, rebaselined existing tests.

  • Modules/webaudio/AudioWorklet.cpp:

(WebCore::AudioWorklet::createProcessor):
Add createProcessor() function to AudioWorklet which takes care of hopping to the worklet thread
in order to call createProcessor() on the AudioWorkletGlobalScope.

  • Modules/webaudio/AudioWorklet.h:
  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::createProcessor):
Construct an AudioWorkletProcessor, as specified here:

(WebCore::AudioWorkletGlobalScope::takePendingProcessorConstructionData):
A function to take the pending ProcessorConstructionData. This construction
data gets initialized in createProcessor() and gets consumed by
AudioWorkletProcessor::create().

  • Modules/webaudio/AudioWorkletGlobalScope.h:
  • Modules/webaudio/AudioWorkletNode.cpp:

(WebCore::AudioWorkletNode::create):
Improve AudioWorkletNode constructor to actually cause the construction of
the AudioWorkletProcessor on the worklet thread, passing it the options and
the MessagePort. This is as per the specification here:

(WebCore::AudioWorkletNode::AudioWorkletNode):
(WebCore::AudioWorkletNode::~AudioWorkletNode):

(WebCore::AudioWorkletNode::setProcessor):
Once the AudioWorkletProcessor is created on the worklet thread, this gets
called so that the AudioWorkletNode has a reference to the processor. This
will be needed later on once AudioWorkletNode::process() starts doing audio
processing through the AudioWorkletProcessor.

(WebCore::AudioWorkletNode::process):
Improve comment.

  • Modules/webaudio/AudioWorkletNode.h:
  • Modules/webaudio/AudioWorkletNode.idl:

Pass the global object to the constructor. It is needed now that the constructor
serializes script values to pass them to the worklet thread.

  • Modules/webaudio/AudioWorkletNodeOptions.idl:

Add [JSGenerateToJSObject] to AudioWorkletNodeOptions dictionary so that a
convertDictionaryToJS() function gets generated for this dictionary. This function
is called by the AudioWorkletNode constructor.

  • Modules/webaudio/AudioWorkletProcessor.cpp:

(WebCore::AudioWorkletProcessor::create):
(WebCore::AudioWorkletProcessor::AudioWorkletProcessor):

  • Modules/webaudio/AudioWorkletProcessor.h:

(WebCore::AudioWorkletProcessor::name const):
(WebCore::AudioWorkletProcessor::port):
Implement AudioWorkletProcessor constructor so that its retrieves the pending
construction data from the AudioWorkletGlobalScope and properly initializes
its name and port. The specification for this is here:

  • Modules/webaudio/AudioWorkletProcessor.idl:

Indicate that the constructor may throw an exception as per the specification:

Also pass the ScriptExecutionContext to the constructor since the constructor
needs to retrieve the pending construction data from it:

  • Modules/webaudio/AudioWorkletProcessorConstructionData.h:

(WebCore::AudioWorkletProcessorConstructionData::AudioWorkletProcessorConstructionData):
(WebCore::AudioWorkletProcessorConstructionData::name const):
(WebCore::AudioWorkletProcessorConstructionData::port const):
Add class to wrap the AudioWorkletProcess's construction data:

  • Modules/webaudio/AudioWorkletThread.h:

Move ThreadSafeRefCounted from this class to the parent class (WorkerOrWorkletThread)
since WorkerMessagePortChannelProvider needs to protect a WorkerOrWorkletThread now.

  • WebCore.xcodeproj/project.pbxproj:

Add new header to project.

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::toJSDOMGlobalObject):
Properly handle WorkletGlobalScope.

  • dom/MessagePort.cpp:

(WebCore::MessagePort::disentangle):
(WebCore::MessagePort::disentanglePorts):
(WebCore::MessagePort::entanglePorts):
(WebCore::MessagePort::entangle):

  • dom/MessagePort.h:

Tweak MessagePort API to support disentangling/entangling a single
MessagePort. Previously we had to pass an array of ports.

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::createdMessagePort):
(WebCore::ScriptExecutionContext::destroyedMessagePort):
Tweak assertions to handle AudioWorkletGlobalScopes.

  • dom/messageports/MessagePortChannelProvider.cpp:

(WebCore::MessagePortChannelProvider::fromContext):

  • dom/messageports/MessageWithMessagePorts.h:
  • dom/messageports/WorkerMessagePortChannelProvider.cpp:

(WebCore::WorkerMessagePortChannelProvider::WorkerMessagePortChannelProvider):
(WebCore::WorkerMessagePortChannelProvider::takeAllMessagesForPort):
(WebCore::WorkerMessagePortChannelProvider::checkRemotePortForActivity):

  • dom/messageports/WorkerMessagePortChannelProvider.h:

Update WorkerMessagePortChannelProvider to use WorkerOrWorkletScope instead
or WorkerGlobalScope. This allows us to reuse this class for AudioWorklets
so that MessagePort communication between the main thread and the worklet
thread now works.

  • workers/WorkerOrWorkletThread.h:

Move ThreadSafeRefCounted from subclasses to this class so that
WorkerMessagePortChannelProvider can protect a WorkerOrWorkletThread.

  • workers/WorkerThread.h:
  • worklets/WorkletGlobalScope.cpp:

(WebCore::WorkletGlobalScope::notifyFinished):
Only evaluate the script if we have not already evaluated it in this worklet.
I am assuming this is needed because we are not treating the script as a module
yet (due to lack of support in workers). Without this changes, the worklet's
script would get in a bad state when importing several times the same module
(which is something the WPT tests do).

(WebCore::WorkletGlobalScope::messagePortChannelProvider):
Instantiate WorkerMessagePortChannelProvider if needed. This is needed for
MessagePort communication is AudioWorklets.

  • worklets/WorkletGlobalScope.h:

LayoutTests:

Unskip a few tests that are no longer timing out.

3:49 PM Changeset in webkit [268160] by Russell Epstein
  • 1 copy in tags/Safari-610.2.8.1.1

Tag Safari-610.2.8.1.1.

3:44 PM Changeset in webkit [268159] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Crash under JSAudioWorkletProcessorConstructor::~JSAudioWorkletProcessorConstructor()
https://bugs.webkit.org/show_bug.cgi?id=217448
<rdar://problem/70059902>

Reviewed by Geoffrey Garen.

Make sure we clear out m_processorConstructorMap in AudioWorkletGlobalScope::prepareForTermination()
since this map keeps JS wrappers alive.

No new tests, already covered by existing tests that are crashing on ASAN bots.

  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::prepareForTermination):

3:42 PM Changeset in webkit [268158] by commit-queue@webkit.org
  • 5 edits in trunk

background-clip:var(--a) invalidates -webkit-background-clip:text when --a:text
https://bugs.webkit.org/show_bug.cgi?id=199410

Patch by Tyler Wilcock <Tyler Wilcock> on 2020-10-07
Reviewed by Darin Adler.

Source/WebCore:

Parse the text value (CSSValueText) for the background-clip
property. While the bug this patch is associated with is about CSS
variable interactions, the underlying issue is that we weren't parsing
the text value for background-clip.

https://www.w3.org/TR/2017/CR-css-backgrounds-3-20171017/#the-background-clip

This patch also removes the ability to parse the -webkit-text value
for the background-origin (CSSPropertyBackgroundOrigin) property by
removing CSSValueWebkitText from consumeBackgroundBox. Neither
-webkit-text nor the unprefixed text are valid values for this property.

https://www.w3.org/TR/2017/CR-css-backgrounds-3-20171017/#the-background-origin

Updated existing fast/css/background-clip-text.html test.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeBackgroundBox): Removed CSSValueWebkitText.
(WebCore::consumeBackgroundClip): Added.
(WebCore::consumeBackgroundComponent): Use consumeBackgroundClip for
the CSSPropertyBackgroundClip property case.

LayoutTests:

We now parse the text value for the background-clip property, so
update this test to reflect that.

  • fast/css/background-clip-text-expected.txt:
  • fast/css/background-clip-text.html: Parse text value.
3:41 PM Changeset in webkit [268157] by commit-queue@webkit.org
  • 3 edits
    4 adds in trunk

Using CSS wide keywords as a fallback for variable substitution works inconsistently.
https://bugs.webkit.org/show_bug.cgi?id=197158

Patch by Tyler Wilcock <Tyler Wilcock> on 2020-10-07
Reviewed by Darin Adler.

Source/WebCore:

Enable CSS-wide keywords to be used as variable fallbacks.

See spec-issue for further discussion:
https://github.com/w3c/csswg-drafts/issues/5325

Patch inspired by Chromium's implementation:
https://bugs.chromium.org/p/chromium/issues/detail?id=954963#c5

Tests: fast/css/variables/css-wide-keywords-in-fallback-inherited-property.html

fast/css/variables/css-wide-keywords-in-fallback-non-inherited-property.html

  • css/parser/CSSPropertyParser.cpp: Add maybeConsumeCSSWideKeyword

function.
(WebCore::CSSPropertyParser::parseSingleValue): Before trying to parse
the property-specific values for the input property, first try parsing the
CSS-wide keywords via maybeConsumeCSSWideKeyword.
(WebCore::CSSPropertyParser::consumeCSSWideKeyword): Refactor to use
maybeConsumeCSSWideKeyword.

LayoutTests:

Add tests ensuring CSS-wide keywords are functional as variable
fallbacks.

  • fast/css/variables/css-wide-keywords-in-fallback-inherited-property-expected.html: Added.
  • fast/css/variables/css-wide-keywords-in-fallback-inherited-property.html: Added.
  • fast/css/variables/css-wide-keywords-in-fallback-non-inherited-property-expected.html: Added.
  • fast/css/variables/css-wide-keywords-in-fallback-non-inherited-property.html: Added.
3:29 PM Changeset in webkit [268156] by Russell Epstein
  • 1 copy in tags/Safari-610.2.8.0.2

Tag Safari-610.2.8.0.2.

3:27 PM Changeset in webkit [268155] by jiewen_tan@apple.com
  • 2 edits
    7 adds in trunk/Source/WebKit

[WebAuthn] Implement a dummy WebAuthenticationAgent
https://bugs.webkit.org/show_bug.cgi?id=217401
<rdar://problem/70012011>

Reviewed by Darin Adler.

Part 1.

This patch introduces a new dummy WebAuthenticationAgent where in the future it will take over all WebAuthn operations
from the UI Process such that we can isolate high privileged entitlements to this standalone daemon and therefore are able
offer WebAuthn to third party WKWebView clients. One of the future feautres will require this new process to listen to
LaunchEvents, which only daemons can do. That's why it is implemented as a user agent instead of a XPC service.

This is the first part of establishing such a dummy daemon. What it does is to set up a new build target for the daemon and
hook it up with WebKit's build system. One can manually load the launchd plist and load the daemon to verify this change.

Commands are:
launchctl load /to/your/path/com.apple.webkit.WebAuthenticationAgent.plist
launchctl start com.apple.webkit.WebAuthenticationAgent.Development

Covered by manual tests.

  • Configurations/WebAuthenticationAgent.xcconfig: Added.

Somehow the executable has a suffix .Development for debug/release builds. Will fix that in the later part.

  • Daemons/WebAuthenticationAgent/Info.plist: Added.
  • Daemons/WebAuthenticationAgent/WebAuthenticationAgent.entitlements: Added.
  • Daemons/WebAuthenticationAgent/com.apple.webkit.WebAuthenticationAgent.plist: Added.

The executable location is hardcoded for now. It will be fixed in Part 2 to dynamically point to the right binary.

  • Daemons/WebAuthenticationAgent/main.mm: Added.

(main):

  • WebKit.xcodeproj/project.pbxproj:

Not sure why libWTF.a is needed. Will fix that in the later part.

3:09 PM Changeset in webkit [268154] by aakash_jain@apple.com
  • 5 edits in trunk/Tools

[build.webkit.org] Ensure that builder names are valid Buildbot identifiers
https://bugs.webkit.org/show_bug.cgi?id=217434

Reviewed by Dewei Zhu.

  • BuildSlaveSupport/build.webkit.org-config/config.json: Updated builder names.
  • BuildSlaveSupport/build.webkit.org-config/steps_unittest.py: Ditto.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js: Ditto.
  • BuildSlaveSupport/build.webkit.org-config/loadConfig.py: Ensure that unit-tests fail when any builder name does

not follow required naming convention.

2:50 PM Changeset in webkit [268153] by Jonathan Bedard
  • 3 edits in trunk/Tools

REGRESSION (r268080): [test-webkitpy] Mojave bots failing to install python-dateutil-2.8.1
https://bugs.webkit.org/show_bug.cgi?id=217438

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Include wheel package.
  • Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py:

(Package.install): The wheel package may be needed by setup tools.

2:38 PM Changeset in webkit [268152] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Use display structures (InlineContent) to provide content height and baseline used values
https://bugs.webkit.org/show_bug.cgi?id=217437

Reviewed by Antti Koivisto.

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::contentLogicalHeight const):
(WebCore::LayoutIntegration::LineLayout::lineCount const):
(WebCore::LayoutIntegration::LineLayout::firstLineBaseline const):
(WebCore::LayoutIntegration::LineLayout::lastLineBaseline const):

2:18 PM Changeset in webkit [268151] by Peng Liu
  • 3 edits in trunk/LayoutTests

[Media in GPU Process] Unskip some layout tests

Unreviewed test gardening.

  • gpu-process/TestExpectations:

Unskip the tests that are marked as failure or timeout when the "Media in GPU Process"
is not enabled.

  • media/video-size-intrinsic-scale.html:
2:04 PM Changeset in webkit [268150] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Add std::max to make sure the line gap is always larger than 0 (see FIXME).

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):

2:03 PM Changeset in webkit [268149] by Konstantin Tokarev
  • 3 edits in trunk/Tools

[GTK][WPE] Remove Apache's mod_bw from install-dependencies
https://bugs.webkit.org/show_bug.cgi?id=217441

Reviewed by Carlos Alberto Lopez Perez.

It is not activated in any of Apache configs in LayoutTests, and is not
referenced anywhere else.

  • gtk/install-dependencies:
  • wpe/install-dependencies:
1:56 PM Changeset in webkit [268148] by Devin Rousso
  • 5 edits in trunk/Source

Add missing #define for PENCILKIT_TEXT_INPUT flag
https://bugs.webkit.org/show_bug.cgi?id=217436
<rdar://problem/69720219>

Reviewed by Wenson Hsieh.

Source/WebKit:

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setUpInteraction]):
(-[WKContentView cleanUpInteraction]):
(-[WKContentView _shouldSimulateKeyboardInputOnTextInsertion]):
Change from ENABLE to HAVE.

Source/WTF:

  • wtf/PlatformHave.h:
1:33 PM Changeset in webkit [268147] by Wenson Hsieh
  • 2 edits in trunk/LayoutTests

Unreviewed, unskip a few dozen canvas-related tests that now pass after recent changes

  • gpu-process/TestExpectations:

Unskip a number of tests that were skipped when enabling GPU process. Additionally, remove some erroneous test
expectation lines that were targeting HTML files that are resources or ref test.

1:17 PM Changeset in webkit [268146] by Karl Rackler
  • 2 edits in trunk/LayoutTests

Remove test expectation for fast/images/image-orientation-none-canvas.html while the issue is investigated.
https://bugs.webkit.org/show_bug.cgi?id=217435

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
1:13 PM Changeset in webkit [268145] by Wenson Hsieh
  • 24 edits in trunk/Source

[GPU Process] Support CanvasRenderingContext2D.drawImage() with HTMLVideoElement
https://bugs.webkit.org/show_bug.cgi?id=217339
<rdar://problem/69409029>

Reviewed by Darin Adler.

Source/WebCore:

Implements support for painting the current video frame into a canvas 2D graphics context. See below for more
details.

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::paintCurrentFrameInContext):

Flip this around to call GraphicsContext::paintFrameForMedia with the MediaPlayer, instead of calling into
MediaPlayer with the graphics context. See changes below.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::paintFrameForMedia):

  • platform/graphics/GraphicsContext.h:

Add a paintFrameForMedia method that takes a MediaPlayer representing a video, and paints the current frame
of the video into the context. If the graphics context is backed by an platform context (i.e. m_impl is
nullptr), then we simply call through to MediaPlayer's private impl to paint into the context. Otherwise, we
forward the call to the GraphicsContextImpl (see the changes to DisplayListRecorder.cpp below).

  • platform/graphics/GraphicsContextImpl.h:

Add a new virtual function to paint the current frame of the given MediaPlayer into the destination rect.

  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::playerPrivate const):
(WebCore::MediaPlayer::playerPrivate):
(WebCore::MediaPlayer::paintCurrentFrameInContext): Deleted.

  • platform/graphics/MediaPlayer.h:

Remove the existing paintCurrentFrameInContext method on MediaPlayer, which currently takes a graphics
context. Instead, move paintCurrentFrameInContext to GraphicsContext, rename it to paintFrameForMedia, and
pass it a MediaPlayer. Additionally, expose a helper method to get a non-const MediaPlayerPrivateInterface,
and move both method definitions to the implementation file to avoid style checker errors due to MediaPlayer
itself being WEBCORE_EXPORT-ed.

  • platform/graphics/cairo/GraphicsContextImplCairo.cpp:

(WebCore::GraphicsContextImplCairo::paintFrameForMedia):

  • platform/graphics/cairo/GraphicsContextImplCairo.h:
  • platform/graphics/displaylists/DisplayList.h:
  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::Item::sizeInBytes):
(WebCore::DisplayList::PaintFrameForMedia::create):
(WebCore::DisplayList::PaintFrameForMedia::PaintFrameForMedia):
(WebCore::DisplayList::PaintFrameForMedia::apply const):
(WebCore::DisplayList::operator<<):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::PaintFrameForMedia::destination const):
(WebCore::DisplayList::PaintFrameForMedia::identifier const):
(WebCore::DisplayList::PaintFrameForMedia::encode const):
(WebCore::DisplayList::PaintFrameForMedia::decode):
(WebCore::DisplayList::Item::encode const):
(WebCore::DisplayList::Item::decode):

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::paintFrameForMedia):

  • platform/graphics/displaylists/DisplayListRecorder.h:

Add a new display list item, PaintFrameForMedia, that paints the current frame of a given MediaPlayer. This
works by serializing and then deserializing a MediaPlayerHandle and destination rect; similar to
PutImageData, the replayer delegate is responsible for applying this item by mapping the MediaPlayerHandle
to a concrete MediaPlayer instance.

  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.cpp:

(Nicosia::CairoOperationRecorder::paintFrameForMedia):

  • platform/graphics/nicosia/cairo/NicosiaCairoOperationRecorder.h:
  • platform/graphics/win/GraphicsContextImplDirect2D.cpp:

(WebCore::GraphicsContextImplDirect2D::paintFrameForMedia):

  • platform/graphics/win/GraphicsContextImplDirect2D.h:
  • rendering/RenderVideo.cpp:

(WebCore::RenderVideo::paintReplaced):

Source/WebKit:

Implements support for painting the current video frame into a canvas 2D graphics context. See below (and
Source/WebCore/ChangeLog) for more details.

  • GPUProcess/graphics/RemoteImageBufferMessageHandlerProxy.h:

(WebKit::RemoteImageBufferMessageHandlerProxy::backend):

  • GPUProcess/graphics/RemoteImageBufferProxy.h:

(WebKit::RemoteImageBufferProxy::apply):

Refactor apply so that it treats PutImageData and PaintFrameForMedia as special cases, and otherwise
returns false by default. Implement apply in the case where the display list item is PaintFrameForMedia by
using the MediaPlayerIdentifier to look up the platform MediaPlayer instance, and then calling
GraphicsContext::paintFrameForMedia with this MediaPlayer.

  • GPUProcess/graphics/RemoteRenderingBackendProxy.cpp:

(WebKit::RemoteRenderingBackendProxy::gpuConnectionToWebProcess const):

  • GPUProcess/graphics/RemoteRenderingBackendProxy.h:
1:10 PM Changeset in webkit [268144] by Aditya Keerthi
  • 3 edits
    2 adds in trunk

[Contact Picker API] Add support for ContactsManager.getProperties()
https://bugs.webkit.org/show_bug.cgi?id=217354
<rdar://problem/69862099>

Reviewed by Youenn Fablet.

Source/WebCore:

ContactsManager.getProperties() returns a list of properties supported
by the API. These currently include name, email and tel.

Test: contact-picker/contacts-manager-get-properties.html

  • Modules/contact-picker/ContactsManager.cpp:

(WebCore::ContactsManager::getProperties):

LayoutTests:

Added a layout test to exercise the method.

  • contact-picker/contacts-manager-get-properties-expected.txt: Added.
  • contact-picker/contacts-manager-get-properties.html: Added.
1:10 PM Changeset in webkit [268143] by Karl Rackler
  • 19 edits in trunk/Tools

Unreviewed, reverting r268115.

This reverts commit r268115 while investigating ews test
failure.

Reverted changeset:

"Refactor TestOptions code in WebKitTestRunner to make it
easier to rationalize and extend"
https://bugs.webkit.org/show_bug.cgi?id=217390
https://trac.webkit.org/changeset/268115

1:08 PM Changeset in webkit [268142] by Caio Lima
  • 2 edits in trunk/JSTests

[MIPS] Flaky test stress/array-species-create-should-handle-masquerader.js
https://bugs.webkit.org/show_bug.cgi?id=217433

Unreviewed test gardening.

  • stress/array-species-create-should-handle-masquerader.js:
12:58 PM Changeset in webkit [268141] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION (r268115?): [ iOS wk2 EWS ] fast/images/image-orientation-none-canvas.html is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=217435

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
12:42 PM Changeset in webkit [268140] by Russell Epstein
  • 8 edits in branches/safari-610.2.8.0-branch/Source

Versioning.

WebKit-7610.2.8.0.2

12:23 PM Changeset in webkit [268139] by Russell Epstein
  • 8 edits in branches/safari-610.2-branch/Source

Versioning.

WebKit-7610.2.12

11:54 AM Changeset in webkit [268138] by Noam Rosenthal
  • 10 edits
    141 adds in trunk

clip-path: path() ignores page zooming (Command-+)
https://bugs.webkit.org/show_bug.cgi?id=217311
<rdar://problem/69977271>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Imported all clip-path web platform tests.
Some of them don't pass yet for unrelated reasons, skipped in TestExpectations.

  • web-platform-tests/css/css-masking/clip-path/clip-path-path-interpolation-with-zoom-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-interpolation-with-zoom.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-with-zoom-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-with-zoom-hittest-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-with-zoom-hittest.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-with-zoom.html: Added.

These tests test the actual zoom-related issues.

  • resources/import-expectations.json:
  • web-platform-tests/css/css-masking: Added.
  • web-platform-tests/css/css-masking/clip-path: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-001-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-001.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-002-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-002.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-003-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-003.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-004-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-004.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-005-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-005.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-006-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-006.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-007-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-007.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-008-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-circle-008.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-columns-shape-001-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-columns-shape-001.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-columns-shape-002-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-columns-shape-002.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-descendant-text-mutated-001-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-descendant-text-mutated-001.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-document-element-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-document-element-will-change-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-document-element-will-change.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-document-element.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-001-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-001.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-002-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-002.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-003-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-003.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-004-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-element-userSpaceOnUse-004.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-001-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-001.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-002-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-002.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-003-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-003.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-004-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-004.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-005-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-005.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-006-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-006.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-007-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-007.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-008-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-ellipse-008.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-filter-order-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-filter-order.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-filter-radius-clips-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-filter-radius-clips.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-fixed-nested-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-fixed-nested.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-inline-001-expected.xht: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-inline-001.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-inline-002-expected.xht: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-inline-002.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-inline-003-expected.xht: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-inline-003.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-001-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-001.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-002-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-002.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-interpolation-001-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-interpolation-001.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-interpolation-002-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-path-interpolation-002.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-001-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-001.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-002-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-002.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-003-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-003.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-004-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-004.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-005-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-005.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-006-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-006.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-007-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-007.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-008-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-008.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-009-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-009.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-010-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-010.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-011-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-011.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-012-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-012.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-013-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-polygon-013.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-reference-box-001-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-reference-box-001.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-reference-box-002-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-reference-box-002.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-reference-box-003-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-reference-box-003.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-reference-box-004-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-reference-box-004.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-reference-restore-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-reference-restore.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-rotated-will-change-transform-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-rotated-will-change-transform.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-scroll-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-scroll.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-svg-invalidate-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-svg-invalidate.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-transform-mutated-001-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-transform-mutated-001.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-transform-mutated-002-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-transform-mutated-002.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change-from-empty-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change-from-empty.html: Added.
  • web-platform-tests/css/css-masking/clip-path/clip-path-url-reference-change.html: Added.
  • web-platform-tests/css/css-masking/clip-path/interpolation-expected.txt: Added.
  • web-platform-tests/css/css-masking/clip-path/interpolation.html: Added.
  • web-platform-tests/css/css-masking/clip-path/reference: Added.
  • web-platform-tests/css/css-masking/clip-path/reference-local-url-with-base-001-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/reference-local-url-with-base-001.html: Added.
  • web-platform-tests/css/css-masking/clip-path/reference-mutated-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/reference-mutated.html: Added.
  • web-platform-tests/css/css-masking/clip-path/reference-nonexisting-existing-local-expected.html: Added.
  • web-platform-tests/css/css-masking/clip-path/reference-nonexisting-existing-local.html: Added.
  • web-platform-tests/css/css-masking/clip-path/reference/clip-path-path-with-zoom-hittest-ref.html: Added.
  • web-platform-tests/css/css-masking/clip-path/reference/w3c-import.log: Added.
  • web-platform-tests/css/css-masking/clip-path/svg-clipPath.svg: Added.
  • web-platform-tests/css/css-masking/clip-path/w3c-import.log: Added.

Source/WebCore:

Added a zoom property to BasicShapePath.

When BasicShapePath is created from a clip-path, the shape's zoom received the effective zoom.
The internal cache in BasicShapePath now uses the zoom as an additional cache key, in addition
to windRule, offset and byteStream. Renamed SVGPathTranslatedByteStream to SVGPathTransformedByteStream.

Tests:

imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-path-interpolation-with-zoom.html
imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-path-with-zoom-hittest.html
imported/w3c/web-platform-tests/css/css-masking/clip-path/clip-path-path-with-zoom.html

Also imported the rest of the w3c clip-path tests.

  • css/BasicShapeFunctions.cpp:

(WebCore::basicShapeForValue):

  • css/BasicShapeFunctions.h:
  • rendering/style/BasicShapes.cpp:

(WebCore::SVGPathTransformedByteStream::SVGPathTransformedByteStream):
(WebCore::SVGPathTransformedByteStream::operator== const):
(WebCore::SVGPathTransformedByteStream::operator!= const):
(WebCore::SVGPathTransformedByteStream::path const):
(WebCore::TransformedByteStreamPathPolicy::isKeyNull):
(WebCore::TransformedByteStreamPathPolicy::createValueForKey):
(WebCore::cachedTransformedByteStreamPath):
(WebCore::BasicShapePath::path):
(WebCore::BasicShapePath::operator== const):
(WebCore::BasicShapePath::blend const):
(WebCore::SVGPathTranslatedByteStream::SVGPathTranslatedByteStream): Deleted.
(WebCore::SVGPathTranslatedByteStream::operator== const): Deleted.
(WebCore::SVGPathTranslatedByteStream::operator!= const): Deleted.
(WebCore::SVGPathTranslatedByteStream::isEmpty const): Deleted.
(WebCore::SVGPathTranslatedByteStream::path const): Deleted.
(WebCore::TranslatedByteStreamPathPolicy::isKeyNull): Deleted.
(WebCore::TranslatedByteStreamPathPolicy::createValueForKey): Deleted.
(WebCore::cachedTranslatedByteStreamPath): Deleted.

Add zoom to BasicShapePath and related internal structure.

  • rendering/style/BasicShapes.h:
  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertClipPath):

Read zoom from current style when creating a BasicShapeClipPath.

LayoutTests:

Marked newly imported clip-path w3c tests that don't pass yet as expected failure.
Some of them have open bugs, the others need triage.

11:39 AM Changeset in webkit [268137] by Russell Epstein
  • 8 edits in trunk/Source

Versioning.

WebKit-7611.1.4

11:07 AM Changeset in webkit [268136] by youenn@apple.com
  • 19 edits in trunk

Add support for BlobEvent.timecode
https://bugs.webkit.org/show_bug.cgi?id=217379

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/mediacapture-record/idlharness.window-expected.txt:

Source/WebCore:

Expose timecode getter for BlobEvent.
Make MediaRecorder backend return the timecode value for each fetch data.
For the real backend, compute the timecode as the current audio timestamp for the next fetch data request,
or the current video timestamp if only video is captured.

Covered by rebased test.

  • Modules/mediarecorder/BlobEvent.cpp:

(WebCore::BlobEvent::BlobEvent):

  • Modules/mediarecorder/BlobEvent.h:
  • Modules/mediarecorder/BlobEvent.idl:
  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::createDataAvailableEvent):
(WebCore::MediaRecorder::stopRecording):
(WebCore::MediaRecorder::requestData):
(WebCore::MediaRecorder::fetchData):
(WebCore::MediaRecorder::handleTrackChange):
(WebCore::MediaRecorder::trackEnded):

  • Modules/mediarecorder/MediaRecorder.h:
  • platform/mediarecorder/MediaRecorderPrivate.h:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::fetchData):

  • platform/mediarecorder/MediaRecorderPrivateMock.cpp:

(WebCore::MediaRecorderPrivateMock::fetchData):

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(WebCore::MediaRecorderPrivateWriter::clear):
(WebCore::MediaRecorderPrivateWriter::stopRecording):
(WebCore::MediaRecorderPrivateWriter::fetchData):
(WebCore::MediaRecorderPrivateWriter::updateTimeCode):

Source/WebKit:

Exchange timecode through IPC.

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:

(WebKit::RemoteMediaRecorder::fetchData):

  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.messages.in:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:

(WebKit::MediaRecorderPrivate::fetchData):

  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:
11:05 AM Changeset in webkit [268135] by Tadeu Zagallo
  • 2 edits in trunk/Source/WTF

Add maximum depth check to RedBlackTree
https://bugs.webkit.org/show_bug.cgi?id=217249
<rdar://problem/69432957>

Reviewed by Saam Barati.

We limit all tree traversals to 128 levels deep. That's a very conservative upper bound that
would work for a tree that used all of the available address space.

  • wtf/RedBlackTree.h:
11:04 AM Changeset in webkit [268134] by basuke.suzuki@sony.com
  • 2 edits in trunk/Tools

[build-webkit] Compare with cmakeargs and unhandled to detect configuration change
https://bugs.webkit.org/show_bug.cgi?id=207012

Reviewed by Carlos Alberto Lopez Perez.

Added command line arguments on top of @featureArgs for comparison with previous build
options. This forces regeneration of CMakeCache.txt when any configuration is changed.

  • Scripts/webkitdirs.pm:

(shouldRemoveCMakeCache):

11:02 AM Changeset in webkit [268133] by Alan Bujtas
  • 6 edits
    2 adds in trunk

[LFC][IFC] Adjust the inline formatting context root's content height when the last line has float clear
https://bugs.webkit.org/show_bug.cgi?id=217432

Reviewed by Antti Koivisto.

Source/WebCore:

This patch expands the support for inline content to clear floats (r268122) by taking the clear gap into
account when it occurs after the last line (e.g. <div>foobar<br clear=left"></div>).
In such cases the inline formatting context's content height needs to be adjusted with the computed clear
gap value.

Test: fast/layoutformattingcontext/float-avoiding-br-last-line.html

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):

  • layout/inlineformatting/InlineFormattingState.h:

(WebCore::Layout::InlineFormattingState::setClearGapAfterLastLine):
(WebCore::Layout::InlineFormattingState::clearGapAfterLastLine const):
(WebCore::Layout::InlineFormattingState::clearLineAndRuns):

LayoutTests:

  • fast/layoutformattingcontext/float-avoiding-br-last-line-expected.html: Added.
  • fast/layoutformattingcontext/float-avoiding-br-last-line.html: Added.
10:09 AM Changeset in webkit [268132] by Alan Coon
  • 3 edits in branches/safari-610-branch/LayoutTests

Apply patch. rdar://problem/70024420

Applied "rebased-expectations-patch".

10:09 AM Changeset in webkit [268131] by Alan Coon
  • 1 edit in branches/safari-610-branch/Source/WebCore/platform/Timer.h

Apply patch. rdar://problem/70024420

Applied "patch-timer".

9:41 AM Changeset in webkit [268130] by youenn@apple.com
  • 23 edits
    2 adds in trunk

Add support for MediaRecorder pause/resume
https://bugs.webkit.org/show_bug.cgi?id=217375

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/mediacapture-record/MediaRecorder-pause-resume-expected.txt:
  • web-platform-tests/mediacapture-record/MediaRecorder-peerconnection.https-expected.txt:
  • web-platform-tests/mediacapture-record/idlharness.window-expected.txt:

Source/WebCore:

Implement pause and resume as per spec.
MediaRecorder basically sends pause/resume order to its backend.
The backend then stops observing tracks when paused and resumed observing at resume time.
For video, we make sure to compute the frame timestamp so that the recorded video continues to play without interruption.

Test: http/wpt/mediarecorder/pause-recording.html

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::pauseRecording):
(WebCore::MediaRecorder::resumeRecording):

  • Modules/mediarecorder/MediaRecorder.h:
  • Modules/mediarecorder/MediaRecorder.idl:
  • platform/mediarecorder/MediaRecorderPrivate.cpp:

(WebCore::MediaRecorderPrivate::pause):
(WebCore::MediaRecorderPrivate::resume):

  • platform/mediarecorder/MediaRecorderPrivate.h:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::pauseRecording):
(WebCore::MediaRecorderPrivateAVFImpl::resumeRecording):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
  • platform/mediarecorder/MediaRecorderPrivateMock.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):
(WebCore::MediaRecorderPrivateWriter::pause):
(WebCore::MediaRecorderPrivateWriter::resume):

Source/WebKit:

Add IPC support for sending pause/resume orders.

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:

(WebKit::RemoteMediaRecorder::pause):
(WebKit::RemoteMediaRecorder::resume):

  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.messages.in:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:

(WebKit::MediaRecorderPrivate::pauseRecording):
(WebKit::MediaRecorderPrivate::resumeRecording):

  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:

LayoutTests:

fix-217375

  • http/wpt/mediarecorder/pause-recording-expected.txt: Added.
  • http/wpt/mediarecorder/pause-recording.html: Added.
9:39 AM Changeset in webkit [268129] by youenn@apple.com
  • 2 edits in trunk/LayoutTests/imported/w3c

MediaRecorder::create should not need to create a MediaRecorderPrivate to validate it can record properly
https://bugs.webkit.org/show_bug.cgi?id=217387
<rdar://problem/70049616>

Unreviewed.

Rebased test after https://trac.webkit.org/changeset/268125.
We should fix the exact name of the exception based on https://github.com/w3c/mediacapture-record/issues/206.

  • web-platform-tests/mediacapture-record/MediaRecorder-detached-context-expected.txt:
9:01 AM Changeset in webkit [268128] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

[build.webkit.org] Ensure that invalid step names are not allowed
https://bugs.webkit.org/show_bug.cgi?id=217431

Reviewed by Darin Adler.

  • BuildSlaveSupport/build.webkit.org-config/loadConfig.py:

(loadBuilderConfig):

8:54 AM Changeset in webkit [268127] by pvollan@apple.com
  • 5 edits in trunk

[macOS] Remove 'com.apple.cookied' from the WebContent process sandbox.
https://bugs.webkit.org/show_bug.cgi?id=206088
Source/WebKit:

<rdar://problem/58489040>

Reviewed by Darin Adler.

It has been confirmed that access to the cookied service can be removed from the WebContent process.

Test: fast/sandbox/sandbox-mach-lookup.html

  • WebProcess/com.apple.WebProcess.sb.in:

LayoutTests:

Reviewed by Darin Adler.

  • fast/sandbox/mac/sandbox-mach-lookup-expected.txt:
  • fast/sandbox/mac/sandbox-mach-lookup.html:
8:52 AM Changeset in webkit [268126] by Aditya Keerthi
  • 2 edits in trunk/Source/WebKit

zappos.com: Dropdown - 'Quantity' option size different
https://bugs.webkit.org/show_bug.cgi?id=217395
<rdar://problem/60261396>

Reviewed by Tim Horton.

The select element used in this instance uses a custom font (Open Sans)
with a 16px font size. When presenting the select dropdown a call to
WebPopupMenuProxyMac::showPopupMenu is made with those attributes.
However, since Open Sans is not a system font, the call to
[NSFont fontWithDescriptor:size:] returns nil. This results in the
presented view falling back to the default font size, which is smaller
than the expected 16px size, leading to smaller options.

While other browsers do not honor custom fonts in their select dropdowns,
they do honor the font size. Consequently, this dropdown appears
different in Safari. To fix, ensure that the font size is always honored
if the corresponding attribute is present.

  • UIProcess/mac/WebPopupMenuProxyMac.mm:

(WebKit::WebPopupMenuProxyMac::showPopupMenu):

8:48 AM Changeset in webkit [268125] by youenn@apple.com
  • 3 edits
    2 adds in trunk

MediaRecorder::create should not need to create a MediaRecorderPrivate to validate it can record properly
https://bugs.webkit.org/show_bug.cgi?id=217387

Reviewed by Darin Adler.

Source/WebCore:

Instead of creating a MediaRecorderPrivate to verify that we can create one, just rely on isTypeSupported.
Add a check that page is not null in the create method.

Remove assertion that we can create a private recorder in start since thgere is no guarantee that the frame might not be detached.

Test: http/wpt/mediarecorder/MediaRecorder-frame.html

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::create):
(WebCore::MediaRecorder::createMediaRecorderPrivate):
(WebCore::MediaRecorder::startRecording):

LayoutTests:

  • http/wpt/mediarecorder/MediaRecorder-frame-expected.txt: Added.
  • http/wpt/mediarecorder/MediaRecorder-frame.html: Added.
8:47 AM Changeset in webkit [268124] by Antti Koivisto
  • 9 edits
    4 adds in trunk/Source/WebCore

[LFC][Integration] Add line iterator
https://bugs.webkit.org/show_bug.cgi?id=217427

Reviewed by Zalan Bujtas.

Add line iterator. In this patch it is only used to replace onSameLine function.

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

(WebCore::Position::rendersInDifferentPosition const):

  • layout/integration/LayoutIntegrationLineIterator.cpp: Added.

(WebCore::LayoutIntegration::LineIterator::LineIterator):
(WebCore::LayoutIntegration::LineIterator::atEnd const):
(WebCore::LayoutIntegration::LineIterator::next const):
(WebCore::LayoutIntegration::LineIterator::previous const):
(WebCore::LayoutIntegration::LineIterator::traverseNext):
(WebCore::LayoutIntegration::LineIterator::traversePrevious):

  • layout/integration/LayoutIntegrationLineIterator.h: Added.

(WebCore::LayoutIntegration::PathLine::operator!= const):
(WebCore::LayoutIntegration::LineIterator::LineIterator):
(WebCore::LayoutIntegration::LineIterator::operator++):
(WebCore::LayoutIntegration::LineIterator::operator bool const):
(WebCore::LayoutIntegration::LineIterator::operator== const):
(WebCore::LayoutIntegration::LineIterator::operator!= const):
(WebCore::LayoutIntegration::LineIterator::operator* const):
(WebCore::LayoutIntegration::LineIterator::operator-> const):
(WebCore::LayoutIntegration::PathLine::PathLine):
(WebCore::LayoutIntegration::PathLine::rect const):
(WebCore::LayoutIntegration::PathLine::operator== const):

  • layout/integration/LayoutIntegrationLineIteratorLegacyPath.h: Added.

(WebCore::LayoutIntegration::LegacyLinePath::LegacyLinePath):
(WebCore::LayoutIntegration::LegacyLinePath::rect const):
(WebCore::LayoutIntegration::LegacyLinePath::traverseNext):
(WebCore::LayoutIntegration::LegacyLinePath::traversePrevious):
(WebCore::LayoutIntegration::LegacyLinePath::operator== const):
(WebCore::LayoutIntegration::LegacyLinePath::atEnd const):
(WebCore::LayoutIntegration::LegacyLinePath::setAtEnd):

  • layout/integration/LayoutIntegrationLineIteratorModernPath.h: Added.

(WebCore::LayoutIntegration::ModernLinePath::ModernLinePath):
(WebCore::LayoutIntegration::ModernLinePath::rect const):
(WebCore::LayoutIntegration::ModernLinePath::traverseNext):
(WebCore::LayoutIntegration::ModernLinePath::traversePrevious):
(WebCore::LayoutIntegration::ModernLinePath::operator== const):
(WebCore::LayoutIntegration::ModernLinePath::atEnd const):
(WebCore::LayoutIntegration::ModernLinePath::setAtEnd):
(WebCore::LayoutIntegration::ModernLinePath::lines const):
(WebCore::LayoutIntegration::ModernLinePath::line const):

  • layout/integration/LayoutIntegrationRunIterator.cpp:

(WebCore::LayoutIntegration::RunIterator::line const):

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::PathRun::logicalLeft const):
(WebCore::LayoutIntegration::PathRun::logicalRight const):
(WebCore::LayoutIntegration::PathRun::logicalWidth const):
(WebCore::LayoutIntegration::PathRun::logicalHeight const):
(WebCore::LayoutIntegration::PathRun::onSameLine const): Deleted.

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LegacyPath::operator== const):
(WebCore::LayoutIntegration::LegacyPath::rootInlineBox const):
(WebCore::LayoutIntegration::LegacyPath::onSameLine const): Deleted.

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::verticallyRoundedRect):
(WebCore::LayoutIntegration::ModernPath::rect const):
(WebCore::LayoutIntegration::ModernPath::operator== const):
(WebCore::LayoutIntegration::linePosition): Deleted.
(WebCore::LayoutIntegration::ModernPath::onSameLine const): Deleted.

8:20 AM Changeset in webkit [268123] by Aditya Keerthi
  • 4 edits
    1 add in trunk

REGRESSION: Date/time pickers are not displayed in UIWebViews
https://bugs.webkit.org/show_bug.cgi?id=217341
<rdar://problem/66881739>

Reviewed by Wenson Hsieh.

Source/WTF:

Date/time inputs were incorrectly disabled by default on
PLATFORM(IOS_FAMILY) in WebPreferencesInternal.

  • Scripts/Preferences/WebPreferencesInternal.yaml:

Tools:

Added regression tests to ensure this preference is not accidently
modified in the future.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitLegacy/ios/DateTimeInputsAccessoryViewTests.mm: Added.

(-[DateTimeInputsTestsLoadingDelegate webViewDidFinishLoad:]):
(runTestWithInputType):

Note that [UIDatePicker setDatePickerMode:] had to be swizzled to an
empty implementation as the UIKit version on the bots attempts to
create a QoS interval upon setting the initially selected row in
a UITableView when the date picker is presented. This fails because
TestWebKitAPI isn't actually an app. To avoid an exception, the method
is swizzled out.

7:38 AM Changeset in webkit [268122] by Alan Bujtas
  • 10 edits
    2 adds in trunk

[LFC][IFC] Add initial support for inline content to clear intrusive floats
https://bugs.webkit.org/show_bug.cgi?id=217418

Reviewed by Antti Koivisto.

Source/WebCore:

In this patch we introduce the concept of gaps between lines. These gaps are required
to clear intrusive floats when the inline content has the clear property set.
(This behavior changed in CSS2. Now the clear property only applies to block-level elements.)

Adjust the logic in FloatingContext::verticalPositionWithClearance so that it can take an inline level box
and make sure that the next line does not start above the clearance position.

Test: fast/layoutformattingcontext/float-avoiding-br-simple.html

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::geometryForBox const):

  • layout/FormattingContext.h:
  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::absoluteCoordinates const):
(WebCore::Layout::FloatingContext::mapTopLeftToFloatingStateRoot const):
(WebCore::Layout::FloatingContext::mapPointFromFormattingContextRootToFloatingStateRoot const):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):

  • layout/inlineformatting/InlineFormattingContext.h:
  • layout/inlineformatting/InlineFormattingContextGeometry.cpp:

(WebCore::Layout::InlineFormattingContext::Geometry::logicalTopForNextLine const):

LayoutTests:

  • fast/layoutformattingcontext/float-avoiding-br-simple-expected.html: Added.
  • fast/layoutformattingcontext/float-avoiding-br-simple.html: Added.
6:19 AM Changeset in webkit [268121] by Alan Bujtas
  • 6 edits in trunk/Source/WebCore

[LFC][Floating] Move FloatingState::top/bottom functions over to FloatingContext
https://bugs.webkit.org/show_bug.cgi?id=217411

Reviewed by Antti Koivisto.

FormattingState classes are mostly about setters and getters and they don't have any involved logic.
While both top() and bottom() are both rather lightweight at the moment, it will change with the
upcoming <br clear> feature. Let's just move these function over to FloatingContext.

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases const):

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
(WebCore::Layout::FloatingContext::bottom const): The check for isInFormattingContextOf() is redundant, so let's not add that back here.
(WebCore::Layout::FloatingContext::top const):

  • layout/floats/FloatingContext.h:

(WebCore::Layout::FloatingContext::leftBottom const):
(WebCore::Layout::FloatingContext::rightBottom const):
(WebCore::Layout::FloatingContext::bottom const):

  • layout/floats/FloatingState.cpp:

(WebCore::Layout::FloatingState::bottom const): Deleted.
(WebCore::Layout::FloatingState::top const): Deleted.

  • layout/floats/FloatingState.h:

(WebCore::Layout::FloatingState::leftBottom const): Deleted.
(WebCore::Layout::FloatingState::rightBottom const): Deleted.
(WebCore::Layout::FloatingState::bottom const): Deleted.

4:01 AM Changeset in webkit [268120] by commit-queue@webkit.org
  • 15 edits
    10 deletes in trunk

Unreviewed, reverting r268085.
https://bugs.webkit.org/show_bug.cgi?id=217424

Added broken test webgl/conformance/extensions/s3tc-and-
rgtc.html

Reverted changeset:

"Support EXT_texture_compression_rgtc WebGL extension"
https://bugs.webkit.org/show_bug.cgi?id=217198
https://trac.webkit.org/changeset/268085

2:22 AM Changeset in webkit [268119] by youenn@apple.com
  • 15 edits in trunk

Make sure to fire the correct set of events in case MediaRecorder stream has track changes
https://bugs.webkit.org/show_bug.cgi?id=217316

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/mediacapture-record/MediaRecorder-error.html:
  • web-platform-tests/mediacapture-record/MediaRecorder-stop-expected.txt:
  • web-platform-tests/mediacapture-record/MediaRecorder-stop.html:

Source/WebCore:

Introduce MediaRecorderPrivate::stop which makes sure to unregister from media sources before stopping.
Update firing events according https://w3c.github.io/mediacapture-record/#dom-mediarecorder-start when track set is changed.
Covered by updated test.

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::create):
(WebCore::MediaRecorder::stopRecordingInternal):
(WebCore::MediaRecorder::handleTrackChange):

  • platform/mediarecorder/MediaRecorderPrivate.cpp:

(WebCore::MediaRecorderPrivate::stop):

  • platform/mediarecorder/MediaRecorderPrivate.h:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::~MediaRecorderPrivateAVFImpl):
(WebCore::MediaRecorderPrivateAVFImpl::stopRecording):

  • platform/mediarecorder/MediaRecorderPrivateMock.cpp:

(WebCore::MediaRecorderPrivateMock::~MediaRecorderPrivateMock):
(WebCore::MediaRecorderPrivateMock::stopRecording):

Source/WebKit:

Make sure to not set audio/video tracks if the recorder was stopped.

  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:

(WebKit::MediaRecorderPrivate::startRecording):
(WebKit::MediaRecorderPrivate::~MediaRecorderPrivate):
(WebKit::MediaRecorderPrivate::stopRecording):

  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:

LayoutTests:

  • platform/mac-wk2/TestExpectations:

Oct 6, 2020:

11:01 PM Changeset in webkit [268118] by Peng Liu
  • 37 edits in trunk/Source/WebKit

[Media in GPU process] Don't use 'id' as a parameter or variable name
https://bugs.webkit.org/show_bug.cgi?id=206189

Reviewed by Tim Horton.

Mass rename id to identifier.

No new tests, no functional change.

  • GPUProcess/media/RemoteAudioDestinationManager.cpp:

(WebKit::RemoteAudioDestination::create):
(WebKit::RemoteAudioDestination::RemoteAudioDestination):
(WebKit::RemoteAudioDestinationManager::deleteAudioDestination):
(WebKit::RemoteAudioDestinationManager::startAudioDestination):
(WebKit::RemoteAudioDestinationManager::stopAudioDestination):

  • GPUProcess/media/RemoteAudioDestinationManager.messages.in:
  • GPUProcess/media/RemoteAudioTrackProxy.cpp:

(WebKit::RemoteAudioTrackProxy::RemoteAudioTrackProxy):
(WebKit::RemoteAudioTrackProxy::configuration):

  • GPUProcess/media/RemoteAudioTrackProxy.h:
  • GPUProcess/media/RemoteCDMFactoryProxy.cpp:

(WebKit::RemoteCDMFactoryProxy::addProxy):
(WebKit::RemoteCDMFactoryProxy::removeProxy):
(WebKit::RemoteCDMFactoryProxy::addInstance):
(WebKit::RemoteCDMFactoryProxy::removeInstance):
(WebKit::RemoteCDMFactoryProxy::getInstance):
(WebKit::RemoteCDMFactoryProxy::addSession):
(WebKit::RemoteCDMFactoryProxy::removeSession):

  • GPUProcess/media/RemoteCDMFactoryProxy.messages.in:
  • GPUProcess/media/RemoteCDMInstanceProxy.messages.in:
  • GPUProcess/media/RemoteCDMProxy.messages.in:
  • GPUProcess/media/RemoteLegacyCDMFactoryProxy.cpp:

(WebKit::RemoteLegacyCDMFactoryProxy::addProxy):
(WebKit::RemoteLegacyCDMFactoryProxy::removeProxy):
(WebKit::RemoteLegacyCDMFactoryProxy::addSession):
(WebKit::RemoteLegacyCDMFactoryProxy::removeSession):
(WebKit::RemoteLegacyCDMFactoryProxy::getSession const):

  • GPUProcess/media/RemoteLegacyCDMFactoryProxy.messages.in:
  • GPUProcess/media/RemoteLegacyCDMProxy.messages.in:
  • GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:

(WebKit::RemoteMediaPlayerManagerProxy::createMediaPlayer):
(WebKit::RemoteMediaPlayerManagerProxy::deleteMediaPlayer):
(WebKit::RemoteMediaPlayerManagerProxy::getProxy):

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:
  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::RemoteMediaPlayerProxy):

  • GPUProcess/media/RemoteMediaResource.cpp:

(WebKit::RemoteMediaResource::create):
(WebKit::RemoteMediaResource::RemoteMediaResource):

  • GPUProcess/media/RemoteMediaResourceManager.cpp:

(WebKit::RemoteMediaResourceManager::responseReceived):
(WebKit::RemoteMediaResourceManager::redirectReceived):
(WebKit::RemoteMediaResourceManager::dataSent):
(WebKit::RemoteMediaResourceManager::dataReceived):
(WebKit::RemoteMediaResourceManager::accessControlCheckFailed):
(WebKit::RemoteMediaResourceManager::loadFailed):
(WebKit::RemoteMediaResourceManager::loadFinished):

  • GPUProcess/media/RemoteMediaResourceManager.messages.in:
  • GPUProcess/media/RemoteTextTrackProxy.cpp:

(WebKit::RemoteTextTrackProxy::RemoteTextTrackProxy):
(WebKit::RemoteTextTrackProxy::configuration):

  • GPUProcess/media/RemoteTextTrackProxy.h:
  • GPUProcess/media/RemoteVideoTrackProxy.cpp:

(WebKit::RemoteVideoTrackProxy::RemoteVideoTrackProxy):
(WebKit::RemoteVideoTrackProxy::configuration):

  • GPUProcess/media/RemoteVideoTrackProxy.h:
  • GPUProcess/media/TextTrackPrivateRemoteConfiguration.h:

(WebKit::TextTrackPrivateRemoteConfiguration::encode const):
(WebKit::TextTrackPrivateRemoteConfiguration::decode):

  • GPUProcess/media/TrackPrivateRemoteConfiguration.h:

(WebKit::TrackPrivateRemoteConfiguration::encode const):
(WebKit::TrackPrivateRemoteConfiguration::decode):

  • WebProcess/GPU/media/AudioTrackPrivateRemote.cpp:

(WebKit::AudioTrackPrivateRemote::updateConfiguration):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::remoteTextTrackConfigurationChanged):
(WebKit::MediaPlayerPrivateRemote::removeRemoteVideoTrack):
(WebKit::MediaPlayerPrivateRemote::remoteVideoTrackConfigurationChanged):

  • WebProcess/GPU/media/RemoteCDM.cpp:

(WebKit::RemoteCDM::create):
(WebKit::RemoteCDM::RemoteCDM):
(WebKit::RemoteCDM::createInstance):

  • WebProcess/GPU/media/RemoteCDMFactory.cpp:

(WebKit::RemoteCDMFactory::createCDM):
(WebKit::RemoteCDMFactory::removeSession):

  • WebProcess/GPU/media/RemoteCDMInstance.cpp:

(WebKit::RemoteCDMInstance::create):
(WebKit::RemoteCDMInstance::RemoteCDMInstance):
(WebKit::RemoteCDMInstance::createSession):

  • WebProcess/GPU/media/RemoteCDMInstanceSession.cpp:

(WebKit::RemoteCDMInstanceSession::create):
(WebKit::RemoteCDMInstanceSession::RemoteCDMInstanceSession):

  • WebProcess/GPU/media/RemoteLegacyCDM.cpp:

(WebKit::RemoteLegacyCDM::create):
(WebKit::RemoteLegacyCDM::RemoteLegacyCDM):
(WebKit::RemoteLegacyCDM::createSession):
(WebKit::RemoteLegacyCDM::setPlayerId):

  • WebProcess/GPU/media/RemoteLegacyCDMFactory.cpp:

(WebKit::RemoteLegacyCDMFactory::createCDM):
(WebKit::RemoteLegacyCDMFactory::addSession):
(WebKit::RemoteLegacyCDMFactory::removeSession):

  • WebProcess/GPU/media/RemoteLegacyCDMSession.cpp:

(WebKit::RemoteLegacyCDMSession::create):
(WebKit::RemoteLegacyCDMSession::RemoteLegacyCDMSession):

  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:

(WebKit::RemoteMediaPlayerManager::deleteRemoteMediaPlayer):

  • WebProcess/GPU/media/RemoteMediaResourceProxy.cpp:

(WebKit::RemoteMediaResourceProxy::RemoteMediaResourceProxy):

  • WebProcess/GPU/media/TextTrackPrivateRemote.cpp:

(WebKit::TextTrackPrivateRemote::updateConfiguration):

  • WebProcess/GPU/media/VideoTrackPrivateRemote.cpp:

(WebKit::VideoTrackPrivateRemote::updateConfiguration):

10:59 PM Changeset in webkit [268117] by Andres Gonzalez
  • 5 edits in trunk

Presidential Executive Order pages not accessible with Safari.
https://bugs.webkit.org/show_bug.cgi?id=217415

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/aria-modal.html.

These pages have a dialog modal element of the form

<div class="popover" role="dialog" aria-modal="true">

with style visible and a display value different from none. This makes
WebCore/accessibility to treat it as if the dialog were always visible,
and thus do not convey the content of the page outside the dialog to
VoiceOver. The author controls the visibility of the dialog using the
style opacity. This patch adds the check for the opacity to determine
whether an element is visible or not.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::isNodeVisible const):

LayoutTests:

Expanded this test to cover the case whether the modal dialog visibility
is controlled by its opacity. Cleaned up JS code and made it work in
isolated tree mode.

  • accessibility/aria-modal-expected.txt:
  • accessibility/aria-modal.html:
9:50 PM Changeset in webkit [268116] by Devin Rousso
  • 22 edits in trunk

Move platform logic for CSS hover and pointer media queries outside of WebCore
https://bugs.webkit.org/show_bug.cgi?id=217413

Reviewed by Tim Horton.

Source/WebCore:

No change in behavior, covered by existing tests.

  • css/MediaQueryEvaluator.cpp:

(WebCore::hoverEvaluate):
(WebCore::pointerEvaluate):

  • page/ChromeClient.h:
  • loader/EmptyClients.h:

(WebCore::EmptyChromeClient::hoverSupportedByPrimaryPointingDevice const): Added.
(WebCore::EmptyChromeClient::pointerCharacteristicsOfPrimaryPointingDevices const): Added.
Provide a way for WebCore to get information about the primary pointing device.
Refactor logic in hoverEvaluate and pointerEvaluate to move platform code into the
respective WebKit::WebPage file.

Source/WebKit:

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::hoverSupportedByPrimaryPointingDevice const): Added.
(WebKit::WebChromeClient::pointerCharacteristicsOfPrimaryPointingDevices const): Added.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/gtk/WebPageGtk.cpp:

(WebKit::WebPage::hoverSupportedByPrimaryPointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfPrimaryPointingDevices const): Added.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::hoverSupportedByPrimaryPointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfPrimaryPointingDevices const): Added.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::hoverSupportedByPrimaryPointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfPrimaryPointingDevices const): Added.

  • WebProcess/WebPage/playstation/WebPagePlayStation.cpp:

(WebKit::WebPage::hoverSupportedByPrimaryPointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfPrimaryPointingDevices const): Added.

  • WebProcess/WebPage/win/WebPageWin.cpp:

(WebKit::WebPage::hoverSupportedByPrimaryPointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfPrimaryPointingDevices const): Added.

  • WebProcess/WebPage/wpe/WebPageWPE.cpp:

(WebKit::WebPage::hoverSupportedByPrimaryPointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfPrimaryPointingDevices const): Added.
Provide a way for WebCore to get information about the primary pointing device.
Refactor logic in WebCore::anyHoverEvaluate and WebCore::anyPointerEvaluate to move
platform code into the respective WebPage file.

Source/WebKitLegacy/ios:

  • WebCoreSupport/WebChromeClientIOS.h:

(WebChromeClientIOS::hoverSupportedByPrimaryPointingDevice const): Added.
(WebChromeClientIOS::pointerCharacteristicsOfPrimaryPointingDevice const): Added.
Mouse devices are not supported.

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebChromeClient.h:

(WebChromeClient::hoverSupportedByPrimaryPointingDevice const): Added.
(WebChromeClient::pointerCharacteristicsOfPrimaryPointingDevice const): Added.
Mouse devices are always supported.

Source/WebKitLegacy/win:

  • WebCoreSupport/WebChromeClient.h:

(WebChromeClient::hoverSupportedByPrimaryPointingDevice const): Added.
(WebChromeClient::pointerCharacteristicsOfPrimaryPointingDevice const): Added.
Mouse devices are always supported.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/iOSMouseSupport.mm:

(iOSMouseSupport.MouseInitiallyDisconnected):
(iOSMouseSupport.MouseInitiallyConnected):
(iOSMouseSupport.MouseLaterDisconnected):
(iOSMouseSupport.MouseLaterConnected):
(iOSMouseSupport.MouseAlwaysConnected):

9:20 PM Changeset in webkit [268115] by weinig@apple.com
  • 19 edits in trunk/Tools

Refactor TestOptions code in WebKitTestRunner to make it easier to rationalize and extend
https://bugs.webkit.org/show_bug.cgi?id=217390

Reviewed by Darin Adler.

Refactors TestOptions code in WebKitTestRunner to make it clear how options coming in at
different levels are treated and what precedence each has. The order is (from least to most):

  • Global features passed to WebKitTestRunner via the command line (e.g. --show-touches)
  • Hardcoded features based on the path of the test being run (hopefully we can remove all soon)
  • Hardcoded platform specific defaults (currently only used by macOS for useThreadedScrolling).
  • Features from the test headers within the test itself.
  • Finally, a second chance for more platform specific defaults (currenly only used the Cocoa ports for setting enableProcessSwapOnNavigation and enableProcessSwapOnWindowOpen based on NSUserDefaults.)

To make this change work, and pave the way for future autogeneration of some of these test options,
the TestOptions struct (now class) was overhauled. Instead of storing the state itself, TestOptions
is now an immutable owner of a TestFeatures object. TestFeatures is a simple struct that contains maps
of option keys to values and can be merged with other TestFeatures objects. TestOptions takes a
TestFeatures at construction, and exposes getters for all keys, as well as defaults for when they are
not in the maps. In future changes, I would like to remove many of these (the ones that correspond
with WebKit preferences anyway) and have the keys and values automatically dealt with by WKPreferences.

  • WebKitTestRunner/Options.cpp:
  • WebKitTestRunner/Options.h:

Switch to std::unordered_map for consistency and ease of conversion.

  • WebKitTestRunner/PlatformWebView.h:

(WTR::PlatformWebView::viewSupportsOptions const):
Update to call new TestOptions functions.

  • WebKitTestRunner/StringFunctions.h:

(WTR::toWK):
(WTR::toWTFString):
Add conversions for std::string.

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

(WTR::TestController::initialize):
Replace some bools with a new global TestFeatures instance that forms the base of
all TestFeatures merges.

(WTR::TestController::generateContextConfiguration const):
(WTR::TestController::generatePageConfiguration):
(WTR::TestController::createWebViewWithOptions):
(WTR::TestController::ensureViewSupportsOptionsForTest):
(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::TestController::resetStateToConsistentValues):
Update to call new TestOptions functions.

(WTR::TestController::createTestURL):
Expose as a static member function on TestController for use in other files.

(WTR::TestController::testOptionsForTest const):
Rework to be a sequence of TestFeatures merges.

(WTR::TestController::updateWebViewSizeForTest):
(WTR::TestController::updateWindowScaleForTest):
Update to call new TestOptions functions.

(WTR::createTestURL): Deleted.
(WTR::parseBooleanTestHeaderValue): Deleted.
(WTR::parseStringTestHeaderValueAsRelativePath): Deleted.
(WTR::parseStringTestHeaderValueAsURL): Deleted.
(WTR::updateTestOptionsFromTestHeader): Deleted.
(WTR::TestController::platformAddTestOptions const): Deleted.
Moved TestOptions parsing to TestOptions.cpp

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::createTestSettingsDictionary):
Update to call new TestOptions functions.

  • WebKitTestRunner/TestOptions.h:

Reworks TestOptions to be an immutable owner of a TestFeatures struct, which is a set
of maps that map feature string keys, to values of type bool, double, string or string vector.

  • WebKitTestRunner/TestOptions.cpp:

(WTR::merge):
Merges two TestFeatures objects. If both contain the same key, the 'additional'
TestFeatures overrides the 'base' TestFeatures.

(WTR::dumpFeatures):
Helper to dump features to stderr, useful for debugging.

(WTR::keyType):
Helper for parser to know which value parser to use.

(WTR::parseBooleanTestHeaderValue):
(WTR::parseStringTestHeaderValueAsRelativePath):
(WTR::parseStringTestHeaderValueAsURL):
Value parsers moved from TestController.cpp

(WTR::parseTestHeader):
Header parser moved from TestController.cpp. Update to now return
a TestFeatures object and use keyType to pick value parser rather
than inlining the if statements.

(WTR::hardcodedFeaturesBasedOnPathForTest):
Moved from the TestOptions contructor and reworked to return a TestFeatures
object to be merged by the caller.

(WTR::featureDefaultsFromTestHeaderForTest):
Creates a TestFeatures for the test headers of the current test.

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::platformSpecificFeatureOverridesDefaultsForTest const):
Reworked to now return a TestFeatures object that will be merged, rather than updating
a TestOptions. Moves enableInAppBrowserPrivacy work to TestController::platformWillRunTest
where it is more appropriate.

(WTR::TestController::platformInitializeDataStore):
(WTR::TestController::platformCreateWebView):
(WTR::TestController::finishCreatingPlatformWebView):
(WTR::TestController::setApplicationBundleIdentifier):
(WTR::TestController::cocoaResetStateToConsistentValues):
(WTR::contentMode):
Update to call new TestOptions functions.

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformResetStateToConsistentValues):
(WTR::TestController::platformConfigureViewForTest):
Update to call new TestOptions functions.

(WTR::TestController::platformSpecificFeatureDefaultsForTest const):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest const): Deleted.
Moved GeneratedTouchesDebugWindow work to TestController::platformConfigureViewForTest
where it is more appropriate and removed shouldShowTouches setting as that is done
globally now.

  • WebKitTestRunner/mac/PlatformWebViewMac.mm:

(WTR::PlatformWebView::PlatformWebView):
Update to call new TestOptions functions.

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::platformSpecificFeatureDefaultsForTest const):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest const): Deleted.
Remove shouldUseRemoteLayerTree and shouldShowWebView, as those are now done globally,
and re-implemented useThreadedScrolling to use boolFeatures.

  • WebKitTestRunner/win/TestControllerWin.cpp:

(WTR::TestController::platformSpecificFeatureDefaultsForTest const):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest const): Deleted.
Updated for new signature.

  • WebKitTestRunner/wpe/TestControllerWPE.cpp:

(WTR::TestController::platformSpecificFeatureDefaultsForTest const):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest const): Deleted.
Updated for new signature.

  • WebKitTestRunner/gtk/TestControllerGTK.cpp:

(WTR::TestController::platformSpecificFeatureDefaultsForTest const):
(WTR::TestController::updatePlatformSpecificTestOptionsForTest const): Deleted.
Updated for new signature.

9:03 PM Changeset in webkit [268114] by weinig@apple.com
  • 42 edits
    10 adds in trunk

<input type="datetime-local"> not show calendar UI when it's inside ShadowDOM
https://bugs.webkit.org/show_bug.cgi?id=216985
<rdar://problem/69660273>

Reviewed by Darin Adler.

Source/WebCore:

Tests: fast/forms/date/date-from-frameless-document.html

fast/forms/datetimelocal/datetimelocal-from-frameless-document.html
fast/forms/month/month-from-frameless-document.html
fast/forms/time/time-from-frameless-document.html
fast/forms/week/week-from-frameless-document.html

The issue here was that frameless documents, such as those created via the
<template> element or document.implementation.createHTMLDocument(...) were
not able to access the real Settings object, so were creating their own which
only contained the default values. So, the solution is to ensure we pass
the real Settings object to the Document constructors even when the Frame is
null.

To do this requires a bit of piping Settings around, but also some simplification.
Now, the Settings owned by Document is fully immutable, with the mutableSettings()
accessor being removed, as it was not actually needed. The two uses of mutable
Settings were for ServiceWorker creation, where we can just use the mutable accessor
from Page instead, and in the Document constructor, where the LegacyGetUserMediaEnabled
setting was being enabled based on a quirk. This was not only incorrect (as it would
effect more than just what the quirk intended) but unnecessary, as we can make the
bindings access the quirk directly.

The one somewhat complex case was for CachedSVGDocument and CachedSVGFont for which
I had to thread settings through CachedResourceLoader and have the CachedSVGDocument
and CachedSVGFont hold onto the Settings object until it was time to construct their
documents.

  • bindings/scripts/CodeGeneratorJS.pm:

(NeedsRuntimeCheck):
(GenerateRuntimeEnableConditionalString):

  • bindings/scripts/IDLAttributes.json:

Add support back for EnabledByQuirk.

  • Modules/mediastream/Navigator+MediaDevices.idl:

Switch to EnabledByQuirk=shouldEnableLegacyGetUserMedia.

  • page/Quirks.cpp:

(WebCore::Quirks::shouldEnableLegacyGetUserMediaQuirk const):
(WebCore::Quirks::shouldEnableLegacyGetUserMedia const): Deleted.

  • page/Quirks.h:

Rename quirk to end in "Quirk" to work with the bindings generator.

  • page/Settings.yaml:

Remove now unused legacyGetUserMediaEnabled settings.

  • Scripts/SettingsTemplates/Settings.h.erb:

Export the settings contructor and destructor so it can be used by tests.

  • workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::createPageForServiceWorker):
Switch to using the mutable settings from Page.

  • dom/DOMImplementation.cpp:

(WebCore::createXMLDocument):
(WebCore::DOMImplementation::createDocument):
(WebCore::DOMImplementation::createHTMLDocument):

  • dom/DOMImplementation.h:
  • dom/Document.cpp:

(WebCore::Document::Document):
(WebCore::m_selection):
(WebCore::Document::create):
(WebCore::Document::createNonRenderedPlaceholder):
(WebCore::Document::cloneDocumentWithoutChildren const):
(WebCore::Document::ensureTemplateDocument):

  • dom/Document.h:

(WebCore::Document::settings const):
(WebCore::Document::create):
(WebCore::Document::mutableSettings): Deleted.

  • dom/XMLDocument.h:

(WebCore::XMLDocument::create):
(WebCore::XMLDocument::createXHTML):
(WebCore::XMLDocument::XMLDocument):

  • html/FTPDirectoryDocument.cpp:

(WebCore::FTPDirectoryDocument::FTPDirectoryDocument):

  • html/FTPDirectoryDocument.h:
  • html/HTMLDocument.cpp:

(WebCore::HTMLDocument::createSynthesizedDocument):
(WebCore::HTMLDocument::HTMLDocument):
(WebCore::HTMLDocument::cloneDocumentWithoutChildren const):

  • html/HTMLDocument.h:

(WebCore::HTMLDocument::create):

  • html/ImageDocument.cpp:

(WebCore::ImageDocument::ImageDocument):

  • html/ImageDocument.h:
  • html/MediaDocument.cpp:

(WebCore::MediaDocument::MediaDocument):

  • html/MediaDocument.h:
  • html/PluginDocument.cpp:

(WebCore::PluginDocument::PluginDocument):

  • html/PluginDocument.h:
  • html/TextDocument.cpp:

(WebCore::TextDocument::TextDocument):

  • html/TextDocument.h:
  • inspector/DOMPatchSupport.cpp:

(WebCore::DOMPatchSupport::patchDocument):

  • loader/DocumentWriter.cpp:

(WebCore::DocumentWriter::createDocument):
(WebCore::DocumentWriter::begin):

  • loader/SinkDocument.cpp:

(WebCore::SinkDocument::SinkDocument):

  • loader/SinkDocument.h:
  • loader/cache/CachedResourceLoader.cpp:

(WebCore::createResource):
(WebCore::CachedResourceLoader::updateCachedResourceWithCurrentRequest):
(WebCore::CachedResourceLoader::requestResource):
(WebCore::CachedResourceLoader::revalidateResource):
(WebCore::CachedResourceLoader::loadResource):

  • loader/cache/CachedResourceLoader.h:
  • loader/cache/CachedSVGDocument.cpp:

(WebCore::CachedSVGDocument::CachedSVGDocument):
(WebCore::CachedSVGDocument::finishLoading):

  • loader/cache/CachedSVGDocument.h:
  • loader/cache/CachedSVGFont.cpp:

(WebCore::CachedSVGFont::CachedSVGFont):
(WebCore::CachedSVGFont::ensureCustomFontData):

  • loader/cache/CachedSVGFont.h:
  • page/ios/FrameIOS.mm:

(WebCore::Frame::initWithSimpleHTMLDocument):

  • svg/SVGDocument.cpp:

(WebCore::SVGDocument::SVGDocument):
(WebCore::SVGDocument::cloneDocumentWithoutChildren const):

  • svg/SVGDocument.h:

(WebCore::SVGDocument::create):

  • xml/DOMParser.cpp:

(WebCore::DOMParser::DOMParser):
(WebCore::DOMParser::parseFromString):

  • xml/DOMParser.h:
  • xml/XMLHttpRequest.cpp:
  • xml/XSLTProcessor.cpp:

(WebCore::XSLTProcessor::createDocumentFromSource):
Thread settings into all the places.

Tools:

  • TestWebKitAPI/Tests/WebCore/DocumentOrder.cpp:

(TestWebKitAPI::createDocument):
Update to pass a Settings object to Document::create which is now required.

LayoutTests:

Add tests that show that date/time input elements are the same whether they come from a template
document or the main document.

  • fast/forms/date/date-from-frameless-document-expected.html: Added.
  • fast/forms/date/date-from-frameless-document.html: Added.
  • fast/forms/datetimelocal/datetimelocal-from-frameless-document-expected.html: Added.
  • fast/forms/datetimelocal/datetimelocal-from-frameless-document.html: Added.
  • fast/forms/month/month-from-frameless-document-expected.html: Added.
  • fast/forms/month/month-from-frameless-document.html: Added.
  • fast/forms/time/time-from-frameless-document-expected.html: Added.
  • fast/forms/time/time-from-frameless-document.html: Added.
  • fast/forms/week/week-from-frameless-document-expected.html: Added.
  • fast/forms/week/week-from-frameless-document.html: Added.
8:34 PM Changeset in webkit [268113] by Lauro Moura
  • 2 edits
    1 add in trunk/LayoutTests

[GLIB] Gardening and rebaseline two tests

Unreviewed test gardening.

  • platform/glib/webaudio/audioworklet-addModule-failure-expected.txt: Added.
  • platform/gtk/TestExpectations:
8:20 PM Changeset in webkit [268112] by Karl Rackler
  • 2 edits in trunk/LayoutTests

REGRESSION (iOS 14): [ iOS wk2 ] imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml.html is a constant failure
https://bugs.webkit.org/show_bug.cgi?id=217419

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
6:45 PM Changeset in webkit [268111] by Alan Coon
  • 1 copy in tags/Safari-610.2.11

Tag Safari-610.2.11.

6:35 PM Changeset in webkit [268110] by Alan Coon
  • 8 edits in branches/safari-610.2-branch/Source

Versioning.

WebKit-7610.2.11

6:28 PM Changeset in webkit [268109] by Alan Coon
  • 1 copy in tags/Safari-611.1.1.3

Tag Safari-611.1.1.3.

6:23 PM Changeset in webkit [268108] by Alan Coon
  • 8 edits in branches/safari-611.1.1-branch/Source

Versioning.

WebKit-7611.1.1.3

6:05 PM Changeset in webkit [268107] by Alan Coon
  • 4 edits in branches/safari-610-branch/Source/WebKit

Apply patch. rdar://problem/70026315

6:02 PM Changeset in webkit [268106] by Alan Coon
  • 10 edits
    2 adds in branches/safari-610-branch

Cherry-pick r267987. rdar://problem/70025699

MediaRecorder should respect enabled and muted tracks
https://bugs.webkit.org/show_bug.cgi?id=217312

Reviewed by Eric Carlson.

Source/WebCore:

If track is muted, replace it by either silence (audio buffer filled with zeros) or black frames.
MediaRecorderPrivate will keep track of whether the selected track should be muted.
It is then the responsibility of the specialization to do the appropriate processing.

Test: http/wpt/mediarecorder/mute-tracks.html

  • Modules/mediarecorder/MediaRecorder.cpp: (WebCore::MediaRecorder::trackMutedChanged): (WebCore::MediaRecorder::trackEnabledChanged):
  • Modules/mediarecorder/MediaRecorder.h:
  • platform/audio/cocoa/WebAudioBufferList.cpp: (WebCore::WebAudioBufferList::zeroFlatBuffer):
  • platform/audio/cocoa/WebAudioBufferList.h:
  • platform/mediarecorder/MediaRecorderPrivate.cpp: (WebCore::MediaRecorderPrivate::selectTracks): (WebCore::MediaRecorderPrivate::checkTrackState):
  • platform/mediarecorder/MediaRecorderPrivate.h: (WebCore::MediaRecorderPrivate::trackMutedChanged): (WebCore::MediaRecorderPrivate::trackEnabledChanged): (WebCore::MediaRecorderPrivate::shouldMuteAudio const): (WebCore::MediaRecorderPrivate::shouldMuteVideo const):
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp: (WebCore::MediaRecorderPrivateAVFImpl::create): (WebCore::MediaRecorderPrivateAVFImpl::videoSampleAvailable): (WebCore::MediaRecorderPrivateAVFImpl::audioSamplesAvailable):
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:

LayoutTests:

  • http/wpt/mediarecorder/mute-tracks-expected.txt: Added.
  • http/wpt/mediarecorder/mute-tracks.html: Added.

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

6:02 PM Changeset in webkit [268105] by Alan Coon
  • 11 edits
    1 add in branches/safari-610-branch

Cherry-pick r267870. rdar://problem/70025703

Add AVAssetWriter SPI header
https://bugs.webkit.org/show_bug.cgi?id=217169
<rdar://problem/69793050>

Reviewed by Eric Carlson.

Source/WebCore:

No change of behavior, include SPI header instead of private SDK header.

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

Source/WebCore/PAL:

  • PAL.xcodeproj/project.pbxproj:
  • pal/spi/cocoa/AVAssetWriterSPI.h: Added.

Source/WTF:

  • wtf/PlatformHave.h: Remove dependency on AVAssetWriter_private.h. Introduce HAVE_AVASSETWRITERDELEGATE_API for older OSes that only have delegate as SPI.

LayoutTests:

Enable tests by default on Catalina+, disable them on Mojave and WK1.
Disable tests for iOS13.

  • TestExpectations:
  • platform/ios-13/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/mac-wk1/TestExpectations:

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

6:02 PM Changeset in webkit [268104] by Alan Coon
  • 5 edits in branches/safari-610-branch/LayoutTests

Apply patch. rdar://problem/70024420

5:36 PM Changeset in webkit [268103] by Chris Dumez
  • 28 edits
    4 copies in trunk

Add implementation for AudioWorkletGlobalScope.registerProcessor()
https://bugs.webkit.org/show_bug.cgi?id=217405

Reviewed by Geoff Garen.

LayoutTests/imported/w3c:

Rebaseline WPT tests as we are now passing more checks.

  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet-connections.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/k-rate-audioworklet.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam-iterable.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-audioparam.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https-expected.txt:
  • web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-construction.https-expected.txt:

Source/WebCore:

Add implementation for AudioWorkletGlobalScope.registerProcessor() that matches very closely
the specification at:

Also update the AudioWorkletNode constructor implementation as per:

Now that the AudioWorklet is able to register a processor and AudioParamDescriptors, the
AudioWorkletNode constructor is able to make sure that a processor with the given name was
indeed registered. We are also able to construct the AudioParam objects based on the
AudioParamDescriptors provided when registering the processor.

Note that even though it is now possible to register an AudioWorkletProcessor, it is still
not used to process the audio. An AudioWorkletNode currently only outputs silence. This will
be addresssed in a future patch.

No new tests, rebaselined existing tests.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/webaudio/AudioParam.h:
  • Modules/webaudio/AudioParam.idl:
  • Modules/webaudio/AudioParamDescriptor.h: Copied from Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.idl.

(WebCore::AudioParamDescriptor::isolatedCopy const):

  • Modules/webaudio/AudioParamDescriptor.idl: Copied from Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.idl.
  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::registerProcessor):

  • Modules/webaudio/AudioWorkletGlobalScope.h:
  • Modules/webaudio/AudioWorkletGlobalScope.idl:
  • Modules/webaudio/AudioWorkletMessagingProxy.cpp:

(WebCore::AudioWorkletMessagingProxy::AudioWorkletMessagingProxy):
(WebCore::AudioWorkletMessagingProxy::postTaskToAudioWorklet):

  • Modules/webaudio/AudioWorkletMessagingProxy.h:
  • Modules/webaudio/AudioWorkletNode.cpp:

(WebCore::AudioWorkletNode::create):

  • Modules/webaudio/AudioWorkletThread.h:

(WebCore::AudioWorkletThread::messagingProxy):

  • Modules/webaudio/AutomationRate.h: Copied from Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.idl.
  • Modules/webaudio/AutomationRate.idl: Copied from Source/WebCore/Modules/webaudio/AudioWorkletGlobalScope.idl.
  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::addAudioParamDescriptors):

  • Modules/webaudio/BaseAudioContext.h:

(WebCore::BaseAudioContext::parameterDescriptorMap const):

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
5:23 PM Changeset in webkit [268102] by Alan Coon
  • 9 edits in branches/safari-610-branch

Cherry-pick r267941. rdar://problem/70024420

Make sure MediaRecorder does not call fetchData until the last fetchData is completed
https://bugs.webkit.org/show_bug.cgi?id=217276

Reviewed by Darin Adler.

Source/WebCore:

When fetchData is called while an existing fetchData is inflight, enqueue the callback in a deque.
When the inflight fetchData completes, call the enqueued callbacks in order with a null blob.

Add ASSERT in MediaRecorderPrivateWriter to make sure we do not call requestMediaDataWhenReadyOnQueue too many times.

Covered by updated http/wpt/mediarecorder/MediaRecorder-dataavailable.html.

  • Modules/mediarecorder/MediaRecorder.cpp: (WebCore::MediaRecorder::stopRecording): (WebCore::MediaRecorder::requestData): Do not enable the timer if MediaRecorder is not active as a small optimization. (WebCore::MediaRecorder::fetchData):
  • Modules/mediarecorder/MediaRecorder.h:
  • platform/mediarecorder/MediaRecorderPrivateMock.cpp: (WebCore::MediaRecorderPrivateMock::fetchData):
  • platform/mediarecorder/MediaRecorderPrivateMock.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm: (WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers):

LayoutTests:

Add test to cover patch
Update some test expectations according bot results.

  • http/wpt/mediarecorder/MediaRecorder-dataavailable-expected.txt:
  • http/wpt/mediarecorder/MediaRecorder-dataavailable.html:
  • platform/mac/TestExpectations:

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

5:23 PM Changeset in webkit [268101] by Alan Coon
  • 3 edits in branches/safari-610-branch/LayoutTests

Cherry-pick r267836. rdar://problem/70024631

http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=217171
<rdar://problem/65085139>

Reviewed by Eric Carlson.

  • http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html: Setting the video currentTime too close to the end makes it render transparent frames. Make it so that we try using the middle of the video content where we expect green content.

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

5:23 PM Changeset in webkit [268100] by Alan Coon
  • 15 edits in branches/safari-610-branch

Cherry-pick r267833. rdar://problem/70024626

MediaRecorder should support MediaRecorderOptions.mimeType
https://bugs.webkit.org/show_bug.cgi?id=215018
<rdar://problem/66681508>

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/mediacapture-record/MediaRecorder-mimetype-expected.txt:

Source/WebCore:

Instead of setting mime type right away, set it just before firing start event as per spec.
This will allow in the future to populate exact codec parameters if proven useful.

Covered by rebased and updated tests.

  • Modules/mediarecorder/MediaRecorder.cpp: (WebCore::MediaRecorder::create): (WebCore::MediaRecorder::startRecording):
  • platform/mediarecorder/MediaRecorderPrivate.h: (WebCore::MediaRecorderPrivate::startRecording):
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:

Source/WebKit:

Update code to pass mimeType as part of startRecording callback.

  • GPUProcess/webrtc/RemoteMediaRecorder.h: (WebKit::RemoteMediaRecorder::mimeType const):
  • GPUProcess/webrtc/RemoteMediaRecorderManager.cpp: (WebKit::RemoteMediaRecorderManager::createRecorder):
  • GPUProcess/webrtc/RemoteMediaRecorderManager.h:
  • GPUProcess/webrtc/RemoteMediaRecorderManager.messages.in:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp: (WebKit::MediaRecorderPrivate::startRecording):
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:

LayoutTests:

Update test to expect setting of the mime type after start event.

  • http/wpt/mediarecorder/mimeType.html:

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

5:23 PM Changeset in webkit [268099] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC] FormattingContext::Geometry::contentHeightForFormattingContextRoot should take a const ContainerBox&
https://bugs.webkit.org/show_bug.cgi?id=217404

Reviewed by Simon Fraser.

A formatting context root is always a Layout::ContainerBox (and not just a Layout::Box).

  • layout/FormattingContext.h:
  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowNonReplacedHorizontalGeometry):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowVerticalGeometry const):
(WebCore::Layout::FormattingContext::Geometry::outOfFlowHorizontalGeometry):

  • layout/blockformatting/BlockFormattingContextGeometry.cpp:

(WebCore::Layout::BlockFormattingContext::Geometry::inFlowNonReplacedHeightAndMargin):

  • layout/layouttree/LayoutTreeBuilder.cpp:

(WebCore::Layout::TreeBuilder::createLayoutBox):

5:23 PM Changeset in webkit [268098] by Alan Coon
  • 5 edits in branches/safari-610-branch

Cherry-pick r267822. rdar://problem/70024621

MediaRecorder should allow setting low bit rates for audio
https://bugs.webkit.org/show_bug.cgi?id=216688
<rdar://problem/69129142>

Reviewed by Eric Carlson.

Source/WebCore:

When setting the bitrate provided by the web app fails, we now use default bit rate values that are expected to work properly.
Covered by updated tests.

  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.h:
  • platform/mediarecorder/cocoa/AudioSampleBufferCompressor.mm: (WebCore::AudioSampleBufferCompressor::setBitsPerSecond): (WebCore::AudioSampleBufferCompressor::defaultOutputBitRate const): (WebCore::AudioSampleBufferCompressor::initAudioConverterForSourceFormatDescription):

LayoutTests:

Add more bitrate tests.

  • http/wpt/mediarecorder/MediaRecorder-audio-bitrate.html:

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

5:21 PM Changeset in webkit [268097] by Chris Dumez
  • 4 edits in trunk

Reloading a view in its processTerminationHandler does not work reliably when using related views
https://bugs.webkit.org/show_bug.cgi?id=217407

Reviewed by Geoff Garen.

Source/WebKit:

Related web views share the same WebContent process. When this process crashes, we iterate over
the list of WebPageProxy objects sharing this process and let them know that their process has
crashed. This causes the WebPageProxy to reset its state (so that it is aware it no longer has
a running process) and to notify the client application. Because we were notifying the client
application synchronously, the client could trigger a load in the view synchronously while we
are still iterating over the WebPageProxy objects. When triggering a load in a web view that
has no running process, we normally relaunch one. However, in the case of related web views,
the view uses its related webview's process, relaunching it if necessary. The 'relaunching
if necessary' part was not reliably happening here because the related web view may not have
been notified yet that its WebProcess has crashed (since we are still iterating over the
pages to notify them).

To address the issue, we now notify the client asynchronously of the process termination.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::dispatchProcessDidTerminate):

Tools:

Add API test coverage.

  • TestWebKitAPI/Tests/WebKitCocoa/WebContentProcessDidTerminate.mm:

(-[NavigationDelegateWithCrashHandlerThatLoadsAgain _webView:webContentProcessDidTerminateWithReason:]):
(-[NavigationDelegateWithCrashHandlerThatLoadsAgain webView:didFinishNavigation:]):
(TEST):

5:19 PM Changeset in webkit [268096] by Alan Coon
  • 1 copy in tags/Safari-610.2.10

Tag Safari-610.2.10.

5:18 PM Changeset in webkit [268095] by Peng Liu
  • 6 edits in trunk

[Media in GPU Process] The seekable attribute of HTMLMediaElement has an incorrect value
https://bugs.webkit.org/show_bug.cgi?id=217410

Reviewed by Eric Carlson.

Source/WebKit:

Covered by existing tests.

  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::mediaPlayerReadyStateChanged):
Update the state variables related to the seekable attribute when the media player is ready.
(WebKit::RemoteMediaPlayerProxy::updateCachedState):
Add a missing state variable setting.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::seekable const): Deleted.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:

Instead of overriding seekable() here, we should use MediaPlayerPrivateInterface::seekable(),
which has the correct behavior.

LayoutTests:

  • gpu-process/TestExpectations:
5:16 PM Changeset in webkit [268094] by Alan Coon
  • 8 edits in branches/safari-610.2-branch/Source

Versioning.

WebKit-7610.2.10

5:15 PM Changeset in webkit [268093] by Karl Rackler
  • 3 edits in trunk/LayoutTests

REGRESSION (r267402): [ iOS Mojave+ Release ] imported/w3c/web-platform-tests/user-timing/measure-l3.any.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217414

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac/TestExpectations:
5:09 PM Changeset in webkit [268092] by Alan Coon
  • 26 edits
    2 adds in branches/safari-610-branch

Cherry-pick r267825. rdar://problem/70024248

MediaRecorder should support isTypeSupported
https://bugs.webkit.org/show_bug.cgi?id=216856
LayoutTests/imported/w3c:

Reviewed by Darin Adler.

  • web-platform-tests/mediacapture-record/MediaRecorder-mimetype-expected.txt:
  • web-platform-tests/mediacapture-record/MediaRecorder-peerconnection.https-expected.txt:
  • web-platform-tests/mediacapture-record/idlharness.window-expected.txt:
  • web-platform-tests/mediacapture-record/passthrough/MediaRecorder-passthrough.https-expected.txt:
  • web-platform-tests/mediacapture-record/passthrough/MediaRecorder-passthrough.https.html: Remove JS console log error line.

Source/WebCore:

<rdar://problem/69767695>

Reviewed by Darin Adler.

Introduce MediaRecorder::isMimeTypeSupported whose result is exposed as MediaRecoder.isTypeSupported.
Cocoa port allows mp4 audio and video mime types, with H264 and AAC codecs.
Add a routine to get the mime type from the MediaRecorderPrivate.
Store it in MediaRecorder and add a mimeType getter.

Test: http/wpt/mediarecorder/mimeType.html

  • Modules/mediarecorder/MediaRecorder.cpp: (WebCore::MediaRecorder::isTypeSupported): (WebCore::MediaRecorder::create):
  • Modules/mediarecorder/MediaRecorder.h:
  • Modules/mediarecorder/MediaRecorder.idl:
  • Modules/mediarecorder/MediaRecorderProvider.cpp: (WebCore::MediaRecorderProvider::isSupported):
  • Modules/mediarecorder/MediaRecorderProvider.h:
  • platform/mediarecorder/MediaRecorderPrivate.h:
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp: (WebCore::MediaRecorderPrivateAVFImpl::mimeType const):
  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:
  • platform/mediarecorder/MediaRecorderPrivateMock.cpp: (WebCore::MediaRecorderPrivateMock::mimeType const):
  • platform/mediarecorder/MediaRecorderPrivateMock.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm: (WebCore::MediaRecorderPrivateWriter::mimeType const):
  • platform/mediastream/MediaStreamPrivate.h:

Source/WebKit:

<rdar://problem/69767695>

Reviewed by Darin Adler.

Stop passing mimeType for each data blob.
Instead, compute it on WebProcess side.

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp: (WebKit::RemoteMediaRecorder::fetchData):
  • GPUProcess/webrtc/RemoteMediaRecorder.h:
  • GPUProcess/webrtc/RemoteMediaRecorder.messages.in:
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp: (WebKit::MediaRecorderPrivate::MediaRecorderPrivate): (WebKit::MediaRecorderPrivate::fetchData): (WebKit::MediaRecorderPrivate::mimeType const):
  • WebProcess/GPU/webrtc/MediaRecorderPrivate.h:

LayoutTests:

Reviewed by Darin Adler.

  • http/wpt/mediarecorder/mimeType-expected.txt: Added.
  • http/wpt/mediarecorder/mimeType.html: Added.

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

5:09 PM Changeset in webkit [268091] by Alan Coon
  • 3 edits in branches/safari-610-branch/Source/WebCore

Cherry-pick r267828. rdar://problem/70023908

[iOS] MediaRecorder incorrect screen orientation handling
https://bugs.webkit.org/show_bug.cgi?id=198912
<rdar://problem/51802521>

Reviewed by Eric Carlson.

We were setting the transform to the writer input too soon.
Buffer the transform when receiving the first frame and set it at creation of the writer input.

Covered by http/wpt/mediarecorder/video-rotation.html now actually passing.

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm: (WebCore::MediaRecorderPrivateWriter::startAssetWriter): (WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):

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

5:09 PM Changeset in webkit [268090] by Alan Coon
  • 3 edits in branches/safari-610-branch/Source/WebCore

Cherry-pick r267521. rdar://problem/70023915

REGRESSION (iOS/Safari 14): MediaRecorder produces invalid video files
https://bugs.webkit.org/show_bug.cgi?id=216832
<rdar://problem/69377550>

Reviewed by Eric Carlson.

Start the audio and video timestamps at zero.
Compute the audio timestamp based on the sample count and the video timestamp based
on the time at which the video sample is received.

Covered by manually testing Safari generated videos on VLC, Chrome and Firefox.

  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm: (WebCore::MediaRecorderPrivateWriter::initialize): (WebCore::MediaRecorderPrivateWriter::startAssetWriter): (WebCore::copySampleBufferWithCurrentTimeStamp): (WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer): (WebCore::createAudioSampleBuffer): (WebCore::MediaRecorderPrivateWriter::appendAudioSampleBuffer):

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

5:09 PM Changeset in webkit [268089] by Alan Coon
  • 7 edits
    2 adds in branches/safari-610-branch

Cherry-pick r267366. rdar://problem/70023908

[iOS] MediaRecorder incorrect screen orientation handling
https://bugs.webkit.org/show_bug.cgi?id=198912
<rdar://problem/51802521>

Reviewed by Eric Carlson.

Source/WebCore:

Update MediaRecorderPrivateWriterCocoa to pass a MediaSample down to handle rotation.
Set AVAssetWriterInput transform according the first MediaSample rotation value.

Test: http/wpt/mediarecorder/video-rotation.html

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp: (WebCore::MediaRecorderPrivateAVFImpl::videoSampleAvailable):
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm: (WebCore::MediaRecorderPrivateWriter::appendVideoSampleBuffer):

Source/WebKit:

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp: (WebKit::RemoteMediaRecorder::videoSampleAvailable):

LayoutTests:

  • http/wpt/mediarecorder/video-rotation-expected.txt: Added.
  • http/wpt/mediarecorder/video-rotation.html: Added.

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

5:09 PM Changeset in webkit [268088] by Alan Coon
  • 28 edits
    5 adds in branches/safari-610-branch

Apply patch. rdar://70023523

5:03 PM Changeset in webkit [268087] by Alan Coon
  • 1 copy in branches/safari-610.2-branch

New branch.

4:44 PM Changeset in webkit [268086] by Devin Rousso
  • 42 edits
    2 copies
    6 adds in trunk

CSS hover and "pointer: fine" media queries do not evaluate to true with iOS 13.4 mouse support
https://bugs.webkit.org/show_bug.cgi?id=209292
<rdar://problem/60663124>

Reviewed by Tim Horton.

Source/WebCore:

On iOS, the primary pointer will always be touch input, so the hover/pointer media query
should never change. If a mouse is connected, however, any-hover/any-pointer should
change as now there is at least one device that supports hover/fine. Note that in the
case of any-pointer this means that both coarse and fine will apply. Catalyst assumes
that there is always a mouse connected.

Spec: https://drafts.csswg.org/mediaqueries-4/#any-input

  • css/MediaQueryEvaluator.cpp:

(WebCore::anyHoverEvaluate):
(WebCore::anyPointerEvaluate):

  • page/ChromeClient.h:
  • loader/EmptyClients.h:

(WebCore::EmptyChromeClient::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebCore::EmptyChromeClient::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
Provide a way for WebCore to get the current state of whether there are any mouse devices.
Refactor logic in anyHoverEvaluate and anyPointerEvaluate to move platform code into the
respective WebKit::WebPage file.

  • page/PointerCharacteristics.h: Added.

Enum for Coarse and Fine.

  • platform/PlatformScreen.h:

Export additional functions for use in WebKit.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

On iOS, the primary pointer will always be touch input, so the hover/pointer media query
should never change. If a mouse is connected, however, any-hover/any-pointer should
change as now there is at least one device that supports hover/fine. Note that in the
case of any-pointer this means that both coarse and fine will apply. Catalyst assumes
that there is always a mouse connected.

Spec: https://drafts.csswg.org/mediaqueries-4/#any-input

  • UIProcess/ios/WKMouseDeviceObserver.h: Added.
  • UIProcess/ios/WKMouseDeviceObserver.mm: Added.

(+[WKMouseDeviceObserver sharedInstance]):
(-[WKMouseDeviceObserver dealloc]):
(-[WKMouseDeviceObserver start]):
(-[WKMouseDeviceObserver stop]):
(-[WKMouseDeviceObserver mousePointerDevicesDidChange:]):
(-[WKMouseDeviceObserver _setHasMouseDeviceForTesting:]):
Use BackBoardServices to listen for mouse devices changes and notify all WebProcess.

  • UIProcess/WebProcessProxy.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::WebProcessProxy):
(WebKit::WebProcessProxy::platformInitialize): Added.
(WebKit::WebProcessProxy::~WebProcessProxy):
(WebKit::WebProcessProxy::platformDestroy): Added.

  • UIProcess/ios/WebProcessProxyIOS.mm:

(WebKit::WebProcessProxy::platformInitialize): Added.
(WebKit::WebProcessProxy::platformDestroy): Added.
(WebKit::WebProcessProxy::notifyHasMouseDeviceChanged): Added.
Tell the shared WKMouseDeviceObserver to start listening for mouse device changes when
creating the WebProcess so that the shared WKMouseDeviceObserver knows to notify all
instances when mouse devices change. Make allProcesses into a private static member
function so that it can also be used in UIProcess/ios/WebProcessProxyIOS.mm.

  • Shared/WebProcessCreationParameters.h:
  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):
Use the current state of the shared WKMouseDeviceObserver when creating WebProcess instead
of sending a SetHasMouseDevice message immediately after the WebProcess is created.

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

(WebKit::WebProcess::hasMouseDevice const): Added.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::setHasMouseDevice): Added.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):
Update style (including any-hover and any-pointer) whenever mouse devices change.

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebKit::WebChromeClient::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/gtk/WebPageGtk.cpp:

(WebKit::WebPage::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::hasMouseDevice): Added.
(WebKit::WebPage::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.

  • WebProcess/WebPage/playstation/WebPagePlayStation.cpp:

(WebKit::WebPage::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.

  • WebProcess/WebPage/win/WebPageWin.cpp:

(WebKit::WebPage::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.

  • WebProcess/WebPage/wpe/WebPageWPE.cpp:

(WebKit::WebPage::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebKit::WebPage::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
Provide a way for WebCore to get the current state of whether there are any mouse devices.
Refactor logic in WebCore::anyHoverEvaluate and WebCore::anyPointerEvaluate to move
platform code into the respective WebPage file.

  • Configurations/WebKit.xcconfig:
  • Platform/spi/ios/BackBoardServicesSPI.h:
  • Platform/spi/ios/BaseBoardSPI.h: Added.
  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:

Source/WebKitLegacy/ios:

  • WebCoreSupport/WebChromeClientIOS.h:

(WebChromeClientIOS::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebChromeClientIOS::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
Mouse devices are not supported.

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebChromeClient.h:

(WebChromeClient::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebChromeClient::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
Mouse devices are always supported.

Source/WebKitLegacy/win:

  • WebCoreSupport/WebChromeClient.h:

(WebChromeClient::hoverSupportedByAnyAvailablePointingDevice const): Added.
(WebChromeClient::pointerCharacteristicsOfAllAvailablePointingDevices const): Added.
Mouse devices are always supported.

Tools:

  • TestWebKitAPI/cocoa/TestWKWebView.h:
  • TestWebKitAPI/cocoa/TestWKWebView.mm:

(-[TestWKWebView evaluateMediaQuery:]): Added.
Create helper function for synchronously testing media queries.

  • TestWebKitAPI/Tests/WebKitCocoa/iOSMouseSupport.mm:

(iOSMouseSupport.MouseInitiallyDisconnected): Added.
(iOSMouseSupport.MouseInitiallyConnected): Added.
(iOSMouseSupport.MouseLaterDisconnected): Added.
(iOSMouseSupport.MouseLaterConnected): Added.
(iOSMouseSupport.MouseAlwaysConnected): Added.

WebKitLibraries:

  • WebKitPrivateFrameworkStubs/iOS/13/BackBoardServices.framework/BackBoardServices.tbd: Added.
  • WebKitPrivateFrameworkStubs/iOS/14/BackBoardServices.framework/BackBoardServices.tbd: Added.

Use BackBoardServices to listen for mouse devices changes.

4:23 PM Changeset in webkit [268085] by James Darpinian
  • 15 edits
    10 adds in trunk

Support EXT_texture_compression_rgtc WebGL extension
https://bugs.webkit.org/show_bug.cgi?id=217198

Reviewed by Kenneth Russell.

Source/WebCore:

Test: webgl/conformance/extensions/ext-texture-compression-rgtc.html

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMConvertWebGL.cpp:

(WebCore::convertToJSValue):

  • html/canvas/EXTTextureCompressionRGTC.cpp: Added.

(WebCore::EXTTextureCompressionRGTC::EXTTextureCompressionRGTC):
(WebCore::EXTTextureCompressionRGTC::getName const):

  • html/canvas/EXTTextureCompressionRGTC.h: Added.
  • html/canvas/EXTTextureCompressionRGTC.idl: Added.
  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::getExtension):
(WebCore::WebGL2RenderingContext::getSupportedExtensions):

  • html/canvas/WebGLExtension.h:
  • html/canvas/WebGLRenderingContext.cpp:

(WebCore::WebGLRenderingContext::getExtension):
(WebCore::WebGLRenderingContext::getSupportedExtensions):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::extensionIsEnabled):
(WebCore::WebGLRenderingContextBase::validateCompressedTexFuncData):
(WebCore::WebGLRenderingContextBase::loseExtensions):

  • html/canvas/WebGLRenderingContextBase.h:
  • platform/graphics/ExtensionsGL.h:

LayoutTests:

  • webgl/conformance/extensions/ext-texture-compression-rgtc-expected.txt: Added.
  • webgl/conformance/extensions/ext-texture-compression-rgtc.html: Added.
  • webgl/conformance/extensions/s3tc-and-rgtc-expected.txt: Added.
  • webgl/conformance/extensions/s3tc-and-rgtc.html: Added.
  • webgl/resources/webgl_test_files/conformance/extensions/ext-texture-compression-rgtc.html: Added.
  • webgl/resources/webgl_test_files/conformance/extensions/s3tc-and-rgtc.html: Added.
  • webgl/resources/webgl_test_files/js/tests/compressed-texture-utils.js: Added.
4:21 PM Changeset in webkit [268084] by Chris Fleizach
  • 2 edits in trunk/Source/WebCore

AX: Expose lineRangeForPosition for iOS Accessibility code
https://bugs.webkit.org/show_bug.cgi?id=217256
<rdar://problem/67478962>

Reviewed by Zalan Bujtas.

Expose the existing lineRangeForPosition method for iOS accessibility.

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper lineMarkersForMarker:]):

4:16 PM Changeset in webkit [268083] by Hector Lopez
  • 2 edits in trunk/LayoutTests

Adjust test expectation to include Release queue failure after change to iOS 14
https://bugs.webkit.org/show_bug.cgi?id=214731

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
3:59 PM Changeset in webkit [268082] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][BFC] Move document box special height computation out of contentHeightForFormattingContextRoot
https://bugs.webkit.org/show_bug.cgi?id=217402

Reviewed by Simon Fraser.

Document box (<html>) is not a formatting context root and while its content height computation is very similar to
BFC root height computation, it should not pollute the generic contentHeightForFormattingContextRoot code.

  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):
(WebCore::Layout::FormattingContext::Geometry::complicatedCases const):

3:54 PM Changeset in webkit [268081] by Hector Lopez
  • 2 edits in trunk/LayoutTests

REGRESSION(iOS 14): http/wpt/cache-storage/cache-quota.any.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217412

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
3:47 PM Changeset in webkit [268080] by Jonathan Bedard
  • 17 edits in trunk/Tools

[webkitscmpy] Generate Commit object from local repository
https://bugs.webkit.org/show_bug.cgi?id=216404
<rdar://problem/68702897>

Reviewed by Dewei Zhu.

  • Scripts/libraries/webkitcorepy/webkitcorepy/init.py: Bump version.
  • Scripts/libraries/webkitcorepy/webkitcorepy/decorators.py:

(Memoize.call.decorator): Handle case where function arguments are different.

  • Scripts/libraries/webkitcorepy/webkitcorepy/mocks/popen.py:

(PopenBase.poll): Reset stdout and stderr after calling the completion handler.

  • Scripts/libraries/webkitcorepy/webkitcorepy/tests/decorators_unittest.py:

(TestMemoize.test_conflicting_args):

  • Scripts/libraries/webkitscmpy/webkitscmpy/init.py: Bump version.
  • Scripts/libraries/webkitscmpy/webkitscmpy/contributor.py:

(Contributor): Number of lines may be singular.

  • Scripts/libraries/webkitscmpy/webkitscmpy/local/git.py:

(Git):
(Git.init): Caller may wish to specify the patterns for production and development branches.
(Git.branches): Call the more general _branches_for to unify remote stripping logic.
(Git._commit_count): Given a parameter (hash, branch, difference between default branch and commit), compute
the number of commits.
(Git._branches_for): Given a hash, return all branches the commit is part of.
(Git.commit): Construct a commit given a commit hash, revision, identifier or branch.

  • Scripts/libraries/webkitscmpy/webkitscmpy/local/scm.py:

(Scm):
(Scm.init): Caller may wish to specify the patterns for production and development branches.
(Scm.commit): Construct a commit given a commit hash, revision, identifier or branch.
(Scm.prioritize_branches): Given a set of branches, pick the highest priority one.
(Scm.log): Log error to a configured logger or stderr.

  • Scripts/libraries/webkitscmpy/webkitscmpy/local/svn.py:

(Svn):
(Svn.init): Caller may wish to specify the patterns for production and development branches.
(Svn.info): Allow info for a specific commit to be queried.
(Svn._cache_path): Path to json cache of branch-commit mapping.
(Svn._cache_revisions): Query the remote for a specific branch to get the list of all commits on that branch.
(Svn._commit_count): Given a revision or branch, compute the number of commits.
(Svn._branch_for): Given a revision, use local data to determine the most likely branch before asking the remote which branch
a commit is on.
(Svn.commit): Construct a commit given a commit hash, revision, identifier or branch.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/git.py:

(Git): Add commands needed to construct an identifier, add mock commits.

  • Scripts/libraries/webkitscmpy/webkitscmpy/mocks/local/svn.py:

(Svn): Add commands needed to construct an identifier, add mock commits.

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/contributor_unittest.py:

(TestContributor.test_short_svn_log):

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/git_unittest.py:

(TestGit):

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/scm_unittest.py:

(TestScm.test_remote):
(TestScm):

  • Scripts/libraries/webkitscmpy/webkitscmpy/test/svn_unittest.py:

(TestSvn):

3:29 PM Changeset in webkit [268079] by Alan Coon
  • 1 copy in tags/Safari-610.2.9

Tag Safari-610.2.9.

3:20 PM Changeset in webkit [268078] by Hector Lopez
  • 2 edits in trunk/LayoutTests

REGRESSION(iOS 14): http/tests/cache-storage/page-cache-domcache-pending-promise.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217408

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
3:04 PM Changeset in webkit [268077] by ysuzuki@apple.com
  • 26 edits in trunk/Source/JavaScriptCore

[JSC] More consistent PtrTagging for code types
https://bugs.webkit.org/show_bug.cgi?id=217362

Reviewed by Mark Lam.

  1. Avoid tagging JIT code with OperationPtrTag. OperationPtrTag should be used only for operations (C++ code).
  2. Avoid mixing JIT and C++ code for the same tagged pointers. For exception trampoline, in JIT mode, we should have JIT trampoline thunk which goes to LLInt bytecode handler code.
  • bytecode/BytecodeList.rb:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::finalizeUnconditionally):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::compileExceptionHandlers):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileMathIC):

  • jit/ICStats.h:
  • jit/JIT.cpp:

(JSC::JIT::compileWithoutLinking):
(JSC::JIT::link):
(JSC::JIT::privateCompileExceptionHandlers):

  • jit/JIT.h:

(JSC::CallRecord::CallRecord):

  • jit/JITCall.cpp:

(JSC::JIT::compileTailCall):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):

  • jit/JITExceptions.cpp:

(JSC::genericUnwind):

  • jit/JITInlines.h:

(JSC::JIT::emitNakedNearCall):
(JSC::JIT::emitNakedNearTailCall):
(JSC::JIT::emitNakedCall): Deleted.
(JSC::JIT::emitNakedTailCall): Deleted.

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::privateCompilePutByVal):
(JSC::JIT::privateCompilePutPrivateNameWithCachedId):
(JSC::JIT::privateCompilePutByValWithCachedId):

  • jit/SlowPathCall.h:

(JSC::JITSlowPathCall::call):

  • llint/LLIntData.h:

(JSC::LLInt::getWide16CodeRef):
(JSC::LLInt::getWide32CodeRef):
(JSC::LLInt::getCodeFunctionPtr):
(JSC::LLInt::getWide16CodeFunctionPtr):
(JSC::LLInt::getWide32CodeFunctionPtr):

  • llint/LLIntEntrypoint.cpp:

(JSC::LLInt::setFunctionEntrypoint):
(JSC::LLInt::setEvalEntrypoint):
(JSC::LLInt::setProgramEntrypoint):
(JSC::LLInt::setModuleProgramEntrypoint):

  • llint/LLIntExceptions.cpp:

(JSC::LLInt::callToThrow):
(JSC::LLInt::handleUncaughtException):
(JSC::LLInt::catcher):

  • llint/LLIntExceptions.h:
  • llint/LLIntSlowPaths.cpp:
  • llint/LLIntThunks.cpp:

(JSC::LLInt::generateThunkWithJumpTo):
(JSC::LLInt::functionForCallEntryThunk):
(JSC::LLInt::functionForConstructEntryThunk):
(JSC::LLInt::functionForCallArityCheckThunk):
(JSC::LLInt::functionForConstructArityCheckThunk):
(JSC::LLInt::evalEntryThunk):
(JSC::LLInt::programEntryThunk):
(JSC::LLInt::moduleProgramEntryThunk):
(JSC::LLInt::wasmFunctionEntryThunk):
(JSC::LLInt::callToThrowThunk):
(JSC::LLInt::handleUncaughtExceptionThunk):
(JSC::LLInt::catcherThunk):

  • llint/LLIntThunks.h:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::processUnverifiedStackTraces):

  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

2:53 PM Changeset in webkit [268076] by Chris Dumez
  • 12 edits in trunk/Source/WebCore

Add implementation for AudioWorkletGlobalScope's currentFrame / currentTime / sampleRate attributes
https://bugs.webkit.org/show_bug.cgi?id=217251

Reviewed by Geoffrey Garen.

Add implementation for AudioWorkletGlobalScope's currentFrame / currentTime / sampleRate attributes.
The AudioContext's sample rate is passed upon constructor since it does not change once the AudioContext
has been created. The current sample frame gets updated directly by the AudioDestinationNode on the
audio rendering thread, whenever the AudioAudioDestinationNode updates the current frame.
The currrentTime gets computed based on the current frame and the sample rate.

No new tests, no Web-facing behavior yet because we are not yet executing module scripts in
AudioWorklets.

  • Modules/webaudio/AudioDestinationNode.cpp:

(WebCore::AudioDestinationNode::render):

  • Modules/webaudio/AudioWorklet.cpp:

(WebCore::AudioWorklet::create):
(WebCore::AudioWorklet::AudioWorklet):

  • Modules/webaudio/AudioWorklet.h:
  • Modules/webaudio/AudioWorkletGlobalScope.cpp:

(WebCore::AudioWorkletGlobalScope::AudioWorkletGlobalScope):

  • Modules/webaudio/AudioWorkletGlobalScope.h:

(WebCore::AudioWorkletGlobalScope::setCurrentFrame):
(WebCore::AudioWorkletGlobalScope::currentFrame const):
(WebCore::AudioWorkletGlobalScope::sampleRate const):
(WebCore::AudioWorkletGlobalScope::currentTime const):

  • Modules/webaudio/AudioWorkletMessagingProxy.cpp:

(WebCore::generateWorkletParameters):

  • Modules/webaudio/AudioWorkletMessagingProxy.h:

(WebCore::AudioWorkletMessagingProxy::workletThread):

  • Modules/webaudio/AudioWorkletThread.h:

(WebCore::AudioWorkletThread::globalScope const):

  • Modules/webaudio/BaseAudioContext.cpp:

(WebCore::BaseAudioContext::BaseAudioContext):

  • Modules/webaudio/BaseAudioContext.h:
  • worklets/WorkletParameters.h:

(WebCore::WorkletParameters::isolatedCopy const):

2:33 PM Changeset in webkit [268075] by Simon Fraser
  • 31 edits in trunk/Source

Redundant rendering updates can be scheduled from inside Page::updateRendering()
https://bugs.webkit.org/show_bug.cgi?id=216726

Reviewed by Tim Horton.

Source/WebCore:

The basic model for scheduling rendering updates is that code that needs to trigger an
update just calls Page::schedule[Timed]RenderingUpdate(). However, if
Page::updateRendering() is already on the stack, and the work to be scheduled will happen
later in the current update, we don't have to schedule a new one.

To fix this Page::updateRendering() and related functions track which steps remain
in the current update, and callers of schedule[Timed]RenderingUpdate() pass the update steps
for the work they need to trigger. If the requested steps are included in the remaining steps
no new update needs to be scheduled. Note that requesting a step while that step is being executed
has to schedule an upate (e.g. requestAnimationFrame inside its own callback has to schedule).

At the end of an update, if there are any unfulfilled steps, then we schedule a new update.

Add a log channel for EventLoop and and log from various places.

In my brief testing, this reduces the number of calls to Page::updateRendering() by 10-25%
on some real pages, which could be a significant power saving.

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::scheduleAnimationResolution):

  • display/DisplayLayerController.cpp:

(WebCore::Display::LayerController::scheduleRenderingUpdate):

  • dom/Document.cpp:

(WebCore::Document::setNeedsDOMWindowResizeEvent):
(WebCore::Document::setNeedsVisualViewportResize):
(WebCore::Document::addPendingScrollEventTarget):
(WebCore::Document::setNeedsVisualViewportScrollEvent):
(WebCore::Document::serviceRequestAnimationFrameCallbacks):
(WebCore::Document::intersectionObserversInitialUpdateTimerFired):
(WebCore::Document::scheduleRenderingUpdate):
(WebCore::Document::scheduleInitialIntersectionObservationUpdate):
(WebCore::Document::updateResizeObservations):
(WebCore::Document::updateAnimationsAndSendEvents):

  • dom/Document.h:
  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::scheduleAnimation):

  • page/EventHandler.cpp:

(WebCore::EventHandler::scheduleCursorUpdate):

  • page/FrameView.cpp:

(WebCore::FrameView::setViewExposedRect):

  • page/Page.cpp:

(WebCore::Page::updateStyleAfterChangeInEnvironment):
(WebCore::Page::scheduleRenderingUpdate):
(WebCore::Page::computeUnfulfilledRenderingSteps):
(WebCore::Page::triggerRenderingUpdateForTesting):
(WebCore::Page::updateRendering):
(WebCore::Page::isolatedUpdateRendering):
(WebCore::Page::doAfterUpdateRendering):
(WebCore::Page::finalizeRenderingUpdate):
(WebCore::Page::renderingUpdateCompleted):
(WebCore::Page::accessibilitySettingsDidChange):
(WebCore::Page::appearanceDidChange):
(WebCore::operator<<):

  • page/Page.h:
  • page/PageOverlayController.cpp:

(WebCore::PageOverlayController::didChangeViewExposedRect):
(WebCore::PageOverlayController::notifyFlushRequired):

  • page/RenderingUpdateScheduler.cpp:

(WebCore::RenderingUpdateScheduler::scheduleAnimation):
(WebCore::RenderingUpdateScheduler::scheduleRenderingUpdate):
(WebCore::RenderingUpdateScheduler::startTimer):
(WebCore::RenderingUpdateScheduler::displayRefreshFired):

  • page/RenderingUpdateScheduler.h:
  • page/ResizeObserver.cpp:

(WebCore::ResizeObserver::observe):

  • page/WheelEventTestMonitor.cpp:

(WebCore::WheelEventTestMonitor::setTestCallbackAndStartMonitoring):
(WebCore::WheelEventTestMonitor::scheduleCallbackCheck):

  • page/mac/ServicesOverlayController.mm:

(WebCore::ServicesOverlayController::Highlight::notifyFlushRequired):

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::setEventTrackingRegionsDirty):

  • page/scrolling/mac/ScrollingCoordinatorMac.mm:

(WebCore::ScrollingCoordinatorMac::scheduleTreeStateCommit):

  • platform/Logging.cpp:

(WebCore::initializeLogChannelsIfNecessary):

  • platform/Logging.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::scheduleRenderingUpdateForImage):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::notifyFlushRequired):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::scheduleRenderingUpdate):

  • rendering/RenderLayerCompositor.h:

Source/WebKit:

Schedule for layer flush.

  • WebProcess/WebPage/CoordinatedGraphics/LayerTreeHostTextureMapper.cpp:

(WebKit::LayerTreeHost::layerFlushTimerFired):

Source/WebKitLegacy/mac:

Provide the flags.

  • WebView/WebView.mm:

(-[WebView _scheduleRenderingUpdateForPendingTileCacheRepaint]):

Source/WTF:

Make it possible to dump Vectors with inline capacity.

  • wtf/text/TextStream.h:

(WTF::operator<<):

2:21 PM Changeset in webkit [268074] by achristensen@apple.com
  • 11 edits in trunk/Source/WebKit

Use sendWithAsyncReply to evaluate JavaScript in a WebPage
https://bugs.webkit.org/show_bug.cgi?id=217351

Reviewed by Youenn Fablet.

No change in meaningful behavior, but complexity is removed.

  • UIProcess/API/C/WKPage.cpp:

(WKPageRunJavaScriptInMainFrame):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _evaluateJavaScript:asAsyncFunction:withSourceURL:withArguments:forceUserGesture:inFrame:inWorld:completionHandler:]):
(-[WKWebView takeSnapshotWithConfiguration:completionHandler:]):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::runJavaScriptInMainFrame):
(WebKit::WebPageProxy::runJavaScriptInFrameInScriptWorld):
(WebKit::WebPageProxy::scriptValueCallback): Deleted.

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

(WebKit::WebPage::runJavaScript):
(WebKit::WebPage::runJavaScriptInFrameInScriptWorld):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
2:18 PM Changeset in webkit [268073] by Alan Coon
  • 8 edits in branches/safari-610-branch/Source

Versioning.

WebKit-7610.3.1

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

[Cocoa] The WebContent development XPC service is not allowed to connect to the XPC endpoint in the Networking process
https://bugs.webkit.org/show_bug.cgi?id=217389
<rdar://problem/68585497>

Reviewed by Brent Fulgham.

The WebContent development XPC service is not allowed to connect to the XPC endpoint in the Networking process,
because this requires a private entitlement. The WebContent development XPC service is not allowed to have private
entitlements. The WebContent process needs to connect to the XPC endpoint in the Networking process in order to
receive the Launch Services database XPC object. This patch addresses this issue by allowing platform binaries
to connect to the XPC endpoint.

  • Shared/Cocoa/XPCEndpoint.mm:

(WebKit::XPCEndpoint::XPCEndpoint):

1:51 PM Changeset in webkit [268071] by aakash_jain@apple.com
  • 4 edits in trunk/Tools

[build.webkit.org] Ensure that steps names are valid Buildbot identifiers
https://bugs.webkit.org/show_bug.cgi?id=217394

Reviewed by Jonathan Bedard.

  • BuildSlaveSupport/build.webkit.org-config/steps.py: Removed spaces from step names.

(ConfigureBuild):
(KillOldProcesses):
(CleanBuildIfScheduled):
(DeleteStaleBuildFiles):
(RunGLibAPITests):

  • BuildSlaveSupport/build.webkit.org-config/steps_unittest.py: Updated unit-tests.
  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotIteration.js:
1:37 PM Changeset in webkit [268070] by Wenson Hsieh
  • 28 edits
    1 move in trunk/Source

Rename MediaPlayerPrivateRemoteIdentifier to MediaPlayerIdentifier
https://bugs.webkit.org/show_bug.cgi?id=217397

Reviewed by Tim Horton.

Source/WebCore:

Move MediaPlayerPrivateRemoteIdentifier into WebCore, and rename it to MediaPlayerIdentifier, such that it
isn't necessarily limited to use for GPU Process code. This is preparation for introducing a display list
drawing item which will need to reference a remotely hosted MediaPlayer.

No change in behavior.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::identifier const):

  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerIdentifier.h: Renamed from Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemoteIdentifier.h.
  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::identifier const):

Source/WebKit:

Mass rename MediaPlayerPrivateRemoteIdentifier to WebCore::MediaPlayerIdentifier. See WebCore/ChangeLog for
more details.

  • GPUProcess/media/RemoteLegacyCDMFactoryProxy.cpp:

(WebKit::RemoteLegacyCDMFactoryProxy::createCDM):

  • GPUProcess/media/RemoteLegacyCDMFactoryProxy.h:
  • GPUProcess/media/RemoteLegacyCDMFactoryProxy.messages.in:
  • GPUProcess/media/RemoteLegacyCDMProxy.cpp:

(WebKit::RemoteLegacyCDMProxy::create):
(WebKit::RemoteLegacyCDMProxy::RemoteLegacyCDMProxy):
(WebKit::RemoteLegacyCDMProxy::setPlayerId):

  • GPUProcess/media/RemoteLegacyCDMProxy.h:
  • GPUProcess/media/RemoteLegacyCDMProxy.messages.in:
  • GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:

(WebKit::RemoteMediaPlayerManagerProxy::createMediaPlayer):
(WebKit::RemoteMediaPlayerManagerProxy::deleteMediaPlayer):
(WebKit::RemoteMediaPlayerManagerProxy::didReceivePlayerMessage):
(WebKit::RemoteMediaPlayerManagerProxy::didReceiveSyncPlayerMessage):
(WebKit::RemoteMediaPlayerManagerProxy::getProxy):

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:
  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::RemoteMediaPlayerProxy):

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • Scripts/webkit/messages.py:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote):
(WebKit::MediaPlayerPrivateRemote::identifier const):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/RemoteLegacyCDM.cpp:

(WebKit::RemoteLegacyCDM::setPlayerId):

  • WebProcess/GPU/media/RemoteLegacyCDM.h:
  • WebProcess/GPU/media/RemoteLegacyCDMFactory.cpp:

(WebKit::RemoteLegacyCDMFactory::createCDM):

  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:

(WebKit::RemoteMediaPlayerManager::createRemoteMediaPlayer):
(WebKit::RemoteMediaPlayerManager::deleteRemoteMediaPlayer):
(WebKit::RemoteMediaPlayerManager::findRemotePlayerId):
(WebKit::RemoteMediaPlayerManager::didReceivePlayerMessage):

  • WebProcess/GPU/media/RemoteMediaPlayerManager.h:
  • WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:

(WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote):

1:29 PM Changeset in webkit [268069] by Peng Liu
  • 2 edits in trunk/LayoutTests

[Media in GPU Process] Enable some layout tests

Unreviewed test gardening.

  • gpu-process/TestExpectations:
1:14 PM Changeset in webkit [268068] by Russell Epstein
  • 2 edits in branches/safari-610.2.8.1-branch/Source/WebKit

Cherry-pick r268019. rdar://problem/70012479

Change a PDF RELEASE_ASSERT to an early return.
rdar://problem/69805240 and https://bugs.webkit.org/show_bug.cgi?id=217346

Reviewed by Tim Horton.

No new tests (Wish they were possible)

  • WebProcess/Plugins/PDF/PDFPlugin.mm: (WebKit::PDFPlugin::installPDFDocument): This release assert is getting hit regularly. Change to an early return while we continue tracking this down.

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

1:11 PM Changeset in webkit [268067] by Russell Epstein
  • 8 edits in branches/safari-610.2.8.1-branch/Source

Versioning.

WebKit-7610.2.8.1.1

12:58 PM Changeset in webkit [268066] by Russell Epstein
  • 1 copy in branches/safari-610.2.8.1-branch

New branch.

12:39 PM Changeset in webkit [268065] by achristensen@apple.com
  • 13 edits
    2 adds
    2 deletes in trunk/Source/WebKit

Move ownership of DownloadClient from WebProcessPool to DownloadProxy
https://bugs.webkit.org/show_bug.cgi?id=217399

Reviewed by Tim Horton.

To keep binary compatibility, the WebProcessPool has a nullable DownloadClient that is used if it has been set.
This will allow us to get a DownloadClient from elsewhere, such as having the API Download object have its own delegate
or having the WKWebsiteDataStore have a delegate, which are two of the solutions I've considered. We definitely don't
want it on the WebProcessPool, though.

  • SourcesCocoa.txt:
  • UIProcess/API/APIDownloadClient.h:
  • UIProcess/API/C/WKContext.cpp:

(WKContextSetDownloadClient):

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _setDownloadDelegate:]):

  • UIProcess/API/glib/WebKitDownloadClient.cpp:

(attachDownloadClientToContext):

  • UIProcess/API/glib/WebKitWebContext.cpp:

(webkitWebContextDispose):

  • UIProcess/Cocoa/LegacyDownloadClient.h: Renamed from Source/WebKit/UIProcess/Cocoa/DownloadClient.h.
  • UIProcess/Cocoa/LegacyDownloadClient.mm: Renamed from Source/WebKit/UIProcess/Cocoa/DownloadClient.mm.

(WebKit::LegacyDownloadClient::LegacyDownloadClient):
(WebKit::LegacyDownloadClient::didStart):
(WebKit::LegacyDownloadClient::didReceiveResponse):
(WebKit::LegacyDownloadClient::didReceiveData):
(WebKit::LegacyDownloadClient::didReceiveAuthenticationChallenge):
(WebKit::LegacyDownloadClient::didCreateDestination):
(WebKit::LegacyDownloadClient::processDidCrash):
(WebKit::LegacyDownloadClient::decideDestinationWithSuggestedFilename):
(WebKit::LegacyDownloadClient::didFinish):
(WebKit::LegacyDownloadClient::didFail):
(WebKit::LegacyDownloadClient::didCancel):
(WebKit::LegacyDownloadClient::willSendRequest):
(WebKit::LegacyDownloadClient::takeActivityToken):
(WebKit::LegacyDownloadClient::releaseActivityTokenIfNecessary):

  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::DownloadProxy):
(WebKit::DownloadProxy::cancel):
(WebKit::DownloadProxy::invalidate):
(WebKit::DownloadProxy::processDidClose):
(WebKit::DownloadProxy::didStart):
(WebKit::DownloadProxy::didReceiveAuthenticationChallenge):
(WebKit::DownloadProxy::willSendRequest):
(WebKit::DownloadProxy::didReceiveResponse):
(WebKit::DownloadProxy::didReceiveData):
(WebKit::DownloadProxy::decideDestinationWithSuggestedFilename):
(WebKit::DownloadProxy::didCreateDestination):
(WebKit::DownloadProxy::didFinish):
(WebKit::DownloadProxy::didFail):
(WebKit::DownloadProxy::didCancel):
(WebKit::DownloadProxy::~DownloadProxy): Deleted.

  • UIProcess/Downloads/DownloadProxy.h:
  • UIProcess/Downloads/DownloadProxyMap.cpp:

(WebKit::DownloadProxyMap::createDownloadProxy):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::setLegacyDownloadClient):
(WebKit::WebProcessPool::setDownloadClient): Deleted.

  • UIProcess/WebProcessPool.h:
  • WebKit.xcodeproj/project.pbxproj:
12:36 PM Changeset in webkit [268064] by achristensen@apple.com
  • 10 edits in trunk/Source/WebCore

Rename namespace Packed to namespace PackedColor
https://bugs.webkit.org/show_bug.cgi?id=217391

Reviewed by Simon Fraser.

Otherwise "using WTF::Packed;" in wtf/Packed.h causes problems if both headers are included in the same translation unit.

  • css/StyleColor.cpp:

(WebCore::StyleColor::colorFromKeyword):

  • css/parser/CSSParserFastPaths.cpp:

(WebCore::finishParsingHexColor):
(WebCore::finishParsingNamedColor):

  • platform/graphics/Color.h:

(WebCore::Color::asInline const):
(WebCore::Color::setColor):
(WebCore::Color::encode const):
(WebCore::Color::decode):

  • platform/graphics/ColorTypes.h:

(WebCore::asSRGBA):
(WebCore::Packed::RGBA::RGBA): Deleted.
(WebCore::Packed::ARGB::ARGB): Deleted.

  • platform/graphics/ImageBackingStore.h:

(WebCore::ImageBackingStore::blendPixel):
(WebCore::ImageBackingStore::pixelValue const):

  • platform/graphics/cg/ColorCG.cpp:

(WebCore::cachedCGColor):

  • platform/graphics/mac/ColorMac.mm:

(WebCore::nsColor):

12:08 PM Changeset in webkit [268063] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][Floating] Remove redundant FormattingContextRoot in FloatingContext c'tor
https://bugs.webkit.org/show_bug.cgi?id=217398

Reviewed by Antti Koivisto.

No need to pass in the root now that FormattingContext has the root() getter.

  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layoutInFlowContent):

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::FloatingContext):

  • layout/floats/FloatingContext.h:

(WebCore::Layout::FloatingContext::root const):

  • layout/inlineformatting/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):
(WebCore::Layout::InlineFormattingContext::computeGeometryForLineContent):

12:04 PM Changeset in webkit [268062] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/WebKit

Cherry-pick r268030. rdar://problem/70010322

Break reference cycle with NSURLSessionDataTask in NetworkDataTaskCocoa
https://bugs.webkit.org/show_bug.cgi?id=217347
<rdar://problem/69483575>

Reviewed by Geoffrey Garen.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: (WebKit::NetworkDataTaskCocoa::applyCookiePolicyForThirdPartyCNAMECloaking):

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

11:51 AM Changeset in webkit [268061] by Alan Coon
  • 2 edits in branches/safari-610-branch/Source/WebKit

Cherry-pick r268019. rdar://problem/70005083

Change a PDF RELEASE_ASSERT to an early return.
rdar://problem/69805240 and https://bugs.webkit.org/show_bug.cgi?id=217346

Reviewed by Tim Horton.

No new tests (Wish they were possible)

  • WebProcess/Plugins/PDF/PDFPlugin.mm: (WebKit::PDFPlugin::installPDFDocument): This release assert is getting hit regularly. Change to an early return while we continue tracking this down.

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

11:48 AM Changeset in webkit [268060] by Alan Coon
  • 8 edits
    2 deletes in branches/safari-610-branch

Revert r266909. rdar://problem/69101091

11:42 AM Changeset in webkit [268059] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

run-minibrowser not compatible with python3
https://bugs.webkit.org/show_bug.cgi?id=217368

Patch by Philippe Normand <pnormand@igalia.com> on 2020-10-06
Reviewed by Adrian Perez de Castro.

  • Scripts/webkitpy/minibrowser/run_webkit_app.py: Use webkitcorepy's unicode().
10:38 AM Changeset in webkit [268058] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[macOS] Bump reported current shipping release UA to 10_15_7
https://bugs.webkit.org/show_bug.cgi?id=217364
<rdar://problem/69984962>

Patch by Luming Yin <luming_yin@apple.com> on 2020-10-06
Reviewed by Alex Christensen.

Bump the reported current shipping release UA from 10_15_6 to 10_15_7.

  • platform/mac/UserAgentMac.mm:

(WebCore::standardUserAgentWithApplicationName):

10:18 AM Changeset in webkit [268057] by Chris Dumez
  • 26 edits
    1 copy
    2 adds in trunk

Source/WebCore:
Update Worklet.addModule() to actually fetch and evaluate the module script
https://bugs.webkit.org/show_bug.cgi?id=217242

Reviewed by Geoffrey Garen.

Update Worklet.addModule() to actually fetch and evaluate the module script as per:

The WorkletGlobalScope maintains a queue of fetch requests (basically a URL and a completion handler) and uses
the existing WorkerScriptLoader to process the requests serially. Based on the result on the load, we call the
CompletionHandler which will cause the Worklet.addModule() promise to get resolved or rejected.

Test: webaudio/audioworklet-addModule-failure.html

  • Modules/webaudio/AudioWorkletGlobalScope.cpp:
  • Modules/webaudio/AudioWorkletGlobalScope.h:

Provide workerOrWorkletThread() override for WorkerOrWorkletGlobalScope(), which is a replacement
for underlyingThread().

  • Modules/webaudio/AudioWorkletMessagingProxy.cpp:

(WebCore::AudioWorkletMessagingProxy::AudioWorkletMessagingProxy):
(WebCore::AudioWorkletMessagingProxy::createCacheStorageConnection):
(WebCore::AudioWorkletMessagingProxy::postTaskToLoader):
(WebCore::AudioWorkletMessagingProxy::postTaskForModeToWorkerOrWorkletGlobalScope):

  • Modules/webaudio/AudioWorkletMessagingProxy.h:

Update AudioWorkletMessagingProxy to subclass WorkerLoaderProxy so that AudioWorklet can reuse
WorkerScriptLoader. WorkerScriptLoader relies on WorkerLoaderProxy to do thread hopping.

  • Modules/webaudio/AudioWorkletThread.cpp:

(WebCore::AudioWorkletThread::AudioWorkletThread):
(WebCore::AudioWorkletThread::workerLoaderProxy):

  • Modules/webaudio/AudioWorkletThread.h:

(WebCore::AudioWorkletThread::create):
Subclass the new WorkerOrWorkletThread interface. WorkerOrWorkletThread is a new interface that
was adding so that WorkerScriptLoader can be reused by AudioWorklets.

  • Modules/websockets/WorkerThreadableWebSocketChannel.cpp:

(WebCore::WorkerThreadableWebSocketChannel::Peer::send):
(WebCore::WorkerThreadableWebSocketChannel::Peer::bufferedAmount):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didConnect):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessage):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveBinaryData):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didUpdateBufferedAmount):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didStartClosingHandshake):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didClose):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessageError):
(WebCore::WorkerThreadableWebSocketChannel::Peer::didUpgradeURL):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::mainThreadInitialize):
Simple renaming.

  • WebCore.xcodeproj/project.pbxproj:
  • loader/ThreadableLoader.cpp:

(WebCore::ThreadableLoader::create):

  • loader/WorkerThreadableLoader.cpp:

(WebCore::WorkerThreadableLoader::WorkerThreadableLoader):
(WebCore::WorkerThreadableLoader::loadResourceSynchronously):
(WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
(WebCore::WorkerThreadableLoader::MainThreadBridge::notifyIsDone):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didSendData):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveResponse):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveData):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFinishLoading):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFail):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFinishTiming):

  • loader/WorkerThreadableLoader.h:

(WebCore::WorkerThreadableLoader::create):
Update WorkerThreadableLoader so that it can be reused by AudioWorklets.

  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::wrapCryptoKey):
(WebCore::WorkerGlobalScope::unwrapCryptoKey):

  • workers/WorkerGlobalScope.h:

Minor changes to keep building after updates to WorkerOrWorkletGlobalScope.

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

(WebCore::WorkerMessagingProxy::createCacheStorageConnection):
(WebCore::WorkerMessagingProxy::postTaskForModeToWorkerOrWorkletGlobalScope):

  • workers/WorkerMessagingProxy.h:

Simple renames.

  • workers/WorkerOrWorkletGlobalScope.h:

(WebCore::WorkerOrWorkletGlobalScope::createUniqueIdentifier):
Update WorkerOrWorkletGlobalScope to add a few things WorkerScriptLoader needed to work with
both Workers and Worklets.

  • workers/WorkerOrWorkletThread.h: Added.

Added new parent interface for WorkerThread and AudioWorkletThread so that WorkerScriptLoader
can work for both Workers and Worklets.

  • workers/WorkerRunLoop.cpp:

(WebCore::WorkerRunLoop::runInMode):
(WebCore::WorkerRunLoop::runCleanupTasks):
Minor changes to keep building after changes to WorkerOrWorkletGlobalScope.

  • workers/WorkerThread.h:

Subclass the new WorkerOrWorkletThread interface.

  • workers/service/context/ServiceWorkerThreadProxy.cpp:

(WebCore::ServiceWorkerThreadProxy::postTaskForModeToWorkerOrWorkletGlobalScope):
(WebCore::ServiceWorkerThreadProxy::createCacheStorageConnection):
(WebCore::ServiceWorkerThreadProxy::notifyNetworkStateChange):
(WebCore::ServiceWorkerThreadProxy::startFetch):
(WebCore::ServiceWorkerThreadProxy::cancelFetch):
(WebCore::ServiceWorkerThreadProxy::continueDidReceiveFetchResponse):

  • workers/service/context/ServiceWorkerThreadProxy.h:

Simple renames.

  • worklets/WorkletGlobalScope.cpp:

(WebCore::WorkletGlobalScope::WorkletGlobalScope):
Make sure we correctly initialize the security origin for the WorkletGlobalScope.
Previously, we were using a unique origin so all script loads would have failed
with a cross-origin error.

(WebCore::WorkletGlobalScope::fetchAndInvokeScript):
(WebCore::WorkletGlobalScope::processNextScriptFetchJobIfNeeded):
(WebCore::WorkletGlobalScope::didReceiveResponse):
(WebCore::WorkletGlobalScope::notifyFinished):
(WebCore::WorkletGlobalScope::didCompleteScriptFetchJob):

  • worklets/WorkletGlobalScope.h:

(WebCore::WorkletGlobalScope::responsibleDocument):
(WebCore::WorkletGlobalScope::responsibleDocument const):
Add implementation for module script fetching using WorkerScriptLoader. This gets called
when Worklet.addModule() is called on the main thread.

LayoutTests:
Update Worklet.addModule() to actually fetch the module script
https://bugs.webkit.org/show_bug.cgi?id=217242

Reviewed by Geoffrey Garen.

Add layout test coverage.

  • webaudio/audioworklet-addModule-failure-expected.txt: Added.
  • webaudio/audioworklet-addModule-failure.html: Added.
10:01 AM Changeset in webkit [268056] by Ryan Haddad
  • 2 edits in branches/safari-610-branch/Tools

Cherry-pick r267448. rdar://problem/69727369

Make TLSVersion API tests more robust.
https://bugs.webkit.org/show_bug.cgi?id=216704

Like I did in r267278, the TLSVersion.ShouldAllowDeprecatedTLS API test was also asserting with TCPServer,
so use HTTPServer which gracefully handles a variable number of connection attempts.
The NetworkSession tests that use NSUserDefaults need to be split into a separate test for bug 216041,
so may as well do that here, too.

  • TestWebKitAPI/Tests/WebKitCocoa/TLSDeprecation.mm: (TestWebKitAPI::makeWebViewWith): (TestWebKitAPI::TEST):

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

9:59 AM Changeset in webkit [268055] by Antti Koivisto
  • 12 edits in trunk/Source/WebCore

[LFC][Integration] Add renderer() to iterator
https://bugs.webkit.org/show_bug.cgi?id=217382

Reviewed by Zalan Bujtas.

Also use it while converting RenderedPosition for the iterator.

  • dom/Position.h:
  • editing/RenderedPosition.cpp:

(WebCore::rendererFromPosition):
(WebCore::RenderedPosition::RenderedPosition):
(WebCore::RenderedPosition::previousLeafOnLine const):
(WebCore::RenderedPosition::nextLeafOnLine const):
(WebCore::RenderedPosition::isEquivalent const):
(WebCore::RenderedPosition::bidiLevelOnLeft const):
(WebCore::RenderedPosition::bidiLevelOnRight const):
(WebCore::RenderedPosition::leftBoundaryOfBidiRun):
(WebCore::RenderedPosition::rightBoundaryOfBidiRun):
(WebCore::RenderedPosition::atLeftBoundaryOfBidiRun const):
(WebCore::RenderedPosition::atRightBoundaryOfBidiRun const):
(WebCore::RenderedPosition::positionAtLeftBoundaryOfBiDiRun const):
(WebCore::RenderedPosition::positionAtRightBoundaryOfBiDiRun const):
(WebCore::RenderedPosition::absoluteRect const):
(WebCore::renderObjectContainsPosition):

  • editing/RenderedPosition.h:

(WebCore::RenderedPosition::rootBox):
(WebCore::RenderedPosition::atLeftmostOffsetInBox const):
(WebCore::RenderedPosition::atRightmostOffsetInBox const):
(WebCore::RenderedPosition::uncachedInlineBox): Deleted.
(WebCore::RenderedPosition::RenderedPosition): Deleted.

  • layout/integration/LayoutIntegrationInlineContent.cpp:

(WebCore::LayoutIntegration::InlineContent::InlineContent):
(WebCore::LayoutIntegration::InlineContent::lineLayout const):
(WebCore::LayoutIntegration::InlineContent::rendererForLayoutBox const):

  • layout/integration/LayoutIntegrationInlineContent.h:

(WebCore::LayoutIntegration::InlineContent::create):

  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::ensureInlineContent):
(WebCore::LayoutIntegration::LineLayout::rendererForLayoutBox const):

  • layout/integration/LayoutIntegrationLineLayout.h:
  • layout/integration/LayoutIntegrationPagination.cpp:

(WebCore::LayoutIntegration::makeAdjustedContent):

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::PathRun::renderer const):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LegacyPath::isLastTextRunOnLine const):
(WebCore::LayoutIntegration::LegacyPath::isLastTextRun const):
(WebCore::LayoutIntegration::LegacyPath::renderer const):

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::ModernPath::renderer const):

9:45 AM Changeset in webkit [268054] by commit-queue@webkit.org
  • 16 edits in trunk

FileReader should transition to readyState DONE after last onprogress event
https://bugs.webkit.org/show_bug.cgi?id=217333

Patch by Alex Christensen <achristensen@webkit.org> on 2020-10-06
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/FileAPI/FileReader/workers-expected.txt:
  • web-platform-tests/FileAPI/fileReader-expected.txt:
  • web-platform-tests/FileAPI/fileReader.html:
  • web-platform-tests/FileAPI/reading-data-section/FileReader-multiple-reads-expected.txt:
  • web-platform-tests/FileAPI/reading-data-section/filereader_abort-expected.txt:
  • web-platform-tests/FileAPI/reading-data-section/filereader_readAsArrayBuffer-expected.txt:
  • web-platform-tests/FileAPI/reading-data-section/filereader_readAsBinaryString-expected.txt:
  • web-platform-tests/FileAPI/reading-data-section/filereader_readAsDataURL-expected.txt:
  • web-platform-tests/FileAPI/reading-data-section/filereader_readAsText-expected.txt:

Source/WebCore:

I also bring the abort function in alignment with https://w3c.github.io/FileAPI/
and the behavior of Chrome and Firefox.

As suggested by Chris, I added a bool to remember if loading is complete so we can
retain existing behavior when abort is called inside the last onprogress event.
This is not mentioned by the spec yet, but it matches the existing behavior and the
behavior of Chrome, so I added a web platform test for it.

  • fileapi/FileReader.cpp:

(WebCore::FileReader::abort):
(WebCore::FileReader::didFinishLoading):
(WebCore::FileReader::didFail):

  • fileapi/FileReader.h:

LayoutTests:

  • fast/files/file-reader-abort-expected.txt:
  • fast/files/file-reader-abort-using-open-panel-expected.txt:

Update expectations to reflect new behavior that onerror is not called before onabort,
matching Chrome, Firefox, and the specification.

9:40 AM Changeset in webkit [268053] by Alan Coon
  • 8 edits in branches/safari-610-branch/Source

Revert "Versioning."

9:14 AM Changeset in webkit [268052] by youenn@apple.com
  • 5 edits in trunk/Source

Enable video capture in WebProcess by default on MacOS
https://bugs.webkit.org/show_bug.cgi?id=217385
<rdar://problem/69999542>

Reviewed by Sam Weinig.

Source/WebKit:

Manually tested in MiniBrowser.

  • Shared/WebPreferencesDefaultValues.cpp:
  • Shared/WebPreferencesDefaultValues.h:

Source/WTF:

  • Scripts/Preferences/WebPreferencesInternal.yaml:
8:58 AM Changeset in webkit [268051] by Diego Pino Garcia
  • 4 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Skip LFC tests.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
8:45 AM Changeset in webkit [268050] by commit-queue@webkit.org
  • 10 edits in trunk

Align URL setters with reasonably behaving other browsers
https://bugs.webkit.org/show_bug.cgi?id=217366

Patch by Alex Christensen <achristensen@webkit.org> on 2020-10-06
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/url/url-setters-expected.txt:

Source/WTF:

Firefox ignores everything after '/', '?', '#', and '\' in special URL schemes when setting the host to a new value.
Chrome doesn't add another '/' to the beginning of the path if it's a special scheme and starts with '\'.
I think these behaviors make sense, and aligning with these behaviors makes it so there are no tests in url-setters.html
that any other browser passes that we don't also pass.
Once https://github.com/whatwg/url/issues/551 is resolved this will also be reflected in spec wording.

  • wtf/URL.cpp:

(WTF::URL::hasSpecialScheme const):
(WTF::forwardSlashHashOrQuestionMark):
(WTF::slashHashOrQuestionMark):
(WTF::URL::setHost):
(WTF::URL::setPath):

  • wtf/URL.h:

LayoutTests:

  • fast/dom/DOMURL/set-href-attribute-host-expected.txt:
  • fast/dom/DOMURL/set-href-attribute-host.html:
  • fast/dom/HTMLAnchorElement/set-href-attribute-host-expected.txt:
  • fast/dom/HTMLAnchorElement/set-href-attribute-host.html:
8:27 AM Changeset in webkit [268049] by Simon Fraser
  • 18 edits in trunk/Source

Rename scheduleTimedRenderingUpdate() to scheduleRenderingUpdate() everywhere
https://bugs.webkit.org/show_bug.cgi?id=217367

Reviewed by Alex Christensen.

The previously named scheduleImmediateRenderingUpdate() is no more, so all rendering
updates that WebCore knows about are of the timed variety. So just call them
scheduleRenderingUpdate() everywhere.

Source/WebCore:

  • animation/DocumentTimeline.cpp:

(WebCore::DocumentTimeline::scheduleAnimationResolution):

  • dom/Document.cpp:

(WebCore::Document::setNeedsDOMWindowResizeEvent):
(WebCore::Document::setNeedsVisualViewportResize):
(WebCore::Document::addPendingScrollEventTarget):
(WebCore::Document::setNeedsVisualViewportScrollEvent):
(WebCore::Document::scheduleRenderingUpdate):
(WebCore::Document::scheduleInitialIntersectionObservationUpdate):
(WebCore::Document::updateResizeObservations):
(WebCore::Document::scheduleTimedRenderingUpdate): Deleted.

  • dom/Document.h:
  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::scheduleAnimation):

  • page/ChromeClient.h:

(WebCore::ChromeClient::scheduleRenderingUpdate):
(WebCore::ChromeClient::scheduleTimedRenderingUpdate): Deleted.

  • page/Page.cpp:

(WebCore::Page::updateStyleAfterChangeInEnvironment):
(WebCore::Page::scheduleRenderingUpdate):
(WebCore::Page::accessibilitySettingsDidChange):
(WebCore::Page::appearanceDidChange):
(WebCore::Page::scheduleTimedRenderingUpdate): Deleted.

  • page/Page.h:
  • page/PageOverlayController.cpp:

(WebCore::PageOverlayController::didChangeViewExposedRect):
(WebCore::PageOverlayController::notifyFlushRequired):

  • page/RenderingUpdateScheduler.cpp:

(WebCore::RenderingUpdateScheduler::adjustRenderingUpdateFrequency):
(WebCore::RenderingUpdateScheduler::scheduleRenderingUpdate):
(WebCore::RenderingUpdateScheduler::scheduleTimedRenderingUpdate): Deleted.

  • page/RenderingUpdateScheduler.h:
  • page/ResizeObserver.cpp:

(WebCore::ResizeObserver::observe):

  • page/linux/ResourceUsageOverlayLinux.cpp:
  • page/mac/ServicesOverlayController.mm:

(WebCore::ServicesOverlayController::Highlight::notifyFlushRequired):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::scheduleRenderingUpdateForImage):

  • svg/graphics/SVGImageClients.h:

Source/WebKit:

  • WebProcess/WebPage/CoordinatedGraphics/LayerTreeHostTextureMapper.cpp:

(WebKit::LayerTreeHost::layerFlushTimerFired):

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

[GLIB] Unreviewed test gardening. Remove tests passing.

  • platform/glib/TestExpectations:
6:41 AM Changeset in webkit [268047] by youenn@apple.com
  • 4 edits in trunk

In case all tracks are ended, enqueue a task to stop recording instead of stopping recording
https://bugs.webkit.org/show_bug.cgi?id=217372

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/mediacapture-record/MediaRecorder-stop-expected.txt:

Source/WebCore:

Covered by updated test.

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::trackEnded):

6:23 AM Changeset in webkit [268046] by Adrian Perez de Castro
  • 4 edits in trunk

REGRESSION(r267399): [WPE] Build broken with ENABLE_ACCESSIBILITY=OFF
https://bugs.webkit.org/show_bug.cgi?id=217380

Reviewed by Philippe Normand.

Before the ATK::Bridge target got introduced in r267399 a couple of CMake variables were
used, which were empty when the accessility support was disabled and nothing was being
added to the WebKit and WPEToolingBackends targets. Now that an imported target is used
it is needed to add it as a dependency conditionally to avoid using an undefined target
name.

Source/WebKit:

No new tests needed.

  • PlatformWPE.cmake: Use the ATK::Bridge target only when ENABLE_ACCESSIBILITY is set.

Tools:

  • wpe/backends/CMakeLists.txt: Use the ATK::Bridge target only when ENABLE_ACCESSIBILITY is set.
4:51 AM Changeset in webkit [268045] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[GTK] Unreviewed test gardening. Remove tests passing.

  • platform/gtk/TestExpectations:
2:59 AM Changeset in webkit [268044] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[WPE] Unreviewed test gardening. Remove test passing.

  • platform/wpe/TestExpectations:
2:34 AM Changeset in webkit [268043] by commit-queue@webkit.org
  • 6 edits in trunk

Make value parameter in Document.execCommand non nullable
https://bugs.webkit.org/show_bug.cgi?id=217331

Patch by Rob Buis <rbuis@igalia.com> on 2020-10-06
Reviewed by Sam Weinig.

Source/WebCore:

Make value parameter in Document.execCommand non nullable [1].

Test: editing/execCommand/arguments-combinations.html

[1] https://html.spec.whatwg.org/#document

  • dom/Document+HTML.idl:
  • editing/EditorCommand.cpp:

(WebCore::executeInsertImage):

LayoutTests:

Adapt test to change.

  • editing/execCommand/arguments-combinations-expected.txt:
  • editing/execCommand/arguments-combinations.html:
2:07 AM Changeset in webkit [268042] by Diego Pino Garcia
  • 2 edits in trunk/LayoutTests

[WPE] Unreviewed test gardening. Update test expectations after r268038.

  • platform/wpe/TestExpectations:
1:53 AM Changeset in webkit [268041] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GTK][WPE] Update baseline of WPT test css/cssom/cssstyledeclaration-csstext.html after r267985

Unreviewed test gardening.

  • platform/gtk/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
1:45 AM Changeset in webkit [268040] by Diego Pino Garcia
  • 2 edits
    1 delete in trunk/LayoutTests

[GLIB] Update two webaudio tests baselines after r268006

Unreviewed test gardening.

  • platform/glib/webaudio/Analyser/realtimeanalyser-fftsize-reset-expected.txt: Updated.
  • platform/glib/webaudio/Analyser/realtimeanalyser-freq-data-expected.txt: Removed.
1:37 AM Changeset in webkit [268039] by Diego Pino Garcia
  • 4 edits in trunk/LayoutTests

[GLIB] Move two common cache tests to GLIB test expectations.

Unreviewed test gardening.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/wpe/TestExpectations:
1:06 AM Changeset in webkit [268038] by Adrian Perez de Castro
  • 7 edits in trunk/Source

Non-unified build fixes, early October 2020 edition, take two
https://bugs.webkit.org/show_bug.cgi?id=217344

Unreviewed build fix.

Source/WebCore:

No new tests needed.

  • Modules/contact-picker/ContactInfo.h: Add missing wtf/Forward.h and wtf/Vector.h headers.
  • Modules/webaudio/AudioWorkletProcessor.h: Add missing wtf/Ref.h header.
  • Modules/webaudio/AudioWorkletProcessorConstructor.h: Add missing JavaScriptCore/Strong.h header.
  • rendering/RenderTextLineBoxes.cpp: Add missing VisiblePosition.h header.

Source/WebKit:

  • UIProcess/WebProcessProxy.cpp: Add missing WebAutomationSession.h header.

Oct 5, 2020:

11:31 PM Changeset in webkit [268037] by Ross Kirsling
  • 4 edits in trunk

%TypedArray%.from must do mapping and putting in lockstep
https://bugs.webkit.org/show_bug.cgi?id=217349

Reviewed by Yusuke Suzuki.

JSTests:

  • test262/expectations.yaml:

Mark two test cases as passing.

Source/JavaScriptCore:

%TypedArray%.from first turns the input iterator into a list to find the size for the resulting typed array,
then it fills the typed array with the list elements.

If a map function is provided, however, it must be called during the *second* phase, not the first,
because if an element throws upon valueOf, that should prevent all further calls of the map function.

  • builtins/TypedArrayConstructor.js:

(from):

10:33 PM Changeset in webkit [268036] by Peng Liu
  • 4 edits in trunk/LayoutTests

[Media in GPU Process] Enable some fullscreen and picture-in-picture tests
https://bugs.webkit.org/show_bug.cgi?id=217360

Unreviewed test gardening.

  • gpu-process/TestExpectations:
  • media/navigate-with-pip-should-not-crash.html:
  • media/pip-video-going-into-fullscreen.html:
10:32 PM Changeset in webkit [268035] by Peng Liu
  • 2 edits in trunk/Source/WebCore

MobileSafari crashes at WebCore: -[WebAVPlayerViewControllerDelegate playerViewControllerWillStartPictureInPicture:]
https://bugs.webkit.org/show_bug.cgi?id=217356

Reviewed by Alex Christensen.

Since we replaced the RefPtr of VideoFullscreenInterfaceAVKit with a WeakPtr in
WebAVPlayerViewControllerDelegate to fix a leak in r262185, self.fullscreenInterface
could be NULL and we need to add NULL checks.

  • platform/ios/VideoFullscreenInterfaceAVKit.mm:

(-[WebAVPlayerViewControllerDelegate playerViewControllerWillStartPictureInPicture:]):
(-[WebAVPlayerViewControllerDelegate playerViewControllerDidStartPictureInPicture:]):
(-[WebAVPlayerViewControllerDelegate playerViewController:failedToStartPictureInPictureWithError:]):
(-[WebAVPlayerViewControllerDelegate playerViewControllerWillStopPictureInPicture:]):
(-[WebAVPlayerViewControllerDelegate playerViewControllerDidStopPictureInPicture:]):
(-[WebAVPlayerViewControllerDelegate playerViewController:shouldExitFullScreenWithReason:]):
(-[WebAVPlayerViewControllerDelegate playerViewController:restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:]):

10:16 PM Changeset in webkit [268034] by Simon Fraser
  • 6 edits in trunk/Source/WebCore

Remove Page::scheduleImmediateRenderingUpdate()
https://bugs.webkit.org/show_bug.cgi?id=217361

Reviewed by Antti Koivisto.

There was only one remaining caller of Page::scheduleImmediateRenderingUpdate(), which
is RenderLayerCompositor::layerTreeAsText(). The immediate update here is necessary because
we flush compositing layers in layerTreeAsText(), and that can trigger a Core Animation commit
with painting, so we have to complete our rendering update first to ensure up-to-date layout.

However, this is a testing-only codepath, so have the naming reflect that.

  • page/Page.cpp:

(WebCore::Page::triggerRenderingUpdateForTesting):
(WebCore::Page::scheduleImmediateRenderingUpdate): Deleted.

  • page/Page.h:
  • page/RenderingUpdateScheduler.cpp:

(WebCore::RenderingUpdateScheduler::scheduleTimedRenderingUpdate):
(WebCore::RenderingUpdateScheduler::displayRefreshFired):
(WebCore::RenderingUpdateScheduler::triggerRenderingUpdateForTesting):
(WebCore::RenderingUpdateScheduler::triggerRenderingUpdate):
(WebCore::RenderingUpdateScheduler::scheduleImmediateRenderingUpdate): Deleted.

  • page/RenderingUpdateScheduler.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::layerTreeAsText):

9:42 PM Changeset in webkit [268033] by commit-queue@webkit.org
  • 4 edits in trunk

Don't NFC normalize strings from blobs
https://bugs.webkit.org/show_bug.cgi?id=217327

Patch by Alex Christensen <achristensen@webkit.org> on 2020-10-05
Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

  • web-platform-tests/FileAPI/unicode-expected.txt:

Source/WebCore:

This matches Chrome and Firefox.
Covered by newly passing web platform tests.

  • fileapi/BlobBuilder.cpp:

(WebCore::BlobBuilder::append):

9:41 PM Changeset in webkit [268032] by Lauro Moura
  • 3 edits in trunk/LayoutTests

[GLIB] Gardening some flaky crashes related to NetworkProcess

Unreviewed test gardening.

  • platform/gtk-wayland/TestExpectations:
  • platform/wpe/TestExpectations:
9:17 PM Changeset in webkit [268031] by Simon Fraser
  • 9 edits in trunk/Source/WebCore

Remove the unused Chrome::scheduleAnimation()
https://bugs.webkit.org/show_bug.cgi?id=217359

Reviewed by Sam Weinig.

Chrome::scheduleAnimation() and the tangentially related ScrollableArea::serviceScrollAnimations()
which are unused.

  • page/Chrome.h:
  • page/FrameView.cpp:

(WebCore::FrameView::scheduleAnimation): Deleted.

  • page/FrameView.h:
  • platform/HostWindow.h:
  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::serviceScrollAnimations): Deleted.

  • platform/ScrollAnimator.h:
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::serviceScrollAnimations): Deleted.

  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::scheduleAnimation): Deleted.

8:03 PM Changeset in webkit [268030] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Break reference cycle with NSURLSessionDataTask in NetworkDataTaskCocoa
https://bugs.webkit.org/show_bug.cgi?id=217347
<rdar://problem/69483575>

Reviewed by Geoffrey Garen.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::applyCookiePolicyForThirdPartyCNAMECloaking):

7:55 PM Changeset in webkit [268029] by Aditya Keerthi
  • 2 edits in trunk/Tools

Unreviewed. Update my primary email address.

  • Scripts/webkitpy/common/config/contributors.json:
7:51 PM Changeset in webkit [268028] by Simon Fraser
  • 14 edits in trunk/Source

Use the "triggerRenderingUpdate" terminology in ChromeClient
https://bugs.webkit.org/show_bug.cgi?id=217355

Reviewed by Tim Horton.

ChromeClient confusingly had both scheduleRenderingUpdate() and scheduleTimedRenderingUpdate().
The former is for triggering an update soon, and the latter is a normal schedule, used by
SVGImages because they have their own Page.

Rename the one that the WebKits have to implement to triggerRenderingUpdate().

Source/WebCore:

  • loader/EmptyClients.h:
  • page/ChromeClient.h:
  • page/RenderingUpdateScheduler.cpp:

(WebCore::RenderingUpdateScheduler::scheduleImmediateRenderingUpdate):

Source/WebKit:

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::triggerRenderingUpdate):
(WebKit::WebChromeClient::scheduleRenderingUpdate): Deleted.

  • WebProcess/WebCoreSupport/WebChromeClient.h:

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::triggerRenderingUpdate):
(WebChromeClient::scheduleRenderingUpdate): Deleted.

Source/WebKitLegacy/win:

  • WebCoreSupport/WebChromeClient.cpp:

(WebChromeClient::triggerRenderingUpdate):
(WebChromeClient::scheduleRenderingUpdate): Deleted.

  • WebCoreSupport/WebChromeClient.h:
7:06 PM Changeset in webkit [268027] by Hector Lopez
  • 2 edits in trunk/LayoutTests

REGRESSION(iOS 14): http/wpt/cache-storage/cache-quota-after-restart.any.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=217357

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
6:57 PM Changeset in webkit [268026] by Chris Dumez
  • 22 edits in trunk/Source/WebCore

Improvements to VectorMath API
https://bugs.webkit.org/show_bug.cgi?id=217343

Reviewed by Alex Christensen.

The following improvements were made to the VectorMath API:

  • Use clearer names for the functions, e.g. VectorMath::vmul() -> VectorMath::multiply()
  • Drop stride parameters as the call sites always pass 1. This helps simplify the code.
  • Stop using out-parameters and have the functions return a value when needed.
  • Pass input scalar as 'float' instead of 'const float*'.

No new tests, no Web-facing behavior change.

  • Modules/webaudio/AudioParam.cpp:

(WebCore::AudioParam::calculateFinalValues):

  • Modules/webaudio/AudioParamTimeline.cpp:

(WebCore::AudioParamTimeline::valuesForTimeRange):
(WebCore::AudioParamTimeline::processLinearRamp):
(WebCore::AudioParamTimeline::processSetTarget):

  • Modules/webaudio/OscillatorNode.cpp:

(WebCore::OscillatorNode::calculateSampleAccuratePhaseIncrements):

  • Modules/webaudio/PeriodicWave.cpp:

(WebCore::PeriodicWave::createBandLimitedTables):

  • Modules/webaudio/RealtimeAnalyser.cpp:

(WebCore::RealtimeAnalyser::getFloatFrequencyData):

  • platform/audio/AudioBus.cpp:

(WebCore::AudioBus::speakersSumFromByDownMixing):
(WebCore::AudioBus::copyWithGainFrom):
(WebCore::AudioBus::copyWithSampleAccurateGainValuesFrom):

  • platform/audio/AudioChannel.cpp:

(WebCore::AudioChannel::scale):
(WebCore::AudioChannel::sumFrom):
(WebCore::AudioChannel::maxAbsValue const):

  • platform/audio/DirectConvolver.cpp:
  • platform/audio/FFTConvolver.cpp:

(WebCore::FFTConvolver::process):

  • platform/audio/FFTFrame.cpp:

(WebCore::FFTFrame::scaleFFT):
(WebCore::FFTFrame::multiply):

  • platform/audio/IIRFilter.cpp:

(WebCore::IIRFilter::tailTime):

  • platform/audio/Reverb.cpp:

(WebCore::calculateNormalizationScale):

  • platform/audio/ReverbAccumulationBuffer.cpp:

(WebCore::ReverbAccumulationBuffer::accumulate):

  • platform/audio/ReverbConvolver.cpp:
  • platform/audio/ReverbConvolverStage.cpp:

(WebCore::ReverbConvolverStage::ReverbConvolverStage):

  • platform/audio/VectorMath.cpp:

(WebCore::VectorMath::multiplyByScalar):
(WebCore::VectorMath::add):
(WebCore::VectorMath::addScalar):
(WebCore::VectorMath::multiply):
(WebCore::VectorMath::multiplyComplex):
(WebCore::VectorMath::multiplyThenAddScalar):
(WebCore::VectorMath::maximumMagnitude):
(WebCore::VectorMath::sumOfSquares):
(WebCore::VectorMath::clamp):
(WebCore::VectorMath::linearToDecibels):
(WebCore::VectorMath::is16ByteAligned):

  • platform/audio/VectorMath.h:
  • platform/audio/gstreamer/FFTFrameGStreamer.cpp:

(WebCore::FFTFrame::doInverseFFT):

  • platform/audio/mac/AudioDestinationMac.cpp:

(WebCore::AudioDestinationCocoa::processBusAfterRender):

  • platform/audio/mac/AudioSampleBufferList.cpp:
  • platform/audio/mac/FFTFrameMac.cpp:

(WebCore::FFTFrame::doFFT):
(WebCore::FFTFrame::doInverseFFT):

6:27 PM Changeset in webkit [268025] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

REGRESSION(r267915): Many layout tests are asserting under ~CompletionHandler()
https://bugs.webkit.org/show_bug.cgi?id=217345
<rdar://problem/69973775>

Reviewed by Tim Horton.

I did *not* intend to schedule an async task after every single image load in r267915. Apart from triggering
assertions on various tests, this also causes us to send excessive IPC messages to the UI process when loading
images, which can't be good for performance. Fix this by only calling into computeAndSendEditDragSnapshot()
when we've finished loading all dropped image elements.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::didFinishLoadingImageForElement):

6:22 PM Changeset in webkit [268024] by Hector Lopez
  • 2 edits in trunk/LayoutTests

Adjust test expectation for timeouts
https://bugs.webkit.org/show_bug.cgi?id=215324

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
6:21 PM Changeset in webkit [268023] by eric.carlson@apple.com
  • 3 edits in trunk/Tools

Disable media capture if an app's entitlements won't allow access to capture devices
https://bugs.webkit.org/show_bug.cgi?id=217319
<rdar://problem/69956112>

Unreviewed, address post-review comments.

  • MiniBrowser/mac/Info.plist: Update media capture usage strings.
  • MobileMiniBrowser/MobileMiniBrowser/Info.plist: Ditto.
5:52 PM Changeset in webkit [268022] by Simon Fraser
  • 7 edits in trunk/Source

ChromeClient::needsImmediateRenderingUpdate() only existing to work around a WebKit1 bug
https://bugs.webkit.org/show_bug.cgi?id=217338

Reviewed by Said Abou-Hallawa.

WebViewLayerFlushScheduler has a bug where scheduling inside the callback would fail
because the RunLoopObserver was always invalidate at the end of the callback.

If we fix this, we can remove ChromeClient::needsImmediateRenderingUpdate() which I believe
only existed to work around this bug.

Source/WebCore:

  • page/ChromeClient.h:

(WebCore::ChromeClient::scheduleTimedRenderingUpdate):
(WebCore::ChromeClient::needsImmediateRenderingUpdate const): Deleted.

  • page/RenderingUpdateScheduler.cpp:

(WebCore::RenderingUpdateScheduler::scheduleRenderingUpdate):

Source/WebKitLegacy/mac:

  • WebCoreSupport/WebChromeClient.h:
  • WebView/WebViewData.h:
  • WebView/WebViewData.mm:

(WebViewLayerFlushScheduler::schedule):
(WebViewLayerFlushScheduler::layerFlushCallback):

5:44 PM Changeset in webkit [268021] by Simon Fraser
  • 9 edits in trunk/Source/WebCore

Rename scheduleTimedRenderingUpdate() functions related to images
https://bugs.webkit.org/show_bug.cgi?id=217352

Reviewed by Tim Horton.

ImageObserver and CachedImageClient have scheduleTimedRenderingUpdate() so that an SVG image's
Page and trigger rendering updates. Rename these to make it clearer they are image-related,
and remove the "timed" terminology.

  • html/ImageBitmap.cpp:
  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::CachedImageObserver::scheduleRenderingUpdate):
(WebCore::CachedImage::scheduleRenderingUpdate):
(WebCore::CachedImage::CachedImageObserver::scheduleTimedRenderingUpdate): Deleted.
(WebCore::CachedImage::scheduleTimedRenderingUpdate): Deleted.

  • loader/cache/CachedImage.h:
  • loader/cache/CachedImageClient.h:

(WebCore::CachedImageClient::scheduleRenderingUpdateForImage):
(WebCore::CachedImageClient::scheduleTimedRenderingUpdate): Deleted.

  • platform/graphics/ImageObserver.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::scheduleRenderingUpdateForImage):
(WebCore::RenderElement::scheduleTimedRenderingUpdate): Deleted.

  • rendering/RenderElement.h:
  • svg/graphics/SVGImageClients.h:
5:28 PM Changeset in webkit [268020] by weinig@apple.com
  • 3 edits
    3 adds in trunk/Source/WTF

Add implementation of <filesystem> to WTF for macOS 10.14
https://bugs.webkit.org/show_bug.cgi?id=217302

Reviewed by Darin Adler.

Imports a copy of <filesystem> and its needed implementation files
from libc++ (r343838) and modifies them to build outside of libc++.
This is only needed and only built for versions of macOS < 10.15
and can be dropped when we require 10.15.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/StdFilesystem.cpp: Added.
  • wtf/StdFilesystem.h: Added.
  • LICENSE-libc++.txt: Added.
5:15 PM Changeset in webkit [268019] by beidson@apple.com
  • 2 edits in trunk/Source/WebKit

Change a PDF RELEASE_ASSERT to an early return.
rdar://problem/69805240 and https://bugs.webkit.org/show_bug.cgi?id=217346

Reviewed by Tim Horton.

No new tests (Wish they were possible)

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::installPDFDocument): This release assert is getting hit regularly.

Change to an early return while we continue tracking this down.

5:15 PM Changeset in webkit [268018] by Alan Coon
  • 8 edits in branches/safari-610-branch/Source

Versioning.

WebKit-7610.3.1

4:53 PM Changeset in webkit [268017] by achristensen@apple.com
  • 24 edits in trunk/Source/WebKit

Make DownloadID an ObjectIdentifier
https://bugs.webkit.org/show_bug.cgi?id=203962

Reviewed by Youenn Fablet and Geoffrey Garen.

Also deprecate the unused WKDownloadGetID because this identifier is internal.

  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::Download):
(WebKit::Download::didReceiveData):
(WebKit::Download::didFinish):
(WebKit::Download::didFail):
(WebKit::Download::didCancel):
(WebKit::Download::messageSenderDestinationID const):

  • NetworkProcess/Downloads/DownloadID.h:

(WebKit::DownloadID::DownloadID): Deleted.
(WebKit::DownloadID::operator== const): Deleted.
(WebKit::DownloadID::operator!= const): Deleted.
(WebKit::DownloadID::downloadID const): Deleted.
(IPC::ArgumentCoder<WebKit::DownloadID>::encode): Deleted.
(IPC::ArgumentCoder<WebKit::DownloadID>::decode): Deleted.
(WTF::DownloadIDHash::hash): Deleted.
(WTF::DownloadIDHash::equal): Deleted.
(WTF::HashTraits<WebKit::DownloadID>::emptyValue): Deleted.
(WTF::HashTraits<WebKit::DownloadID>::constructDeletedValue): Deleted.
(WTF::HashTraits<WebKit::DownloadID>::isDeletedValue): Deleted.

  • NetworkProcess/Downloads/DownloadMonitor.cpp:

(WebKit::DownloadMonitor::applicationWillEnterForeground):
(WebKit::DownloadMonitor::applicationDidEnterBackground):
(WebKit::DownloadMonitor::timerFired):

  • NetworkProcess/Downloads/PendingDownload.cpp:

(WebKit::PendingDownload::messageSenderDestinationID const):

  • NetworkProcess/Downloads/PendingDownload.h:
  • NetworkProcess/NetworkDataTask.h:

(WebKit::NetworkDataTask::setPendingDownloadID):
(WebKit::NetworkDataTask::isDownload const):

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::pendingDownloadCanceled):
(WebKit::NetworkProcess::findPendingDownloadLocation):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::convertToDownload):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]):
(-[WKNetworkSessionDelegate URLSession:downloadTask:didFinishDownloadingToURL:]):
(-[WKNetworkSessionDelegate URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:]):
(WebKit::NetworkSessionCocoa::continueDidReceiveChallenge):

  • Scripts/webkit/messages.py:
  • Shared/Authentication/AuthenticationManager.h:
  • UIProcess/API/C/WKDownload.cpp:

(WKDownloadGetID):

  • UIProcess/API/C/WKDownload.h:
  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::DownloadProxy):
(WebKit::generateDownloadID): Deleted.

  • UIProcess/Downloads/DownloadProxy.h:
  • UIProcess/Downloads/DownloadProxyMap.cpp:

(WebKit::DownloadProxyMap::createDownloadProxy):
(WebKit::DownloadProxyMap::downloadFinished):
(WebKit::DownloadProxyMap::invalidate):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::startDownload):
(WebKit::WebFrame::convertMainResourceLoadToDownload):

  • WebProcess/WebPage/WebFrame.h:
  • WebProcess/WebPage/WebPage.h:
4:36 PM Changeset in webkit [268016] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught Exception: TypeError: undefined is not an object (evaluating 'error.message')
https://bugs.webkit.org/show_bug.cgi?id=217232
<rdar://problem/69888156>

Patch by Federico Bucchi <Federico Bucchi> on 2020-10-05
Reviewed by Devin Rousso.

Add optional chaining for error to check its existence before using error.message

  • UserInterface/Models/Resource.js:
4:34 PM Changeset in webkit [268015] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix tvOS and watchOS build

  • NetworkProcess/NetworkProcess.cpp:

I noticed it was broken in an EWS build, and it is missing this include.

4:29 PM Changeset in webkit [268014] by Simon Fraser
  • 13 edits in trunk/Source/WebKit

Rename DrawingArea::scheduleRenderingUpdate()
https://bugs.webkit.org/show_bug.cgi?id=217337

Reviewed by Tim Horton.

DrawingArea::scheduleRenderingUpdate() always schedules an "immediate" update (either
on a zero-delay timer, or in the current runloop). To make this more clear, change
the terminology to "triggerRenderingUpdate()."

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::scheduleRenderingUpdate):

  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.cpp:

(WebKit::DrawingAreaCoordinatedGraphics::triggerRenderingUpdate):
(WebKit::DrawingAreaCoordinatedGraphics::scheduleRenderingUpdate): Deleted.

  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h:
  • WebProcess/WebPage/DrawingArea.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:

(WebKit::RemoteLayerTreeDisplayRefreshMonitor::requestRefreshCallback):

  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::setRootCompositingLayer):
(WebKit::RemoteLayerTreeDrawingArea::updateGeometry):
(WebKit::RemoteLayerTreeDrawingArea::setExposedContentRect):
(WebKit::RemoteLayerTreeDrawingArea::triggerRenderingUpdate):
(WebKit::RemoteLayerTreeDrawingArea::didUpdate):
(WebKit::RemoteLayerTreeDrawingArea::addTransactionCallbackID):
(WebKit::RemoteLayerTreeDrawingArea::scheduleRenderingUpdate): Deleted.

  • WebProcess/WebPage/RemoteLayerTree/RemoteScrollingCoordinator.mm:

(WebKit::RemoteScrollingCoordinator::scheduleTreeStateCommit):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::scheduleFullEditorStateUpdate):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::dynamicViewportSizeUpdate):

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::triggerRenderingUpdate):
(WebKit::TiledCoreAnimationDrawingArea::attachViewOverlayGraphicsLayer):
(WebKit::TiledCoreAnimationDrawingArea::setShouldScaleViewToFitDocument):
(WebKit::TiledCoreAnimationDrawingArea::addTransactionCallbackID):
(WebKit::TiledCoreAnimationDrawingArea::activityStateDidChange):
(WebKit::TiledCoreAnimationDrawingArea::scheduleRenderingUpdate): Deleted.

4:29 PM Changeset in webkit [268013] by ysuzuki@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unrevewed, fix crash for ASan debug builds
https://bugs.webkit.org/show_bug.cgi?id=217261

Reviewed by Saam Barati.

This function touches memory region which ASan cannot understand whether this is safe.
And ASan makes pointer fat so that it will see some null pointers.

  • assembler/JITOperationList.cpp:

(JSC::addPointers):

4:15 PM Changeset in webkit [268012] by eric.carlson@apple.com
  • 8 edits in trunk

Disable media capture if an app's entitlements won't allow access to capture devices
https://bugs.webkit.org/show_bug.cgi?id=217319
<rdar://problem/69956112>

Reviewed by Youenn Fablet.

Source/WebKit:

No new tests, tested manually with MiniBrowser and Safari.

  • UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm:

(WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureAudio): If the
app is sandboxed, check for the entitlement required for audio capture. Don't
bother checking for usage string if TCC has already authorized capture.
(WebKit::UserMediaPermissionRequestManagerProxy::permittedToCaptureVideo): Ditto
for video capture.

  • UIProcess/Cocoa/WebPreferencesCocoa.mm:

(WebKit::WebPreferences::platformInitializeStore): Initialize mediaDevicesEnabled
manually because its default value is always false in the WebProcess and may be
true in the UIProcess. WebPreferences assumes the default will always be the same
in both processes, and so has an optimization that only sends values to the
WebProcess if they differ from the default value. This means if the default in the
UIProcess is true it won't be pushed to the WebProcess, so capture won't work.

  • Platform/spi/ios/TCCSPI.h: Update TCCAccessPreflightResult.

Tools:

  • MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
  • MiniBrowser/mac/AppDelegate.m:

(-[BrowserAppDelegate defaultConfiguration]): Don't set configuration._mediaCaptureEnabled,
it should no longer be necessary.

  • MiniBrowser/mac/Info.plist: Remove unneeded keys.
  • MobileMiniBrowser/MobileMiniBrowser/Info.plist: Ditto. Add usage strings.
4:11 PM Changeset in webkit [268011] by Russell Epstein
  • 1 copy in tags/Safari-611.1.2

Tag Safari-611.1.2.

3:40 PM Changeset in webkit [268010] by Russell Epstein
  • 1 copy in tags/Safari-610.2.8.0.1

Tag Safari-610.2.8.0.1.

3:38 PM Changeset in webkit [268009] by Alan Coon
  • 8 edits
    2 adds in branches/safari-610-branch

Cherry-pick r266909. rdar://problem/69101091

Source/WebCore:
Text replacements at the beginning of a second line are replaced too early
https://bugs.webkit.org/show_bug.cgi?id=216327
<rdar://problem/68170353>

Reviewed by Darin Adler.

In the changes in r258871, using SimpleRanges instead of Range causing some side effects
when the replacements at the beginning of lines. The ranges that we are counting are backwards
and the return characters are being counted instead of being ignored. There is almost
certainly a better fix than this, but this patch restores the original logic that
was present when Range was being used, until a better fix can be worked out.

Test: editing/spelling/text-replacement-first-word-second-line.html

  • editing/Editor.cpp: (WebCore::Editor::markAndReplaceFor):
  • editing/TextCheckingHelper.cpp: (WebCore::TextCheckingParagraph::automaticReplacementStart const): (WebCore::TextCheckingParagraph::automaticReplacementLength const):
  • editing/TextCheckingHelper.h:

LayoutTests:
Overlapping text replacements at the beginning of a line are replaced too early
https://bugs.webkit.org/show_bug.cgi?id=216327

Reviewed by Darin Adler.

  • editing/spelling/text-replacement-first-word-second-line-expected.txt: Added.
  • editing/spelling/text-replacement-first-word-second-line.html: Added.

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

3:38 PM Changeset in webkit [268008] by achristensen@apple.com
  • 13 edits in trunk/Source/WebKit

Use sendWithAsyncReply for DecideDestinationWithSuggestedFilename
https://bugs.webkit.org/show_bug.cgi?id=209195

Reviewed by Tim Horton.

This makes the download flow more clear.
No change in behavior.

  • NetworkProcess/Downloads/DownloadID.h:
  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::downloadDestinationDecided):
(WebKit::DownloadManager::cancelDownload):
(WebKit::DownloadManager::willDecidePendingDownloadDestination): Deleted.
(WebKit::DownloadManager::continueDecidePendingDownloadDestination): Deleted.

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::findPendingDownloadLocation):
(WebKit::NetworkProcess::continueDecidePendingDownloadDestination): Deleted.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • Scripts/webkit/messages.py:
  • Shared/Authentication/AuthenticationManager.h:
  • UIProcess/API/APIDownloadClient.h:
  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::decideDestinationWithSuggestedFilename):
(WebKit::DownloadProxy::decideDestinationWithSuggestedFilenameAsync): Deleted.

  • UIProcess/Downloads/DownloadProxy.h:
  • UIProcess/Downloads/DownloadProxy.messages.in:
3:27 PM Changeset in webkit [268007] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed assertion fix after r268006.

  • platform/audio/VectorMath.cpp:

(WebCore::VectorMath::vsvesq):

3:03 PM Changeset in webkit [268006] by Chris Dumez
  • 11 edits in trunk

[Cocoa] Vectorize linear to decibels conversion in RealtimeAnalyser
https://bugs.webkit.org/show_bug.cgi?id=217322

Reviewed by Darin Adler.

Source/WebCore:

Vectorize linear to decibels conversion in RealtimeAnalyser on Cocoa ports for
performance.

No new tests, no web-facing behavior change.

  • Modules/webaudio/RealtimeAnalyser.cpp:

(WebCore::RealtimeAnalyser::getFloatFrequencyData):

  • platform/audio/VectorMath.cpp:

(WebCore::VectorMath::linearToDecibels):

  • platform/audio/VectorMath.h:

LayoutTests:

Slightly increase the error threshold in a few WebAudio tests because the vectorization
output for linear to decibels conversion is not quite identical to our previous output
(although very close).

  • webaudio/Analyser/realtimeanalyser-downmix-expected.txt:
  • webaudio/Analyser/realtimeanalyser-downmix.html:
  • webaudio/Analyser/realtimeanalyser-fftsize-reset-expected.txt:
  • webaudio/Analyser/realtimeanalyser-fftsize-reset.html:
  • webaudio/Analyser/realtimeanalyser-freq-data-expected.txt:
  • webaudio/Analyser/realtimeanalyser-freq-data.html:
2:44 PM Changeset in webkit [268005] by Peng Liu
  • 2 edits in trunk/LayoutTests

Update TestExpectations for layout tests related to GPU process features
https://bugs.webkit.org/show_bug.cgi?id=217326

Unreviewed test gardening.

  • gpu-process/TestExpectations:
2:35 PM Changeset in webkit [268004] by keith_miller@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Add JSC option to trigger a hardware breakpoint when debugger expressions are reached.
https://bugs.webkit.org/show_bug.cgi?id=217334

Reviewed by Yusuke Suzuki.

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::debug):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::defaultCodeGenerationMode const):

  • runtime/OptionsList.h:
2:34 PM Changeset in webkit [268003] by ddkilzer@apple.com
  • 6 edits in trunk/Source

Make NetscapePlugInStreamLoaderClient a weak pointer on NetscapePlugInStreamLoader
<https://webkit.org/b/217237>
<rdar://problem/69776714>

Reviewed by Alex Christensen.

Source/WebCore:

Could not write a test since reproducing a crash requires
rapidly reloading a URL to a PDF at random points during the
previous load.

Make NetscapePlugInStreamLoaderClient a WeakPtr on
NetscapePlugInStreamLoader, and add nullptr checks for
NetscapePlugInStreamLoader.m_client as needed.

  • loader/NetscapePlugInStreamLoader.cpp:

(WebCore::NetscapePlugInStreamLoader::NetscapePlugInStreamLoader):
(WebCore::NetscapePlugInStreamLoader::willSendRequest):
(WebCore::NetscapePlugInStreamLoader::didReceiveResponse):
(WebCore::NetscapePlugInStreamLoader::didReceiveDataOrBuffer):
(WebCore::NetscapePlugInStreamLoader::didFinishLoading):
(WebCore::NetscapePlugInStreamLoader::didFail):
(WebCore::NetscapePlugInStreamLoader::willCancel):

  • loader/NetscapePlugInStreamLoader.h:

Source/WebKit:

Making NetscapePlugInStreamLoaderClient inherit from
CanMakeWeakPtr<> caused PDFPlugin to fail to compile because one
of its parent classes already inherited from CanMakeWeakPtr<>.
To fix this, extract a PDFPluginStreamLoaderClient class from
PDFPlugin and link the lifetime of PDFPluginStreamLoaderClient
to PDFPlugin.

After moving the NetscapePlugInStreamLoaderClient virtual
methods from PDFPlugin to PDFPluginStreamLoaderClient, add some
simple methods to PDFPlugin so that PDFPluginStreamLoaderClient
doesn't access the instance variables directly. Also make use
of these new methods in other parts of PDFPlugin.

  • WebProcess/Plugins/PDF/PDFPlugin.h:

(WebKit::PDFPlugin::documentFinishedLoading): Add.
(WebKit::PDFPlugin::identifierForLoader): Add.
(WebKit::PDFPlugin::removeOutstandingByteRangeRequest): Add.
(WebKit::PDFPlugin::PDFPluginStreamLoaderClient): Add class.

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::PDFPlugin):
(WebKit::PDFPlugin::receivedNonLinearizedPDFSentinel):
(WebKit::PDFPlugin::getResourceBytesAtPosition):
(WebKit::PDFPlugin::PDFPluginStreamLoaderClient::willSendRequest): Move from PDFPlugin.
(WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didReceiveResponse): Ditto.
(WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didReceiveData): Ditto.
(WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didFail): Ditto.
(WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didFinishLoading): Ditto.
(WebKit::PDFPlugin::byteRangeRequestForLoader):
(WebKit::PDFPlugin::forgetLoader):
(WebKit::PDFPlugin::willSendRequest): Move to PDFPluginStreamLoaderClient.
(WebKit::PDFPlugin::didReceiveResponse): Ditto.
(WebKit::PDFPlugin::didReceiveData): Ditto.
(WebKit::PDFPlugin::didFail): Ditto.
(WebKit::PDFPlugin::didFinishLoading): Ditto.

2:29 PM Changeset in webkit [268002] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Use memset to zero vectors in PeriodicWave::createBandLimitedTables()
https://bugs.webkit.org/show_bug.cgi?id=217328

Reviewed by Darin Adler.

Use memset to zero vectors in PeriodicWave::createBandLimitedTables() instead of a for
loop, for performance reasons.

No new tests, no Web-facing behavior change.

  • Modules/webaudio/PeriodicWave.cpp:

(WebCore::PeriodicWave::createBandLimitedTables):

2:15 PM Changeset in webkit [268001] by Chris Dumez
  • 25 edits in trunk/Source/WebCore

Use tryHoldLock() in WebAudio to simplify the code
https://bugs.webkit.org/show_bug.cgi?id=217332

Reviewed by Darin Adler.

Use tryHoldLock() in WebAudio to simplify the code a bit.

No new tests, no Web-facing behavior change.

  • Modules/webaudio/AudioBufferSourceNode.cpp:

(WebCore::AudioBufferSourceNode::process):
(WebCore::AudioBufferSourceNode::setBuffer):
(WebCore::AudioBufferSourceNode::startPlaying):
(WebCore::AudioBufferSourceNode::adjustGrainParameters):

  • Modules/webaudio/AudioBufferSourceNode.h:
  • Modules/webaudio/AudioParamTimeline.cpp:

(WebCore::AudioParamTimeline::setValueAtTime):
(WebCore::AudioParamTimeline::linearRampToValueAtTime):
(WebCore::AudioParamTimeline::exponentialRampToValueAtTime):
(WebCore::AudioParamTimeline::setTargetAtTime):
(WebCore::AudioParamTimeline::setValueCurveAtTime):
(WebCore::AudioParamTimeline::insertEvent):
(WebCore::AudioParamTimeline::cancelScheduledValues):
(WebCore::AudioParamTimeline::cancelAndHoldAtTime):
(WebCore::AudioParamTimeline::valueForContextTime):
(WebCore::AudioParamTimeline::valuesForTimeRange):

  • Modules/webaudio/AudioParamTimeline.h:
  • Modules/webaudio/ConvolverNode.cpp:

(WebCore::ConvolverNode::process):
(WebCore::ConvolverNode::setBuffer):

  • Modules/webaudio/ConvolverNode.h:
  • Modules/webaudio/MediaElementAudioSourceNode.cpp:

(WebCore::MediaElementAudioSourceNode::process):

  • Modules/webaudio/MediaStreamAudioSourceNode.cpp:

(WebCore::MediaStreamAudioSourceNode::setFormat):
(WebCore::MediaStreamAudioSourceNode::process):

  • Modules/webaudio/MediaStreamAudioSourceNode.h:
  • Modules/webaudio/OscillatorNode.cpp:

(WebCore::OscillatorNode::process):
(WebCore::OscillatorNode::setPeriodicWave):

  • Modules/webaudio/OscillatorNode.h:
  • Modules/webaudio/PannerNode.cpp:

(WebCore::PannerNode::process):
(WebCore::PannerNode::setPanningModel):
(WebCore::PannerNode::setPosition):
(WebCore::PannerNode::setOrientation):
(WebCore::PannerNode::setDistanceModel):
(WebCore::PannerNode::setRefDistance):
(WebCore::PannerNode::setMaxDistance):
(WebCore::PannerNode::setRolloffFactor):
(WebCore::PannerNode::setConeOuterGain):
(WebCore::PannerNode::setConeOuterAngle):
(WebCore::PannerNode::setConeInnerAngle):

  • Modules/webaudio/PannerNode.h:
  • Modules/webaudio/ScriptProcessorNode.cpp:

(WebCore::ScriptProcessorNode::process):

  • Modules/webaudio/WaveShaperProcessor.cpp:

(WebCore::WaveShaperProcessor::setCurve):
(WebCore::WaveShaperProcessor::setOversample):
(WebCore::WaveShaperProcessor::process):

  • Modules/webaudio/WaveShaperProcessor.h:
  • Modules/webaudio/WebKitAudioPannerNode.cpp:

(WebCore::WebKitAudioPannerNode::process):
(WebCore::WebKitAudioPannerNode::setPanningModel):

  • Modules/webaudio/WebKitAudioPannerNode.h:
  • platform/audio/ReverbConvolver.cpp:

(WebCore::ReverbConvolver::~ReverbConvolver):
(WebCore::ReverbConvolver::backgroundThreadEntry):
(WebCore::ReverbConvolver::process):

  • platform/audio/ReverbConvolver.h:
  • platform/audio/cocoa/AudioDestinationCocoa.cpp:

(WebCore::AudioDestinationCocoa::render):

  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:

(WebCore::AudioSourceProviderAVFObjC::~AudioSourceProviderAVFObjC):
(WebCore::AudioSourceProviderAVFObjC::provideInput):
(WebCore::AudioSourceProviderAVFObjC::finalizeCallback):
(WebCore::AudioSourceProviderAVFObjC::prepareCallback):
(WebCore::AudioSourceProviderAVFObjC::unprepareCallback):
(WebCore::AudioSourceProviderAVFObjC::processCallback):

  • platform/mediastream/mac/WebAudioSourceProviderAVFObjC.h:
  • platform/mediastream/mac/WebAudioSourceProviderAVFObjC.mm:

(WebCore::WebAudioSourceProviderAVFObjC::~WebAudioSourceProviderAVFObjC):
(WebCore::WebAudioSourceProviderAVFObjC::provideInput):
(WebCore::WebAudioSourceProviderAVFObjC::prepare):
(WebCore::WebAudioSourceProviderAVFObjC::unprepare):

1:55 PM Changeset in webkit [268000] by eocanha@igalia.com
  • 2 edits in trunk/Source/WebCore

[GTK][X11] WebProcess crash in WebCore::GLContextGLX::createPbufferContext() with NVidia proprietary drivers
https://bugs.webkit.org/show_bug.cgi?id=217323

Reviewed by Adrian Perez de Castro.

The returnedElements variable might remain uninitialized if the glXChooseFBConfig()
function call fails, leading to execution of the wrong code branch later.

  • platform/graphics/glx/GLContextGLX.cpp:

(WebCore::GLContextGLX::createPbufferContext): Initialized the returnedElements variable.

1:24 PM Changeset in webkit [267999] by commit-queue@webkit.org
  • 11 edits
    1 move
    1 add
    1 delete in trunk

REGRESSION(r267763) [SOUP] Some tests flaky crashing in NetworkSessionSoup::soupSession()
https://bugs.webkit.org/show_bug.cgi?id=217163

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2020-10-05
Reviewed by Alex Christensen.

Source/WebCore:

Stop using libsoup for DNS resolver. The libsoup APIs are actually using the GLib networking APIs, and the don't
really use the SoupSession. Rename DNSResolveQueueSoup as DNSResolveQueueGLib and use the GLib API instead.

  • PlatformGTK.cmake:
  • PlatformWPE.cmake:
  • platform/Soup.cmake:
  • platform/SourcesGLib.txt:
  • platform/SourcesSoup.txt:
  • platform/network/DNSResolveQueue.cpp:
  • platform/network/glib/DNSResolveQueueGLib.cpp: Added.

(WebCore::didResolveProxy):
(WebCore::proxyResolvedForHttpUriCallback):
(WebCore::proxyResolvedForHttpsUriCallback):
(WebCore::DNSResolveQueueGLib::updateIsUsingProxy):
(WebCore::DNSResolveQueueGLib::platformResolve):
(WebCore::DNSResolveQueueGLib::resolve):
(WebCore::DNSResolveQueueGLib::stopResolve):

  • platform/network/glib/DNSResolveQueueGLib.h: Renamed from Source/WebCore/platform/network/soup/DNSResolveQueueSoup.h.
  • platform/network/soup/DNSResolveQueueSoup.cpp: Removed.

Source/WebKit:

Remove code to set the SoupSession on DNSResolveQueue.

  • NetworkProcess/NetworkProcess.cpp:

LayoutTests:

Remove expectations for tests that should pass now.

  • platform/glib/TestExpectations:
1:03 PM Changeset in webkit [267998] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught Exception: TypeError: undefined is not an object (evaluating 'breakpoint.disabled = true')
https://bugs.webkit.org/show_bug.cgi?id=217241

Reviewed by Brian Burg.

  • UserInterface/Controllers/DOMManager.js:

(WI.DOMManager.prototype.removeBreakpointForEventListener):
It's possible for there to not be a breakpoint for a given event listener.

12:57 PM Changeset in webkit [267997] by Darin Adler
  • 19 edits
    6 deletes in trunk/LayoutTests

Selection API: Fix more editing tests that rely on non-standard selection API behavior
https://bugs.webkit.org/show_bug.cgi?id=217301

Reviewed by Sam Weinig.

These changes do not change what the tests are testing. They remove
dependencies in these tests on "canonicalization" of selection points.
This is often always a change to the setup for the test, not the test substance.

In other cases, tests that are not trying to test selection are leaving unimportant
remnants of the selection in their results: clear the selection for those.

Patch also includes a few other expectations fixes so all the tests in the editing
directory pass for me on my development machine.

  • editing/pasteboard/copy-null-characters-expected.txt: Remove expected selection.
  • editing/pasteboard/copy-null-characters.html: Clear the selection after one part

of this test so the markup dump doesn't contain selection endpoints.

  • editing/pasteboard/paste-noscript-xhtml-expected.txt: Remove expected selection.
  • editing/pasteboard/paste-noscript-xhtml.xhtml: Clear the selection at two points

in this test so the markup dump doesn't contain selection endpoints.

  • editing/selection/extend-by-sentence-002.html: Check the selected string rather

than checking the DOM node and offset of the selection. Keeps the substance of this
test without depending on the selection object selecting differently than what we
tell it to do.

  • editing/selection/extend-selection-enclosing-block-mac.html: Set the position

at the start of a text node instead of before the text node.

  • editing/selection/extend-selection-enclosing-block-win.html: Ditto.
  • editing/selection/home-end.html: Added a setPositionAfterLeadingWhitespace

function and use it to set the position at the point the test results are
expecting. Before this change, the code relied on the Selection API to adjust the
selection to the first non-whitespace character, even though that is both non-standard
and not what we are testing. Doing this lets us keep the expected test results the same.

  • editing/selection/move-by-word-visually-multi-line-expected.txt: Updated to

expect moving across the word, even the one that was preceded by a collapsed newline.

  • editing/selection/move-by-word-visually-multi-line.html: Ditto.
  • editing/selection/resources/extend-selection.js:

(setPositionAfterLeadingWhitespace): Added.
(runSelectionTestsWithGranularity): Use setPositionAfterLeadingWhitespace here
for the same purpose as in home-end.html above, to preserve the existing tests
without relying on non-standard Selection API behavior.

  • editing/selection/resources/move-by-word-visually.js:

(setPositionAfterCollapsedLeadingWhitespace): Added.
(moveByWordForEveryPosition): Same as above, use the function.

  • editing/selection/setBaseAndExtent-revert-selection.html: Fix the output function

to properly write out the node ID when the node is a text node within the node with
the ID. Before, the test could fail if the anchor node returned the text node we
passed in, but that relies on non-standard Selection API changes to the passed-in node.

  • editing/selection/toString-1.html: Write out the unexpected result when the test

fails. It's not failing, but at one point it was, and this made it easier to diagnose.

  • editing/undo/undo-after-event-edited.html: Use the Delete command to do a deletion

that we later undo. The old code was using the Selection API extractContents method,
which is not an undoable editing operation.

  • platform/gtk/editing/pasteboard/drop-text-without-selection-expected.txt: Removed.
  • platform/ios/editing/pasteboard/drop-text-without-selection-expected.txt: Removed.
  • platform/mac-bigsur-wk1/editing/pasteboard/drop-text-without-selection-expected.txt: Removed.
  • platform/mac-bigsur/editing/pasteboard/drop-text-without-selection-expected.txt: Removed.
  • platform/win/editing/pasteboard/drop-text-without-selection-expected.txt: Removed.
  • platform/wincairo/editing/pasteboard/drop-text-without-selection-expected.txt: Removed.

These unused files were incorrectly left behind when we converted this into a reftest.

  • platform/mac-wk1/TestExpectations: Changed retro-correction-spelling-markers.html

to "[ Pass Failure ]" since it's a flaky test, not a reliable failure.

  • platform/mac/TestExpectations: Changed some flakiness expectations that were marked

Release-only to be in effect in Debug builds too. For autocorrection-contraction.html,
expect a timeout on BigSur+ Debug. Not sure exactly what is causing it, but it's happening
both locally for me and on the bots.

  • platform/wk2/TestExpectations: Expect a timeout in Debug builds for two tests that are

timing out both for me and on the Modern WebKit Debug bots, but not Legacy WebKit and not
Release bots.

12:56 PM Changeset in webkit [267996] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit

Unreviewed, reverting r267986.
https://bugs.webkit.org/show_bug.cgi?id=217329

Introduced layout test failures

Reverted changeset:

"[Cocoa] Reduce time waiting for Launch Services database"
https://bugs.webkit.org/show_bug.cgi?id=217253
https://trac.webkit.org/changeset/267986

12:36 PM Changeset in webkit [267995] by achristensen@apple.com
  • 47 edits in trunk

WebKit doesn't parse "#" as delimiter for fragment identifier in data URIs
https://bugs.webkit.org/show_bug.cgi?id=68089

Patch by Rob Buis <rbuis@igalia.com> on 2020-10-05
Reviewed by Alex Christensen, Ryosuke Niwa, and Darin Adler.

LayoutTests/imported/w3c:

Update improved test results.

  • web-platform-tests/fetch/data-urls/processing.any-expected.txt:
  • web-platform-tests/fetch/data-urls/processing.any.worker-expected.txt:
  • web-platform-tests/url/data-uri-fragment-expected.txt:

Source/WebCore:

To maintain compatibility with existing iOS and macOS apps, we only do this for apps linked
with the SDK after the change.

Covered by newly passing web platform tests (which Chrome and Firefox already passed).

  • loader/ResourceLoader.cpp:

(WebCore::shouldStripFragmentIdentifier):
(WebCore::ResourceLoader::loadDataURL):

  • platform/cocoa/VersionChecks.h:

Source/WTF:

  • wtf/URL.h:
  • wtf/spi/darwin/dyldSPI.h:

LayoutTests:

Adjusts tests thats use data URIs to escape the # character.

  • accessibility/ios-simulator/iframe-access.html:
  • accessibility/ios-simulator/unobscured-content-rect.html:
  • accessibility/resources/iframe.html:
  • accessibility/scroll-to-global-point-iframe.html:
  • accessibility/scroll-to-make-visible-iframe-offscreen.html:
  • accessibility/scroll-to-make-visible-iframe.html:
  • css3/blending/background-blend-mode-crossfade-image.html:
  • css3/blending/background-blend-mode-data-uri-svg-image.html:
  • css3/blending/background-blend-mode-tiled-layers.html:
  • css3/flexbox/flexitem.html:
  • css3/shapes/shape-outside/shape-image/shape-image-002.html:
  • css3/shapes/shape-outside/shape-image/shape-image-005.html:
  • editing/pasteboard/data-transfer-set-data-sanitize-url-when-copying-in-null-origin.html:
  • editing/pasteboard/data-transfer-set-data-sanitize-url-when-dragging-in-null-origin.html:
  • fast/css-grid-layout/grid-item-display.html:
  • fast/css/import-style-update.html:
  • fast/css/link-media-attr.html:
  • fast/dom/HTMLLinkElement/link-stylesheet-media-type.html:
  • fast/events/attribute-listener-cloned-from-frameless-doc-context-2.html:
  • fast/events/attribute-listener-cloned-from-frameless-doc-context.html:
  • fast/events/attribute-listener-extracted-from-frameless-doc-context-2.html:
  • fast/events/attribute-listener-extracted-from-frameless-doc-context.html:
  • fast/hidpi/image-srcset-data-escaped-srcset.html:
  • fast/html/link-rel-stylesheet.html:
  • fast/loader/data-url-encoding-html.html:
  • fast/loader/data-url-encoding-svg.html:
  • fast/spatial-navigation/resources/iframe.html:
  • http/tests/security/top-level-unique-origin.https.html:
  • platform/ios/css3/flexbox/flexitem-expected.txt:
  • platform/win/css3/flexbox/flexitem-expected.txt:
  • security/contentSecurityPolicy/link-with-data-url-allowed-by-style-src-star-with-AllowContentSecurityPolicySourceStarToMatchAnyProtocol-enabled.html:
  • svg/animations/css-animation-background-svg.html:
  • svg/animations/css-animation-embedded-svg.html:
  • svg/animations/css-animation-hover-svg.html:
  • svg/as-image/svg-canvas-data-url-svg-with-feimage-not-tainted.html:
  • svg/custom/object-data-href.html:
12:31 PM Changeset in webkit [267994] by svillar@igalia.com
  • 4 edits in trunk/LayoutTests

[css-flex] Fix expectations of a test which is actually passing
https://bugs.webkit.org/show_bug.cgi?id=217318

Reviewed by Manuel Rego Casasnovas.

LayoutTests/imported/w3c:

  • web-platform-tests/css/css-flexbox/padding-overflow-crash-expected.html: Added a missing " only"

to match the string used in the test.

LayoutTests:

  • TestExpectations: Removed a padding-overflow-crash.html which is actually passing.
12:23 PM Changeset in webkit [267993] by Alan Coon
  • 23 edits
    3 adds in branches/safari-610.2.8.0-branch

Cherry-pick r267869. rdar://problem/69963917

[iOS WK1] Crashes when using ANGLE WebGL from another thread
https://bugs.webkit.org/show_bug.cgi?id=216106
<rdar://problem/68602452>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-10-02
Reviewed by Kenneth Russell.

Source/ThirdParty/ANGLE:

Add two extensions for EAGL and CGL backends to declare the
underlying platform context being "volatile". It means that
the thread-global current context is being modified behind
ANGLE. If ANGLE context is marked volatile for a particular
API, it will sync the underlying context for every EGL
function that needs the context. Most intuitive use is
for the client to call eglMakeCurrent before calling any
gl function if the client knowns the platform state might
be dirty.

Implement eglReleaseThread for EAGL and CGL backends.
Releasing thread will unset the platform current context.

Fix a bug of omitting EGL_ANGLE_device_eagl from being
advertised.

  • extensions/EGL_ANGLE_platform_angle_device_context_volatile_cgl.txt: Added.
  • extensions/EGL_ANGLE_platform_angle_device_context_volatile_eagl.txt: Added.
  • include/EGL/eglext_angle.h:
  • src/libANGLE/Caps.cpp: (egl::DeviceExtensions::getStrings const): (egl::ClientExtensions::getStrings const):
  • src/libANGLE/Caps.h:
  • src/libANGLE/Display.cpp: (egl::Display::prepareForCall): (egl::Display::releaseThread): (egl::GenerateClientExtensions):
  • src/libANGLE/Display.h:
  • src/libANGLE/renderer/DisplayImpl.cpp: (rx::DisplayImpl::prepareForCall): (rx::DisplayImpl::releaseThread):
  • src/libANGLE/renderer/DisplayImpl.h:
  • src/libANGLE/renderer/gl/cgl/DisplayCGL.h:
  • src/libANGLE/renderer/gl/cgl/DisplayCGL.mm: (rx::DisplayCGL::initialize): (rx::DisplayCGL::terminate): (rx::DisplayCGL::prepareForCall): (rx::DisplayCGL::releaseThread): (rx::DisplayCGL::makeCurrent):
  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.h:
  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm: (rx::DisplayEAGL::initialize): (rx::DisplayEAGL::terminate): (rx::DisplayEAGL::prepareForCall): (rx::DisplayEAGL::releaseThread):
  • src/libANGLE/validationEGL.cpp:
  • src/libGLESv2/entry_points_egl.cpp:
  • src/libGLESv2/entry_points_egl_ext.cpp:

Source/WebCore:

Source of the bug comes from following:

  • WK1 might run WebKit code in client main thread.
  • WK1 might run Webkit code in web thread.
  • WebKit code might run WebGL payload, notably access GraphicsContextGL classes. Client is able to modify EAGL/CGL current context.

The change to ANGLE incurred two distinct behavior changes
compared to raw EAGL / CGL:
1) Before: context was set current before any GL call
After: context was set current only if EGL current context
had been changed. (Explicit code as well as ANGLE implementation
optimization.)

2) Before: context being used was able to be current in
multiple threads at the same time. (EAGL/CGL feature)
After: context cannot be current in multiple threads
at the same time. (EGL feature)

Change in behavior 1) caused ANGLE to sometimes use
the EAGL/CGL context of the client instead of
the real context that ANGLE created.
Fix this by introducing
EGL_ANGLE_platform_angle_device_context_volatile_eagl
and
EGL_ANGLE_platform_angle_device_context_volatile_cgl
which make ANGLE sync the context on each eglMakeCurrent
eglReleaseThread and eglTerminate.

Change in behavior 2) caused ANGLE to use uninitialized
context object from one thread, if the real context object
was current in another thread.
Fix this by considering "GraphicsContextGLOpenGL current context"
as part of "data that is owned by WebCoreThread lock".
The current context is set with lock held, implicitly.
The current context is released when lock is released.
When the lock is not held, GraphicsContextGLOpenGL current context
is nullptr.

Adds soft linking for EAGL for the purpose of testing this in
TestWebKitAPI. The case of Apple Silicon Mac may sometimes
use CGL and sometimes EAGL, and the test should test that
client overriding both contexts will not cause problems.

Fix ANGLE header include path:

  • Do not include ANGLE in the path, as files are included with ANGLE/
  • Add WK_ALTERNATE_FRAMEWORKS_DIR so that SDK_VARIANT=iosmac e.g. maccatalyst builds work

Previously the ANGLE was not included from ThirdParty/ANGLE, rather
"WebKit SDK".

  • Configurations/WebCore.xcconfig:
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm: (WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL): (WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL): (WebCore::GraphicsContextGLOpenGL::makeContextCurrent): (WebCore::GraphicsContextGLOpenGL::releaseCurrentContext): (WebCore::GraphicsContextGLOpenGL::checkGPUStatus): (WebCore::GraphicsContextGLOpenGL::allowOfflineRenderers const):
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/ios/wak/WebCoreThread.mm: (WebThreadUnlockFromAnyThread): (_WebThreadUnlock):

Tools:

Add a WK1 test which runs WebGL code both in
client main thread and in web thread.
This tests the case where ANGLE EGL context is
not being held current in one thread while the
other thread runs WebGL and thus ANGLE EGL code.

  • TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitLegacy/ios/WebGLNoCrashOnOtherThreadAccess.mm: Added. (-[WebGLNoCrashOnOtherThreadAccessWebViewDelegate webViewDidFinishLoad:]): (-[WebGLNoCrashOnOtherThreadAccessWebViewDelegate webView:shouldStartLoadWithRequest:navigationType:]): (TestWebKitAPI::TEST):

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

12:23 PM Changeset in webkit [267992] by Alan Coon
  • 45 edits
    1 move
    8 adds in branches/safari-610.2.8.0-branch/Source

Cherry-pick r267602. rdar://problem/69963917

WebGL should use GLES in iOS apps running on Apple Silicon
https://bugs.webkit.org/show_bug.cgi?id=216722
<rdar://problem/68976337>

Reviewed by Tim Horton and Ken Russell.

Source/ThirdParty/ANGLE:

Change ANGLE to dynamically load either EAGL (OpenGLES) or CGL (OpenGL) depending
on both compile and runtime configurations.

Intel Mac -> CGL
Intel Mac Catalyst -> CGL
Intel iOS Simulator -> EAGL
iOS Device -> EAGL
Apple Silicon Mac -> CGL
Apple Silicon Mac Catalyst (with Mac app) -> CGL
Apple Silicon Mac Catalyst (with iOS app) -> EAGL

The trickiest bit is Apple Silicon Mac Catalyst, which depends on the
type of the application it is attempting to run. In that case ANGLE must compile
both the CGL and EAGL interfaces and then pick one to use after launch.

  • ANGLE.xcodeproj/project.pbxproj: Add new files.
  • Configurations/ANGLE-dynamic.xcconfig: Remove all the OpenGL* linking.
  • Configurations/ANGLE-static.xcconfig:
  • GLESv2.cmake: New files.
  • src/common/platform.h: New definitions for CPU type on Apple Systems.
  • src/gpu_info_util/SystemInfo.h: Split SystemInfo for Apple into two files, for iOS and Mac. Added a field for isiOSAppOnMac that will only be true when running an iOS binary on Apple Silicon.
  • src/gpu_info_util/SystemInfo_apple.mm: Added. Decides which SystemInfo to call. (angle::GetSystemInfo):
  • src/gpu_info_util/SystemInfo_ios.cpp: (angle::GetSystemInfo_ios): (angle::GetSystemInfo): Deleted.
  • src/gpu_info_util/SystemInfo_macos.mm: (angle::GetSystemInfo_mac): (angle::GetSystemInfo): Deleted.
  • src/libANGLE/Caps.cpp: Can no longer just check for PLATFORM_IOS. This might still need a runtime check. (gl::DetermineDepthTextureANGLESupport): (gl::DetermineDepthTextureOESSupport):
  • src/libANGLE/Display.cpp: This is the main initialization point for ANGLE, which decides at compile/runtime which variant of Display to create.
  • src/libANGLE/formatutils.cpp: Add the correct formats. (gl::BuildInternalFormatInfoMap):
  • src/libANGLE/renderer/gl/SoftLinking_apple.h: Added. Macros to help soft-link functions and ObjC classes.
  • src/libANGLE/renderer/gl/cgl/CGLFunctions.cpp: Added. Where we soft-link all the OpenGL/CGL API.
  • src/libANGLE/renderer/gl/cgl/CGLFunctions.h: Added.
  • src/libANGLE/renderer/gl/cgl/DisplayCGL.mm: Use the soft-linked methods.
  • src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp:
  • src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.h:
  • src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm: Rename WebSwapLayer to WebSwapLayerCGL otherwise it clashes with the EAGL version. (rx::WindowSurfaceCGL::initialize): (-[WebSwapLayer initWithSharedState:withContext:withFunctions:]): Deleted. (-[WebSwapLayer copyCGLPixelFormatForDisplayMask:]): Deleted. (-[WebSwapLayer copyCGLContextForPixelFormat:]): Deleted. (-[WebSwapLayer canDrawInCGLContext:pixelFormat:forLayerTime:displayTime:]): Deleted. (-[WebSwapLayer drawInCGLContext:pixelFormat:forLayerTime:displayTime:]): Deleted.
  • src/libANGLE/renderer/gl/eagl/DeviceEAGL.cpp: Similar changes to the CGL implementation.
  • src/libANGLE/renderer/gl/eagl/DeviceEAGL.h:
  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.h:
  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm: (rx::DisplayEAGL::initialize): (rx::DisplayEAGL::terminate): (rx::WorkerContextEAGL::~WorkerContextEAGL): (rx::WorkerContextEAGL::makeCurrent): (rx::WorkerContextEAGL::unmakeCurrent): (rx::DisplayEAGL::createWorkerContext):
  • src/libANGLE/renderer/gl/eagl/EAGLFunctions.h: Added.
  • src/libANGLE/renderer/gl/eagl/EAGLFunctions.mm: Added.
  • src/libANGLE/renderer/gl/eagl/IOSurfaceSurfaceEAGL.mm:
  • src/libANGLE/renderer/gl/eagl/PbufferSurfaceEAGL.cpp:
  • src/libANGLE/renderer/gl/eagl/RendererEAGL.cpp:
  • src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.h:
  • src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm: (-[WebSwapLayerEAGL display]): (rx::WindowSurfaceEAGL::initialize): (-[WebSwapLayer initWithSharedState:withContext:withFunctions:]): Deleted. (-[WebSwapLayer display]): Deleted.
  • src/libANGLE/renderer/gl/renderergl_utils.cpp: Runtime check. (rx::nativegl_gl::GenerateCaps):

Source/WebCore:

  • Configurations/WebCore.xcconfig: Remove all OpenGL/OpenGLES linking.
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/GraphicsContextGL.h: Change the ANGLE IOSurface texture binding enums into functions, because they have to be calculated at run-time.
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm: Use the new soft-linked functions from PAL. Also implement the IOSurface texture binding helpers that were previously enums.
  • platform/mac/PlatformScreenMac.mm:
  • platform/mac/WebGLBlocklist.mm:

Source/WebCore/PAL:

Add soft-linking content for OpenGL/OpenGLES.

  • PAL.xcodeproj/project.pbxproj:
  • pal/PlatformMac.cmake:
  • pal/cocoa/OpenGLSoftLinkCocoa.h: Added.
  • pal/cocoa/OpenGLSoftLinkCocoa.mm: Added.

Source/WebKit:

  • Configurations/WebKit.xcconfig: Remove OpenGL linking.
  • UIProcess/mac/HighPerformanceGPUManager.mm: Renamed to .mm. Use the PAL soft-linked OpenGL API.

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

12:14 PM Changeset in webkit [267991] by Alan Coon
  • 8 edits in branches/safari-610.2.8.0-branch/Source

Versioning.

WebKit-7610.2.8.0.1

12:13 PM Changeset in webkit [267990] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GLIB] Remove two WebGL tests crashing that are passing since r266809.

Unreviewed test gardening.

Also emit GLIB baseline for webgl/1.0.3/conformance/context/context-lost-restored.html.

  • platform/glib/TestExpectations:
  • platform/glib/webgl/1.0.3/conformance/context/context-lost-restored-expected.txt:
12:01 PM Changeset in webkit [267989] by Alan Coon
  • 1 copy in branches/safari-610.2.8.0-branch

New branch.

11:56 AM Changeset in webkit [267988] by Aditya Keerthi
  • 35 edits
    16 adds in trunk

[Contact Picker API] Introduce bindings for the Contact Picker API
https://bugs.webkit.org/show_bug.cgi?id=216793
<rdar://problem/69317957>

Reviewed by Wenson Hsieh.

Source/WebCore:

Added IDL for the Contact Picker API, with the exception of the address
and icon contact properties (which will be added after an initial
implemention is complete). See: https://wicg.github.io/contact-api/spec/
for more information.

Test: contact-picker/contacts-interfaces.html

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • Modules/contact-picker/ContactInfo.h: Added.
  • Modules/contact-picker/ContactInfo.idl: Added.
  • Modules/contact-picker/ContactProperty.h: Added.
  • Modules/contact-picker/ContactProperty.idl: Added.
  • Modules/contact-picker/ContactsManager.cpp: Added.

(WebCore::ContactsManager::create):
(WebCore::ContactsManager::ContactsManager):
(WebCore::ContactsManager::navigator):
(WebCore::ContactsManager::getProperties):
(WebCore::ContactsManager::select):

Stub out these API calls for now by immediately rejecting the given promise.

  • Modules/contact-picker/ContactsManager.h: Added.
  • Modules/contact-picker/ContactsManager.idl: Added.
  • Modules/contact-picker/ContactsSelectOptions.h: Added.
  • Modules/contact-picker/ContactsSelectOptions.idl: Added.
  • Modules/contact-picker/NavigatorContacts.cpp: Added.

(WebCore::NavigatorContacts::NavigatorContacts):
(WebCore::NavigatorContacts::contacts):
(WebCore::NavigatorContacts::from):
(WebCore::NavigatorContacts::supplementName):

  • Modules/contact-picker/NavigatorContacts.h: Added.
  • Modules/contact-picker/Navigator+Contacts.idl: Added.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/WebCoreBuiltinNames.h:
  • page/Settings.yaml:

Source/WebKit:

Added a new experimental feature flag. See WebCore Changelog for more details.

  • Shared/WebPreferencesExperimental.yaml:

Source/WebKitLegacy/mac:

Added plumbing to support the associated experimental test option.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(-[WebPreferences contactPickerAPIEnabled]):
(-[WebPreferences setContactPickerAPIEnabled:]):

  • WebView/WebPreferencesPrivate.h:

Source/WebKitLegacy/win:

Added plumbing to support the associated experimental test option.

  • Interfaces/IWebPreferencesPrivate.idl:
  • WebPreferenceKeysPrivate.h:
  • WebPreferences.cpp:

(WebPreferences::initializeDefaultSettings):
(WebPreferences::contactPickerAPIEnabled):
(WebPreferences::setContactPickerAPIEnabled):

  • WebPreferences.h:
  • WebView.cpp:

(WebView::notifyPreferencesChanged):

Source/WTF:

  • Scripts/Preferences/WebPreferencesExperimental.yaml:

Add experimental preference for the Contact Picker API.

Tools:

Added plumbing to support the associated experimental test option.

  • DumpRenderTree/TestOptions.cpp:

(TestOptions::TestOptions):

  • DumpRenderTree/TestOptions.h:
  • DumpRenderTree/mac/DumpRenderTree.mm:

(setWebPreferencesForTestOptions):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(setWebPreferencesForTestOptions):

LayoutTests:

  • contact-picker/contacts-interfaces-expected.txt: Added.
  • contact-picker/contacts-interfaces.html: Added.

Added a new test to verify the new API interfaces.

  • fast/dom/navigator-detached-no-crash-expected.txt:
  • platform/gtk/fast/dom/navigator-detached-no-crash-expected.txt:
  • platform/mac-wk2/fast/dom/navigator-detached-no-crash-expected.txt:
  • platform/mac/fast/dom/navigator-detached-no-crash-expected.txt:
  • platform/win/fast/dom/navigator-detached-no-crash-expected.txt:
  • platform/wincairo/fast/dom/navigator-detached-no-crash-expected.txt:
  • platform/wpe/fast/dom/navigator-detached-no-crash-expected.txt:

Updated an existing test to include "navigator.contacts".

11:52 AM Changeset in webkit [267987] by youenn@apple.com
  • 10 edits
    2 adds in trunk

MediaRecorder should respect enabled and muted tracks
https://bugs.webkit.org/show_bug.cgi?id=217312

Reviewed by Eric Carlson.

Source/WebCore:

If track is muted, replace it by either silence (audio buffer filled with zeros) or black frames.
MediaRecorderPrivate will keep track of whether the selected track should be muted.
It is then the responsibility of the specialization to do the appropriate processing.

Test: http/wpt/mediarecorder/mute-tracks.html

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::trackMutedChanged):
(WebCore::MediaRecorder::trackEnabledChanged):

  • Modules/mediarecorder/MediaRecorder.h:
  • platform/audio/cocoa/WebAudioBufferList.cpp:

(WebCore::WebAudioBufferList::zeroFlatBuffer):

  • platform/audio/cocoa/WebAudioBufferList.h:
  • platform/mediarecorder/MediaRecorderPrivate.cpp:

(WebCore::MediaRecorderPrivate::selectTracks):
(WebCore::MediaRecorderPrivate::checkTrackState):

  • platform/mediarecorder/MediaRecorderPrivate.h:

(WebCore::MediaRecorderPrivate::trackMutedChanged):
(WebCore::MediaRecorderPrivate::trackEnabledChanged):
(WebCore::MediaRecorderPrivate::shouldMuteAudio const):
(WebCore::MediaRecorderPrivate::shouldMuteVideo const):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.cpp:

(WebCore::MediaRecorderPrivateAVFImpl::create):
(WebCore::MediaRecorderPrivateAVFImpl::videoSampleAvailable):
(WebCore::MediaRecorderPrivateAVFImpl::audioSamplesAvailable):

  • platform/mediarecorder/MediaRecorderPrivateAVFImpl.h:

LayoutTests:

  • http/wpt/mediarecorder/mute-tracks-expected.txt: Added.
  • http/wpt/mediarecorder/mute-tracks.html: Added.
11:43 AM Changeset in webkit [267986] by pvollan@apple.com
  • 3 edits in trunk/Source/WebKit

[Cocoa] Reduce time waiting for Launch Services database
https://bugs.webkit.org/show_bug.cgi?id=217253
<rdar://problem/68585497>

Reviewed by Brent Fulgham.

Currently, the WebContent process is waiting up to 5 seconds for the Launch Services database to be updated.
This is too long, since the process may be considered unresponsive by the system. This patch also addresses
an issue where the required entitlement 'com.apple.private.webkit.use-xpc-endpoint' is missing from the
WebContent development XPC service. This entitlement is required in order to receive the Launch Services
database XPC object in the WebContent process.

  • Scripts/process-entitlements.sh:
  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::platformDidReceiveLoadParameters):

11:42 AM Changeset in webkit [267985] by graouts@webkit.org
  • 25 edits
    16 adds in trunk

Add non-animated support for the CSS rotate property
https://bugs.webkit.org/show_bug.cgi?id=217320
<rdar://problem/69956248>

Reviewed by Dean Jackson.

LayoutTests/imported/w3c:

WPT progressions showing the correct parsing and computed style output of a non-animated "rotate" property.

  • web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • web-platform-tests/css/css-transforms/animation/rotate-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/rotate-interpolation-expected.txt:
  • web-platform-tests/css/css-transforms/parsing/rotate-parsing-valid-expected.txt:
  • web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:

Source/WebCore:

We add non-animated support for the CSS "rotate" property as specifed in by the CSS Transforms Level 2
specification (​​https://drafts.csswg.org/css-transforms-2/#propdef-rotate).

Tests: transforms/2d/rotate-and-scale-and-translate-order.html

transforms/2d/rotate-and-transform-attribute-in-svg-expected.svg
transforms/2d/rotate-and-transform-attribute-in-svg.svg
transforms/2d/rotate-and-transform-css-property-in-svg-expected.svg
transforms/2d/rotate-and-transform-css-property-in-svg.svg
transforms/2d/rotate-and-translate-in-svg-expected.svg
transforms/2d/rotate-and-translate-in-svg.svg
transforms/2d/rotate-and-translate-order.html
transforms/2d/rotate-in-svg-expected.svg
transforms/2d/rotate-in-svg.svg
transforms/2d/rotate-transform-order.html
transforms/2d/rotate-transform-origin-order.html

  • Headers.cmake:
  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::computedRotate): Create a CSSValueList to print out the computed value for the "rotate" property.
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json: Define the "rotate" property with the condition that the runtime setting for individual

CSS transform properties is set.

  • css/CSSValueKeywords.in: Define the "z" value for the "rotate" property and ensure the "x" and "y" values are

defined as well since -webkit-scroll-snap-type may not be enabled.

  • css/TransformFunctions.cpp:

(WebCore::rotateForValue): Convert a CSSValue to a RotateTransformOperation when parsing a "rotate" property value.

  • css/TransformFunctions.h:
  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeRotate): Create a CSSValueList when parsing a "rotate" property value.
(WebCore::CSSPropertyParser::parseSingleValue):

  • platform/graphics/transforms/RotateTransformOperation.h:
  • rendering/RenderObject.h:

(WebCore::RenderObject::hasTransform const): Consider that having the "rotate" property is akin to having a "transform" property
in the render tree.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setRotate):
(WebCore::RenderStyle::applyTransform const): Account for the RenderStyle::rotate() value in the right order, after applying the
transform origin and translate, but before applying the scale and main transform.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::rotate const):
(WebCore::RenderStyle::hasTransformRelatedProperty const):
(WebCore::RenderStyle::initialRotate):

  • rendering/style/StyleRareNonInheritedData.h:
  • rendering/style/WillChangeData.cpp:

(WebCore::WillChangeData::propertyCreatesStackingContext):

  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertRotate):

  • svg/SVGGraphicsElement.cpp:

(WebCore::SVGGraphicsElement::animatedLocalTransform const): Account for the RenderStyle::rotate() value when rendering SVG, ensuring
that it is applied before the transform specified by either the "transform" CSS property or SVG attribute.

LayoutTests:

Add tests checking that the "rotate" CSS property is applied in the correct order related to
"transform-origin", "transform", "scale" and "translate". We also check that it is applied
in SVG as well.

  • platform/ios-13/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • transforms/2d/rotate-and-scale-and-translate-order-expected.html: Added.
  • transforms/2d/rotate-and-scale-and-translate-order.html: Added.
  • transforms/2d/rotate-and-transform-attribute-in-svg-expected.svg: Added.
  • transforms/2d/rotate-and-transform-attribute-in-svg.svg: Added.
  • transforms/2d/rotate-and-transform-css-property-in-svg-expected.svg: Added.
  • transforms/2d/rotate-and-transform-css-property-in-svg.svg: Added.
  • transforms/2d/rotate-and-translate-in-svg-expected.svg: Added.
  • transforms/2d/rotate-and-translate-in-svg.svg: Added.
  • transforms/2d/rotate-and-translate-order-expected.html: Added.
  • transforms/2d/rotate-and-translate-order.html: Added.
  • transforms/2d/rotate-in-svg-expected.svg: Added.
  • transforms/2d/rotate-in-svg.svg: Added.
  • transforms/2d/rotate-transform-order-expected.html: Added.
  • transforms/2d/rotate-transform-order.html: Added.
  • transforms/2d/rotate-transform-origin-order-expected.html: Added.
  • transforms/2d/rotate-transform-origin-order.html: Added.
11:39 AM Changeset in webkit [267984] by achristensen@apple.com
  • 1 edit
    2 deletes in trunk/LayoutTests/imported/w3c

Remove url-domainToUnicode web platform test as it was done upstream.

  • web-platform-tests/url/url-domainToUnicode-expected.txt: Removed.
  • web-platform-tests/url/url-domainToUnicode.html: Removed.
11:04 AM Changeset in webkit [267983] by Wenson Hsieh
  • 2 edits in trunk/Source/WebKit

REGRESSION (r267602): editing/selection/ios/select-all-in-readonly-input-does-not-overflow.html fails
https://bugs.webkit.org/show_bug.cgi?id=217321

Reviewed by Dean Jackson.

Fixes an existing test by restoring the commented-out code.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _selectionClipRect]):

10:59 AM Changeset in webkit [267982] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests/imported/w3c

[WPE] Update baselines of two touch-events tests after r266649.

Unreviewed test gardening.

General baselines are updated because WPE is the only port running
these tests. They're skipped in all other ports.

  • web-platform-tests/touch-events/historical-expected.txt:
  • web-platform-tests/touch-events/idlharness.window-expected.txt:
10:41 AM Changeset in webkit [267981] by Alan Coon
  • 23 edits
    3 adds in branches/safari-610-branch

Cherry-pick r267869. rdar://problem/69904332

[iOS WK1] Crashes when using ANGLE WebGL from another thread
https://bugs.webkit.org/show_bug.cgi?id=216106
<rdar://problem/68602452>

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2020-10-02
Reviewed by Kenneth Russell.

Source/ThirdParty/ANGLE:

Add two extensions for EAGL and CGL backends to declare the
underlying platform context being "volatile". It means that
the thread-global current context is being modified behind
ANGLE. If ANGLE context is marked volatile for a particular
API, it will sync the underlying context for every EGL
function that needs the context. Most intuitive use is
for the client to call eglMakeCurrent before calling any
gl function if the client knowns the platform state might
be dirty.

Implement eglReleaseThread for EAGL and CGL backends.
Releasing thread will unset the platform current context.

Fix a bug of omitting EGL_ANGLE_device_eagl from being
advertised.

  • extensions/EGL_ANGLE_platform_angle_device_context_volatile_cgl.txt: Added.
  • extensions/EGL_ANGLE_platform_angle_device_context_volatile_eagl.txt: Added.
  • include/EGL/eglext_angle.h:
  • src/libANGLE/Caps.cpp: (egl::DeviceExtensions::getStrings const): (egl::ClientExtensions::getStrings const):
  • src/libANGLE/Caps.h:
  • src/libANGLE/Display.cpp: (egl::Display::prepareForCall): (egl::Display::releaseThread): (egl::GenerateClientExtensions):
  • src/libANGLE/Display.h:
  • src/libANGLE/renderer/DisplayImpl.cpp: (rx::DisplayImpl::prepareForCall): (rx::DisplayImpl::releaseThread):
  • src/libANGLE/renderer/DisplayImpl.h:
  • src/libANGLE/renderer/gl/cgl/DisplayCGL.h:
  • src/libANGLE/renderer/gl/cgl/DisplayCGL.mm: (rx::DisplayCGL::initialize): (rx::DisplayCGL::terminate): (rx::DisplayCGL::prepareForCall): (rx::DisplayCGL::releaseThread): (rx::DisplayCGL::makeCurrent):
  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.h:
  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm: (rx::DisplayEAGL::initialize): (rx::DisplayEAGL::terminate): (rx::DisplayEAGL::prepareForCall): (rx::DisplayEAGL::releaseThread):
  • src/libANGLE/validationEGL.cpp:
  • src/libGLESv2/entry_points_egl.cpp:
  • src/libGLESv2/entry_points_egl_ext.cpp:

Source/WebCore:

Source of the bug comes from following:

  • WK1 might run WebKit code in client main thread.
  • WK1 might run Webkit code in web thread.
  • WebKit code might run WebGL payload, notably access GraphicsContextGL classes. Client is able to modify EAGL/CGL current context.

The change to ANGLE incurred two distinct behavior changes
compared to raw EAGL / CGL:
1) Before: context was set current before any GL call
After: context was set current only if EGL current context
had been changed. (Explicit code as well as ANGLE implementation
optimization.)

2) Before: context being used was able to be current in
multiple threads at the same time. (EAGL/CGL feature)
After: context cannot be current in multiple threads
at the same time. (EGL feature)

Change in behavior 1) caused ANGLE to sometimes use
the EAGL/CGL context of the client instead of
the real context that ANGLE created.
Fix this by introducing
EGL_ANGLE_platform_angle_device_context_volatile_eagl
and
EGL_ANGLE_platform_angle_device_context_volatile_cgl
which make ANGLE sync the context on each eglMakeCurrent
eglReleaseThread and eglTerminate.

Change in behavior 2) caused ANGLE to use uninitialized
context object from one thread, if the real context object
was current in another thread.
Fix this by considering "GraphicsContextGLOpenGL current context"
as part of "data that is owned by WebCoreThread lock".
The current context is set with lock held, implicitly.
The current context is released when lock is released.
When the lock is not held, GraphicsContextGLOpenGL current context
is nullptr.

Adds soft linking for EAGL for the purpose of testing this in
TestWebKitAPI. The case of Apple Silicon Mac may sometimes
use CGL and sometimes EAGL, and the test should test that
client overriding both contexts will not cause problems.

Fix ANGLE header include path:

  • Do not include ANGLE in the path, as files are included with ANGLE/
  • Add WK_ALTERNATE_FRAMEWORKS_DIR so that SDK_VARIANT=iosmac e.g. maccatalyst builds work

Previously the ANGLE was not included from ThirdParty/ANGLE, rather
"WebKit SDK".

  • Configurations/WebCore.xcconfig:
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm: (WebCore::GraphicsContextGLOpenGL::GraphicsContextGLOpenGL): (WebCore::GraphicsContextGLOpenGL::~GraphicsContextGLOpenGL): (WebCore::GraphicsContextGLOpenGL::makeContextCurrent): (WebCore::GraphicsContextGLOpenGL::releaseCurrentContext): (WebCore::GraphicsContextGLOpenGL::checkGPUStatus): (WebCore::GraphicsContextGLOpenGL::allowOfflineRenderers const):
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/ios/wak/WebCoreThread.mm: (WebThreadUnlockFromAnyThread): (_WebThreadUnlock):

Tools:

Add a WK1 test which runs WebGL code both in
client main thread and in web thread.
This tests the case where ANGLE EGL context is
not being held current in one thread while the
other thread runs WebGL and thus ANGLE EGL code.

  • TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKitLegacy/ios/WebGLNoCrashOnOtherThreadAccess.mm: Added. (-[WebGLNoCrashOnOtherThreadAccessWebViewDelegate webViewDidFinishLoad:]): (-[WebGLNoCrashOnOtherThreadAccessWebViewDelegate webView:shouldStartLoadWithRequest:navigationType:]): (TestWebKitAPI::TEST):

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

10:41 AM Changeset in webkit [267980] by Alan Coon
  • 45 edits
    1 move
    8 adds in branches/safari-610-branch/Source

Cherry-pick r267602. rdar://problem/69904386

WebGL should use GLES in iOS apps running on Apple Silicon
https://bugs.webkit.org/show_bug.cgi?id=216722
<rdar://problem/68976337>

Reviewed by Tim Horton and Ken Russell.

Source/ThirdParty/ANGLE:

Change ANGLE to dynamically load either EAGL (OpenGLES) or CGL (OpenGL) depending
on both compile and runtime configurations.

Intel Mac -> CGL
Intel Mac Catalyst -> CGL
Intel iOS Simulator -> EAGL
iOS Device -> EAGL
Apple Silicon Mac -> CGL
Apple Silicon Mac Catalyst (with Mac app) -> CGL
Apple Silicon Mac Catalyst (with iOS app) -> EAGL

The trickiest bit is Apple Silicon Mac Catalyst, which depends on the
type of the application it is attempting to run. In that case ANGLE must compile
both the CGL and EAGL interfaces and then pick one to use after launch.

  • ANGLE.xcodeproj/project.pbxproj: Add new files.
  • Configurations/ANGLE-dynamic.xcconfig: Remove all the OpenGL* linking.
  • Configurations/ANGLE-static.xcconfig:
  • GLESv2.cmake: New files.
  • src/common/platform.h: New definitions for CPU type on Apple Systems.
  • src/gpu_info_util/SystemInfo.h: Split SystemInfo for Apple into two files, for iOS and Mac. Added a field for isiOSAppOnMac that will only be true when running an iOS binary on Apple Silicon.
  • src/gpu_info_util/SystemInfo_apple.mm: Added. Decides which SystemInfo to call. (angle::GetSystemInfo):
  • src/gpu_info_util/SystemInfo_ios.cpp: (angle::GetSystemInfo_ios): (angle::GetSystemInfo): Deleted.
  • src/gpu_info_util/SystemInfo_macos.mm: (angle::GetSystemInfo_mac): (angle::GetSystemInfo): Deleted.
  • src/libANGLE/Caps.cpp: Can no longer just check for PLATFORM_IOS. This might still need a runtime check. (gl::DetermineDepthTextureANGLESupport): (gl::DetermineDepthTextureOESSupport):
  • src/libANGLE/Display.cpp: This is the main initialization point for ANGLE, which decides at compile/runtime which variant of Display to create.
  • src/libANGLE/formatutils.cpp: Add the correct formats. (gl::BuildInternalFormatInfoMap):
  • src/libANGLE/renderer/gl/SoftLinking_apple.h: Added. Macros to help soft-link functions and ObjC classes.
  • src/libANGLE/renderer/gl/cgl/CGLFunctions.cpp: Added. Where we soft-link all the OpenGL/CGL API.
  • src/libANGLE/renderer/gl/cgl/CGLFunctions.h: Added.
  • src/libANGLE/renderer/gl/cgl/DisplayCGL.mm: Use the soft-linked methods.
  • src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.cpp:
  • src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.h:
  • src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm: Rename WebSwapLayer to WebSwapLayerCGL otherwise it clashes with the EAGL version. (rx::WindowSurfaceCGL::initialize): (-[WebSwapLayer initWithSharedState:withContext:withFunctions:]): Deleted. (-[WebSwapLayer copyCGLPixelFormatForDisplayMask:]): Deleted. (-[WebSwapLayer copyCGLContextForPixelFormat:]): Deleted. (-[WebSwapLayer canDrawInCGLContext:pixelFormat:forLayerTime:displayTime:]): Deleted. (-[WebSwapLayer drawInCGLContext:pixelFormat:forLayerTime:displayTime:]): Deleted.
  • src/libANGLE/renderer/gl/eagl/DeviceEAGL.cpp: Similar changes to the CGL implementation.
  • src/libANGLE/renderer/gl/eagl/DeviceEAGL.h:
  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.h:
  • src/libANGLE/renderer/gl/eagl/DisplayEAGL.mm: (rx::DisplayEAGL::initialize): (rx::DisplayEAGL::terminate): (rx::WorkerContextEAGL::~WorkerContextEAGL): (rx::WorkerContextEAGL::makeCurrent): (rx::WorkerContextEAGL::unmakeCurrent): (rx::DisplayEAGL::createWorkerContext):
  • src/libANGLE/renderer/gl/eagl/EAGLFunctions.h: Added.
  • src/libANGLE/renderer/gl/eagl/EAGLFunctions.mm: Added.
  • src/libANGLE/renderer/gl/eagl/IOSurfaceSurfaceEAGL.mm:
  • src/libANGLE/renderer/gl/eagl/PbufferSurfaceEAGL.cpp:
  • src/libANGLE/renderer/gl/eagl/RendererEAGL.cpp:
  • src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.h:
  • src/libANGLE/renderer/gl/eagl/WindowSurfaceEAGL.mm: (-[WebSwapLayerEAGL display]): (rx::WindowSurfaceEAGL::initialize): (-[WebSwapLayer initWithSharedState:withContext:withFunctions:]): Deleted. (-[WebSwapLayer display]): Deleted.
  • src/libANGLE/renderer/gl/renderergl_utils.cpp: Runtime check. (rx::nativegl_gl::GenerateCaps):

Source/WebCore:

  • Configurations/WebCore.xcconfig: Remove all OpenGL/OpenGLES linking.
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/GraphicsContextGL.h: Change the ANGLE IOSurface texture binding enums into functions, because they have to be calculated at run-time.
  • platform/graphics/cocoa/GraphicsContextGLOpenGLCocoa.mm: Use the new soft-linked functions from PAL. Also implement the IOSurface texture binding helpers that were previously enums.
  • platform/mac/PlatformScreenMac.mm:
  • platform/mac/WebGLBlocklist.mm:

Source/WebCore/PAL:

Add soft-linking content for OpenGL/OpenGLES.

  • PAL.xcodeproj/project.pbxproj:
  • pal/PlatformMac.cmake:
  • pal/cocoa/OpenGLSoftLinkCocoa.h: Added.
  • pal/cocoa/OpenGLSoftLinkCocoa.mm: Added.

Source/WebKit:

  • Configurations/WebKit.xcconfig: Remove OpenGL linking.
  • UIProcess/mac/HighPerformanceGPUManager.mm: Renamed to .mm. Use the PAL soft-linked OpenGL API.

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

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

Web Inspector: Sources: add a + to the Local Overrides section
https://bugs.webkit.org/show_bug.cgi?id=217235

Reviewed by Brian Burg.

  • UserInterface/Views/SourcesNavigationSidebarPanel.js:

(WI.SourcesNavigationSidebarPanel):
(WI.SourcesNavigationSidebarPanel.prototype._populateCreateLocalOverrideContextMenu): Added.
(WI.SourcesNavigationSidebarPanel.prototype._populateCreateResourceContextMenu):

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

WebDriver Input clear/value commands fails when target is inside shadow dom
https://bugs.webkit.org/show_bug.cgi?id=209233

Patch by Nitzan Uziely <nitzan@testim.io> on 2020-10-05
Reviewed by Brian Burg.

Source/WebCore:

Add support for nested shadow DOM in isDescendantOrShadowDescendantOf,

  • dom/Node.cpp:

(WebCore::Node::isDescendantOrShadowDescendantOf const):

  • dom/Node.h:

(WebCore::Node::isDescendantOrShadowDescendantOf const):

Source/WebKit:

Fixed nodeIsElement which would return true for non-element nodes,
which caused an exception to be thrown when getComputedStyle was called
on non shadow elements.

Fixed computeElementLayout to consider shadow root descendants as descendants
when executing elementsAtPoint.

Test for WPT (https://github.com/web-platform-tests/wpt/pull/25962)

  • UIProcess/Automation/atoms/ElementDisplayed.js:

(isShown.nodeIsElement):
(isShown.enclosingNodeOrSelfMatchingPredicate):
(isShown.enclosingElementOrSelfMatchingPredicate):

  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::computeElementLayout):

10:36 AM Changeset in webkit [267977] by Devin Rousso
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: unable to create local override for resource that failed to load
https://bugs.webkit.org/show_bug.cgi?id=217234
<rdar://problem/69888143>

Reviewed by Brian Burg.

  • UserInterface/Models/Resource.js:

(WI.Resource.prototype.async createLocalResourceOverride):
Wrap the WI.SourceCode.prototype.requestContent call in a try in case the content is not
able to be fetched. If so, determine the MIME from the URL and fall back to "".

  • UserInterface/Views/ResourceContentView.js:

(WI.ResourceContentView.prototype.requestLocalResourceOverrideInitialContent):
(WI.ResourceContentView.prototype.async _getContentForLocalResourceOverrideFromFile):
Drive-by: drop initial from the parameter name as it's not really necessary.

  • UserInterface/Views/TextResourceContentView.js:

(WI.TextResourceContentView.prototype.requestLocalResourceOverrideInitialContent):
Drive-by: include the mimeType and base64Encoded of the related WI.Resource.

10:34 AM Changeset in webkit [267976] by Devin Rousso
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(?): cannot edit Event Breakpoint
https://bugs.webkit.org/show_bug.cgi?id=217244

Reviewed by Brian Burg.

  • UserInterface/Models/EventBreakpoint.js:

(WI.EventBreakpoint.get supportsEditing):
(WI.EventBreakpoint.prototype.get editable):
Move the specific listener breakpoint logic to the prototype function as this won't
exist in the static function (not to mention it's not possible to create a specific
listener breakpoint "at will" like it is for global event breakpoints).

  • UserInterface/Models/URLBreakpoint.js:

(WI.URLBreakpoint.get supportsEditing): Added.
(WI.URLBreakpoint.prototype.get editable):
(WI.URLBreakpoint.get editable): Deleted.

  • UserInterface/Views/URLBreakpointPopover.js:

(WI.URLBreakpointPopover.get supportsEditing):
Drive-by: update naming to match WI.EventBreakpoint.

10:30 AM Changeset in webkit [267975] by achristensen@apple.com
  • 1 edit
    1 delete in trunk/LayoutTests/imported/w3c

Remove unused -expected.txt file

  • web-platform-tests/url/urlencoded-parser-expected.txt: Removed.
10:23 AM Changeset in webkit [267974] by Diego Pino Garcia
  • 3 edits in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Move tests also timing out in WPE to GLIB test expectations.

  • platform/glib/TestExpectations:
  • platform/gtk/TestExpectations:
9:42 AM Changeset in webkit [267973] by wilander@apple.com
  • 14 edits in trunk

Storage Access API: Enable per-page storage access scope and align test cases
https://bugs.webkit.org/show_bug.cgi?id=217077
<rdar://problem/69017878>

Reviewed by Brent Fulgham.

It was decided in https://github.com/privacycg/storage-access/issues/3 that
browsers should grant storage access for all same-site resources on the whole
page, not just the requesting iframe.

Source/WebCore:

No new tests. Existing tests aligned, including
LayoutTests/http/tests/storageAccess/request-and-grant-access-with-per-page-scope-access-from-another-frame.html
which no longer calls
internals.settings.setStorageAccessAPIPerPageScopeEnabled(true)
to opt in to the setting that is now the default.

  • dom/DocumentStorageAccess.cpp:

(WebCore::DocumentStorageAccess::requestStorageAccess):

Changed the settings check to do the reverse, i.e. assume
per-page access by default and per-frame access as the
exception.

  • dom/DocumentStorageAccess.h:

Changed the default setting for m_storageAccessScope to per-page.

  • page/Settings.yaml:

Changed the default to true for
storageAccessAPIPerPageScopeEnabled.

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::hasStorageAccess):

Added a call to WebPage::hasPageLevelStorageAccess()
and an early return if it returns true.

(WebKit::WebPage::clearPageLevelStorageAccess):

New function to clear the webpage's m_domainsWithPageLevelStorageAccess
map.

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

(WebKit::WebProcess::clearResourceLoadStatistics):

Now clears all webpages' page level storage access maps.

LayoutTests:

  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-and-access-from-right-frame.html:
  • http/tests/storageAccess/request-and-grant-access-cross-origin-sandboxed-iframe-from-prevalent-domain-with-user-interaction-but-access-from-wrong-frame.html:
  • http/tests/storageAccess/request-and-grant-access-then-detach-should-not-have-access.html:
  • http/tests/storageAccess/request-and-grant-access-then-navigate-cross-site-should-not-have-access.html:

All of the above now explicitly call
internals.settings.setStorageAccessAPIPerPageScopeEnabled(false)
to opt out of the new default setting.

  • http/tests/storageAccess/request-and-grant-access-with-per-page-scope-access-from-another-frame.html:

Changed to assume per-page is the default.

9:38 AM Changeset in webkit [267972] by ddkilzer@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Build fix: Use JSC_DEFINE_HOST_FUNCTION_WITH_ATTRIBUTES() with SUPPRESS_ASAN
<rdar://problem/69954783>

  • tools/JSDollarVM.cpp:

(JSC::JSC_DEFINE_HOST_FUNCTION_WITH_ATTRIBUTES):

  • Change SUPPRESS_ASAN JSC_DEFINE_HOST_FUNCTION() to JSC_DEFINE_HOST_FUNCTION_WITH_ATTRIBUTES(..., SUPPRESS_ASAN, ...) to fix the build.
9:36 AM Changeset in webkit [267971] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Make text selectable in CPU timeline content view
https://bugs.webkit.org/show_bug.cgi?id=216999

Reviewed by Brian Burg.

  • UserInterface/Views/CPUTimelineView.css:

(.timeline-view.cpu > .content > .overview .legend):

  • UserInterface/Views/CPUUsageCombinedView.css:

(.cpu-usage-combined-view > .details):

9:17 AM Changeset in webkit [267970] by weinig@apple.com
  • 21 edits in trunk

Remove support for enabling subpixel CSSOM values, it's off by default everywhere and known to be not-compatible with the web
https://bugs.webkit.org/show_bug.cgi?id=217300

Reviewed by Simon Fraser.

Source/WebCore:

Remove support for subpixel CSSOM values, and fixup Element interfaces that were
only out of spec, returning doubles, due to the conditional support.

  • dom/Element+CSSOMView.idl:
  • dom/Element.cpp:

(WebCore::adjustForLocalZoom):
(WebCore::convertToNonSubpixelValue):
(WebCore::adjustOffsetForZoomAndSubpixelLayout):
(WebCore::Element::offsetLeftForBindings):
(WebCore::Element::offsetLeft):
(WebCore::Element::offsetTopForBindings):
(WebCore::Element::offsetTop):
(WebCore::Element::offsetWidth):
(WebCore::Element::offsetHeight):
(WebCore::Element::clientLeft):
(WebCore::Element::clientTop):
(WebCore::Element::clientWidth):
(WebCore::Element::clientHeight):
(WebCore::subpixelMetricsEnabled): Deleted.
(WebCore::convertToNonSubpixelValueIfNeeded): Deleted.

  • dom/Element.h:
  • html/HTMLElement+CSSOMView.idl:
  • page/Settings.yaml:

Source/WebKit:

Deprecate SPI for enabling subpixel CSSOM values. It is not web compatible.

  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetSubpixelCSSOMElementMetricsEnabled):
(WKPreferencesGetSubpixelCSSOMElementMetricsEnabled):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _setSubpixelCSSOMElementMetricsEnabled:]):
(-[WKPreferences _subpixelCSSOMElementMetricsEnabled]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:

Source/WebKitLegacy/mac:

Deprecate SPI for enabling subpixel CSSOM values. It is not web compatible.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(-[WebPreferences setSubpixelCSSOMElementMetricsEnabled:]):
(-[WebPreferences subpixelCSSOMElementMetricsEnabled]):

  • WebView/WebPreferencesPrivate.h:

Source/WTF:

Remove preference for toggling subpixel CSSOM values.

  • Scripts/Preferences/WebPreferences.yaml:

Tools:

Remove support in MiniBrowser for toggling support for subpixel CSSOM values since it
is no longer supported in WebCore.

  • MiniBrowser/mac/SettingsController.h:
  • MiniBrowser/mac/SettingsController.m:

(-[SettingsController _populateMenu]):
(-[SettingsController validateMenuItem:]):
(-[SettingsController toggleEnableSubPixelCSSOMMetrics:]): Deleted.
(-[SettingsController subPixelCSSOMMetricsEnabled]): Deleted.

  • MiniBrowser/mac/WK1BrowserWindowController.m:

(-[WK1BrowserWindowController didChangeSettings]):

8:43 AM Changeset in webkit [267969] by Antti Koivisto
  • 18 edits
    4 moves
    1 delete in trunk/Source/WebCore

[LFC][Integration] Move Display::InlineContent to LayoutIntegration namespace
https://bugs.webkit.org/show_bug.cgi?id=217310

Reviewed by Zalan Bujtas.

It is only used by the integration code

Also move the related classes and rename the path independent iterator run to PathRun

  • Headers.cmake:
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • display/DisplayView.h:
  • layout/FormattingContextGeometry.cpp:

(WebCore::Layout::FormattingContext::Geometry::contentHeightForFormattingContextRoot const):

  • layout/displaytree/DisplayRect.h: Removed.
  • layout/flexformatting/FlexFormattingContext.cpp:

(WebCore::Layout::FlexFormattingContext::sizeAndPlaceFlexItems):

  • layout/flexformatting/FlexFormattingState.h:

(WebCore::Layout::FlexFormattingState::lines const):
(WebCore::Layout::FlexFormattingState::addLine):

  • layout/integration/LayoutIntegrationInlineContent.cpp: Renamed from Source/WebCore/layout/displaytree/DisplayInlineContent.cpp.
  • layout/integration/LayoutIntegrationInlineContent.h: Renamed from Source/WebCore/layout/displaytree/DisplayInlineContent.h.
  • layout/integration/LayoutIntegrationLine.h: Renamed from Source/WebCore/layout/displaytree/DisplayLine.h.
  • layout/integration/LayoutIntegrationLineLayout.cpp:

(WebCore::LayoutIntegration::LineLayout::layout):
(WebCore::LayoutIntegration::LineLayout::constructContent):
(WebCore::LayoutIntegration::LineLayout::lineCount const):
(WebCore::LayoutIntegration::LineLayout::adjustForPagination):
(WebCore::LayoutIntegration::LineLayout::collectOverflow):
(WebCore::LayoutIntegration::LineLayout::ensureInlineContent):
(WebCore::LayoutIntegration::LineLayout::textRunsFor const):
(WebCore::LayoutIntegration::LineLayout::runFor const):
(WebCore::LayoutIntegration::LineLayout::paint):
(WebCore::LayoutIntegration::LineLayout::hitTest):
(WebCore::LayoutIntegration::LineLayout::constructDisplayContent): Deleted.
(WebCore::LayoutIntegration::LineLayout::ensureDisplayInlineContent): Deleted.

  • layout/integration/LayoutIntegrationLineLayout.h:

(WebCore::LayoutIntegration::LineLayout::inlineContent const):
(WebCore::LayoutIntegration::LineLayout::displayInlineContent const): Deleted.

  • layout/integration/LayoutIntegrationPagination.cpp:

(WebCore::LayoutIntegration::computeLineTopAndBottomWithOverflow):
(WebCore::LayoutIntegration::updateMinimumPageHeight):
(WebCore::LayoutIntegration::makeAdjustedContent):
(WebCore::LayoutIntegration::adjustLinePositionsForPagination):

  • layout/integration/LayoutIntegrationPagination.h:
  • layout/integration/LayoutIntegrationRun.h: Renamed from Source/WebCore/layout/displaytree/DisplayRun.h.
  • layout/integration/LayoutIntegrationRunIterator.cpp:

(WebCore::LayoutIntegration::RunIterator::RunIterator):
(WebCore::LayoutIntegration::TextRunIterator::TextRunIterator):
(WebCore::LayoutIntegration::LineRunIterator::LineRunIterator):
(WebCore::LayoutIntegration::PathRun::modernPath):
(WebCore::LayoutIntegration::PathRun::legacyPath):
(WebCore::LayoutIntegration::Run::modernPath): Deleted.
(WebCore::LayoutIntegration::Run::legacyPath): Deleted.

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::PathTextRun::legacyInlineBox const):
(WebCore::LayoutIntegration::RunIterator::operator* const):
(WebCore::LayoutIntegration::RunIterator::operator-> const):
(WebCore::LayoutIntegration::TextRunIterator::operator* const):
(WebCore::LayoutIntegration::TextRunIterator::operator-> const):
(WebCore::LayoutIntegration::TextRunIterator::get const):
(WebCore::LayoutIntegration::PathRun::PathRun):
(WebCore::LayoutIntegration::PathRun::isText const):
(WebCore::LayoutIntegration::PathRun::rect const):
(WebCore::LayoutIntegration::PathRun::baseline const):
(WebCore::LayoutIntegration::PathRun::isHorizontal const):
(WebCore::LayoutIntegration::PathRun::dirOverride const):
(WebCore::LayoutIntegration::PathRun::isLineBreak const):
(WebCore::LayoutIntegration::PathRun::useLineBreakBoxRenderTreeDumpQuirk const):
(WebCore::LayoutIntegration::PathRun::minimumCaretOffset const):
(WebCore::LayoutIntegration::PathRun::maximumCaretOffset const):
(WebCore::LayoutIntegration::PathRun::bidiLevel const):
(WebCore::LayoutIntegration::PathRun::onSameLine const):
(WebCore::LayoutIntegration::PathRun::legacyInlineBox const):
(WebCore::LayoutIntegration::PathTextRun::hasHyphen const):
(WebCore::LayoutIntegration::PathTextRun::PathTextRun):
(WebCore::LayoutIntegration::PathTextRun::text const):
(WebCore::LayoutIntegration::PathTextRun::localStartOffset const):
(WebCore::LayoutIntegration::PathTextRun::localEndOffset const):
(WebCore::LayoutIntegration::PathTextRun::length const):
(WebCore::LayoutIntegration::PathTextRun::isLastTextRunOnLine const):
(WebCore::LayoutIntegration::PathTextRun::isLastTextRun const):
(isType):
(WebCore::LayoutIntegration::Run::leftmostCaretOffset const): Deleted.
(WebCore::LayoutIntegration::Run::rightmostCaretOffset const): Deleted.
(WebCore::LayoutIntegration::Run::direction const): Deleted.
(WebCore::LayoutIntegration::Run::isLeftToRightDirection const): Deleted.
(WebCore::LayoutIntegration::TextRun::legacyInlineBox const): Deleted.
(WebCore::LayoutIntegration::Run::Run): Deleted.
(WebCore::LayoutIntegration::Run::isText const): Deleted.
(WebCore::LayoutIntegration::Run::rect const): Deleted.
(WebCore::LayoutIntegration::Run::baseline const): Deleted.
(WebCore::LayoutIntegration::Run::isHorizontal const): Deleted.
(WebCore::LayoutIntegration::Run::dirOverride const): Deleted.
(WebCore::LayoutIntegration::Run::isLineBreak const): Deleted.
(WebCore::LayoutIntegration::Run::useLineBreakBoxRenderTreeDumpQuirk const): Deleted.
(WebCore::LayoutIntegration::Run::minimumCaretOffset const): Deleted.
(WebCore::LayoutIntegration::Run::maximumCaretOffset const): Deleted.
(WebCore::LayoutIntegration::Run::bidiLevel const): Deleted.
(WebCore::LayoutIntegration::Run::onSameLine const): Deleted.
(WebCore::LayoutIntegration::Run::legacyInlineBox const): Deleted.
(WebCore::LayoutIntegration::TextRun::hasHyphen const): Deleted.
(WebCore::LayoutIntegration::TextRun::TextRun): Deleted.
(WebCore::LayoutIntegration::TextRun::text const): Deleted.
(WebCore::LayoutIntegration::TextRun::localStartOffset const): Deleted.
(WebCore::LayoutIntegration::TextRun::localEndOffset const): Deleted.
(WebCore::LayoutIntegration::TextRun::length const): Deleted.
(WebCore::LayoutIntegration::TextRun::isLastTextRunOnLine const): Deleted.
(WebCore::LayoutIntegration::TextRun::isLastTextRun const): Deleted.

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::ModernPath::ModernPath):
(WebCore::LayoutIntegration::ModernPath::runs const):
(WebCore::LayoutIntegration::ModernPath::run const):
(WebCore::LayoutIntegration::ModernPath::line const):

  • layout/layouttree/LayoutTreeBuilder.cpp:
  • rendering/RenderTreeAsText.cpp:

(WebCore::write):
(WebCore::writeTextRun): Deleted.

  • rendering/TextPainter.cpp:

(WebCore::TextPainter::clearGlyphDisplayLists):

8:40 AM Changeset in webkit [267968] by Diego Pino Garcia
  • 9 edits
    2 copies
    1 move
    2 adds
    2 deletes in trunk/LayoutTests

[GLIB] Unreviewed test gardening. Merge common GTK and WPE baselines and emit new baselines for WPE tests after r267960.

Also move webaudio/oscillator-sine.html failure to glib.

  • platform/glib/TestExpectations:
  • platform/glib/fetch/fetch-url-serialization-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002-expected.txt:
  • platform/glib/imported/w3c/web-platform-tests/mathml/relations/html5-tree/display-1-expected.txt:
  • platform/gtk/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/mathml/relations/html5-tree/display-1-expected.txt: Removed.
  • platform/gtk/imported/w3c/web-platform-tests/selection/selection-select-all-move-input-crash-expected.txt: Copied from LayoutTests/platform/glib/imported/w3c/web-platform-tests/selection/selection-select-all-move-input-crash-expected.txt.
  • platform/wpe/http/tests/storageAccess/aggregate-sorted-data-with-storage-access-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/css-sizing/percentage-height-in-flexbox-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002-expected.txt: Renamed from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002-expected.txt.
  • platform/wpe/imported/w3c/web-platform-tests/selection/selection-select-all-move-input-crash-expected.txt: Renamed from LayoutTests/platform/glib/imported/w3c/web-platform-tests/selection/selection-select-all-move-input-crash-expected.txt.
8:28 AM Changeset in webkit [267967] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][Integration] Enable non-uniform line height content with floats
https://bugs.webkit.org/show_bug.cgi?id=217306

Reviewed by Antti Koivisto.

Expand coverage now that we support non-uniform line heights.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForLineLayoutWithReason):

7:57 AM Changeset in webkit [267966] by achristensen@apple.com
  • 48 edits
    2 adds
    2 deletes in trunk

Unify linkedOnOrAfter duplicate code and use SPI/WebCoreTestSupport instead of NSUserDefaults
https://bugs.webkit.org/show_bug.cgi?id=217239

Reviewed by Darin Adler.

Source/WebCore:

  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/cocoa/VersionChecks.h: Renamed from Source/WebKit/UIProcess/Cocoa/VersionChecks.h.
  • platform/cocoa/VersionChecks.mm: Renamed from Source/WebKit/UIProcess/Cocoa/VersionChecks.mm.

(WebCore::linkedOnOrAfter):

  • testing/js/WebCoreTestSupport.cpp:

(WebCoreTestSupport::setLinkedOnOrAfterEverythingForTesting):

  • testing/js/WebCoreTestSupport.h:

Source/WebKit:

  • NetworkProcess/WebStorage/ios/LocalStorageDatabaseTrackerIOS.mm:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:
  • Shared/Cocoa/CompletionHandlerCallChecker.mm:

(WebKit::shouldThrowExceptionForDuplicateCompletionHandlerCall):

  • Shared/Cocoa/DefaultWebBrowserChecks.mm:

(WebKit::determineITPState):

  • Shared/Cocoa/WebKit2InitializeCocoa.mm:

(WebKit::InitializeWebKit2):

  • Shared/WebPreferencesDefaultValues.cpp:

(WebKit::defaultPassiveTouchListenersAsDefaultOnDocument):

  • SourcesCocoa.txt:
  • UIProcess/API/C/WKPage.cpp:

(WKPageReload):

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(+[WKProcessPool _setLinkedOnOrAfterEverythingForTesting]):

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

(shouldAllowSettingAnyXHRHeaderFromFileURLs):
(shouldRestrictBaseURLSchemes):
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _setupPageConfiguration:]):
(-[WKWebView reload]):
(-[WKWebView takeSnapshotWithConfiguration:completionHandler:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(defaultShouldDecidePolicyBeforeLoadingQuickLookPreview):
(-[WKWebViewConfiguration init]):

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore init]):

  • UIProcess/API/ios/WKWebViewIOS.mm:

(-[WKWebView _computedObscuredInset]):

  • UIProcess/API/mac/WKWebViewMac.mm:

(-[WKWebView _web_dragDestinationActionForDraggingInfo:]):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::WebProcessPool::platformInitializeNetworkProcess):

  • UIProcess/Inspector/mac/WKInspectorViewController.mm:

(-[WKInspectorViewController inspectorWKWebViewReload:]):

  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:

(WebKit::RemoteScrollingCoordinatorProxy::hasScrollableOrZoomedMainFrame const):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::maybeInitializeSandboxExtensionHandle):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::createWebPage):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::isMainThreadOrCheckDisabled):

  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _commonInitializationWithProcessPool:configuration:]):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _shouldUseContextMenus]):
(applicationIsKnownToIgnoreMouseEvents):

  • UIProcess/ios/WKScrollView.mm:

(-[WKScrollView _systemContentInset]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::desktopClassBrowsingRecommended):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/cocoa/WebProcessCocoa.mm:

Source/WebKitLegacy/mac:

  • DefaultDelegates/WebDefaultUIDelegate.mm:

(-[WebDefaultUIDelegate webView:dragDestinationActionMaskForDraggingInfo:]):

  • Misc/WebIconDatabase.mm:

(+[WebIconDatabase sharedIconDatabase]):

  • Misc/WebKitVersionChecks.h:
  • Misc/WebKitVersionChecks.mm:

(WebKitLinkTimeVersion):
(linkedOnOrAfter): Deleted.

  • WebView/WebPreferencesDefaultValues.mm:

(WebKit::defaultPassiveTouchListenersAsDefaultOnDocument):
(WebKit::defaultShouldRestrictBaseURLSchemes):

Tools:

  • DumpRenderTree/mac/DumpRenderTree.mm:

(setDefaultsToConsistentValuesForTesting):
(DumpRenderTreeMain):

  • MiniBrowser/mac/main.m:

(main):

  • MobileMiniBrowser/MobileMiniBrowser/main.m:

(main):

  • TestWebKitAPI/Configurations/TestWTF.xcconfig:
  • TestWebKitAPI/ios/mainIOS.mm:

(main):

  • TestWebKitAPI/mac/mainMac.mm:

(main):

  • WebKitTestRunner/ios/mainIOS.mm:

(main):

  • WebKitTestRunner/mac/main.mm:

(setDefaultsToConsistentValuesForTesting):
(main):

7:51 AM Changeset in webkit [267965] by achristensen@apple.com
  • 9 edits in trunk

URLParser should fail to parse URLs with hosts containing invalid punycode encodings
https://bugs.webkit.org/show_bug.cgi?id=217285

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/failure-expected.txt:
  • web-platform-tests/url/toascii.window-expected.txt:
  • web-platform-tests/url/url-constructor-expected.txt:

Source/WTF:

URLParser has a fast path for parsing hosts that are all ASCII, but that does not validate hosts that are invalid punycode, such as "xn--".
Since all punycode encoded strings start with "xn--", if the input string starts with "xn--" then skip the fast path and let ICU decide if it's valid.

  • wtf/URLParser.cpp:

(WTF::URLParser::domainToASCII):
(WTF::URLParser::startsWithXNDashDash):
(WTF::URLParser::parseHostAndPort):

  • wtf/URLParser.h:
7:43 AM Changeset in webkit [267964] by achristensen@apple.com
  • 7 edits in trunk

When appending a Windows drive letter to a file URL, remove any path we may have copied from the base URL
https://bugs.webkit.org/show_bug.cgi?id=217284

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/resources/urltestdata.json:
  • web-platform-tests/url/url-constructor-expected.txt:

Source/WTF:

This fixes a web platform test and adds another to verify that we remove the entire path, not just the last segment like we do with ..
Edge has implemented this, and in order to have a platform-independent URL we should do it too.

  • wtf/URLParser.cpp:

(WTF::URLParser::isWindowsDriveLetter):
(WTF::URLParser::appendWindowsDriveLetter):
(WTF::URLParser::parse):

7:40 AM Changeset in webkit [267963] by achristensen@apple.com
  • 17 edits in trunk

Fix UTF-8 encoding in URL parsing
https://bugs.webkit.org/show_bug.cgi?id=217289

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-origin-expected.txt:
  • web-platform-tests/url/a-element-origin-xhtml-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/resources/urltestdata.json:
  • web-platform-tests/url/url-constructor-expected.txt:
  • web-platform-tests/url/url-origin-expected.txt:

Source/WTF:

This matches the behavior of Firefox and the Unicode and whatwg encoding specifications.

  • wtf/URLParser.cpp:

(WTF::URLParser::utf8PercentEncode):
(WTF::URLParser::utf8QueryEncode):
(WTF::URLParser::parseHostAndPort):

Tools:

  • TestWebKitAPI/Tests/WTF/URLParser.cpp:

(TestWebKitAPI::TEST_F):

LayoutTests:

  • fast/url/anchor-expected.txt:
  • fast/url/anchor.html:
  • fast/url/path-expected.txt:
  • fast/url/path.html:
7:39 AM Changeset in webkit [267962] by Antti Koivisto
  • 14 edits
    1 add in trunk/Source/WebCore

[LFC][Integration] Avoid ensureLineBoxes for some call sites of inlineBoxAndOffset
https://bugs.webkit.org/show_bug.cgi?id=217225

Reviewed by Zalan Bujtas.

Separate inlineRunAndOffset from inlineBoxAndOffset.
The formet returns iterator while the later forces the legacy path.

Use inlineRunAndOffset in a few places.

  • dom/Position.cpp:

(WebCore::Position::rendersInDifferentPosition const):
(WebCore::Position::inlineRunAndOffset const):
(WebCore::Position::inlineBoxAndOffset const):
(WebCore::Position::ensureLineBoxes const):
(WebCore::InlineBoxAndOffset::InlineBoxAndOffset): Deleted.

  • dom/Position.h:

(WebCore::InlineBoxAndOffset::InlineBoxAndOffset):

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::directionOfSelection):

  • editing/VisiblePosition.h:

(WebCore::VisiblePosition::inlineRunAndOffset const):

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForFontAndText):

  • layout/integration/LayoutIntegrationRunIterator.h:

(WebCore::LayoutIntegration::Run::onSameLine const):

  • layout/integration/LayoutIntegrationRunIteratorLegacyPath.h:

(WebCore::LayoutIntegration::LegacyPath::onSameLine const):
(WebCore::LayoutIntegration::LegacyPath::atEnd const):

  • layout/integration/LayoutIntegrationRunIteratorModernPath.h:

(WebCore::LayoutIntegration::ModernPath::onSameLine const):
(WebCore::LayoutIntegration::ModernPath::atEnd const):

  • platform/DragImage.cpp:
  • rendering/RenderTextLineBoxes.h:
7:35 AM Changeset in webkit [267961] by Simon Fraser
  • 7 edits in trunk/Source/WebKit

Clean up "rendering update" terminology in DrawingArea
https://bugs.webkit.org/show_bug.cgi?id=217307

Reviewed by Tim Horton.

DrawingArea doesn't know about "immediate" vs. "normal" rendering updates; for it,
all requests are for immediate rendering updates; the only difference is whether
layer tree freezing is respected.

This is the first step to correcting the naming; scheduleImmediateRenderingUpdate()
doesn't have to be exposed at all. A future patch will rename DrawingArea::scheduleRenderingUpdate()
to make it clear that it's not about timed updates.

  • WebProcess/WebPage/CoordinatedGraphics/DrawingAreaCoordinatedGraphics.h:
  • WebProcess/WebPage/DrawingArea.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
  • WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen):
(WebKit::RemoteLayerTreeDrawingArea::startRenderingUpdateTimer):
(WebKit::RemoteLayerTreeDrawingArea::scheduleRenderingUpdate):
(WebKit::RemoteLayerTreeDrawingArea::activityStateDidChange):
(WebKit::RemoteLayerTreeDrawingArea::scheduleImmediateRenderingUpdate): Deleted.

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::scheduleRenderingUpdate):
(WebKit::TiledCoreAnimationDrawingArea::scheduleImmediateRenderingUpdate): Deleted.

7:19 AM Changeset in webkit [267960] by pvollan@apple.com
  • 6 edits in trunk/Source/WebKit

[GPU Process] Make it possible to dynamically block IOKit in the WebContent sandbox
https://bugs.webkit.org/show_bug.cgi?id=217129
<rdar://problem/69466039>

Reviewed by Geoffrey Garen.

We need to be able to enable IOKit blocking via the WebContent sandbox dynamically.

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

(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::gpuIOKitClasses):
(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

3:30 AM Changeset in webkit [267959] by commit-queue@webkit.org
  • 5 edits in trunk

Make xhr.response more conforming to the specification
https://bugs.webkit.org/show_bug.cgi?id=217296

Patch by Rob Buis <rbuis@igalia.com> on 2020-10-05
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update improved test result.

  • web-platform-tests/xhr/overridemimetype-blob-expected.txt:

Source/WebCore:

Make xhr.response more conforming to the specification when dealing
with Blob type responses, the type for the Blob should be computed
by the "get a final MIME type" algorithm [1, 2].

Behavior matches Firefox.

Test: imported/w3c/web-platform-tests/xhr/overridemimetype-blob.html

[1] https://xhr.spec.whatwg.org/#ref-for-final-mime-type③
[2] https://xhr.spec.whatwg.org/#final-mime-type

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::createResponseBlob):
(WebCore::XMLHttpRequest::responseMIMEType const):

  • xml/XMLHttpRequest.h:
2:46 AM Changeset in webkit [267958] by graouts@webkit.org
  • 27 edits
    14 adds in trunk

Add non-animated support for the CSS scale property
https://bugs.webkit.org/show_bug.cgi?id=217291
<rdar://problem/69926254>

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

WPT progressions showing the correct parsing and computed style output of a non-animated "scale" property.
We are also adding some more tests to the invalid "scale" parsing to check that we bail once we get junk
for optional values after valid values and move percentage values to invalid tests (also filed a WPT PR
at https://github.com/web-platform-tests/wpt/pull/25960).

  • web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • web-platform-tests/css/css-transforms/animation/scale-composition-expected.txt:
  • web-platform-tests/css/css-transforms/animation/scale-interpolation-expected.txt:
  • web-platform-tests/css/css-transforms/parsing/scale-parsing-invalid-expected.txt:
  • web-platform-tests/css/css-transforms/parsing/scale-parsing-invalid.html:
  • web-platform-tests/css/css-transforms/parsing/scale-parsing-valid-expected.txt:
  • web-platform-tests/css/css-transforms/parsing/scale-parsing-valid.html:
  • web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:

Source/WebCore:

We add non-animated support for the CSS "scale" property as specifed in by the CSS Transforms Level 2
specification (​https://drafts.csswg.org/css-transforms-2/#propdef-scale).

Tests: transforms/2d/scale-and-transform-attribute-in-svg-expected.svg

transforms/2d/scale-and-transform-attribute-in-svg.svg
transforms/2d/scale-and-transform-css-property-in-svg-expected.svg
transforms/2d/scale-and-transform-css-property-in-svg.svg
transforms/2d/scale-and-translate-in-svg-expected.svg
transforms/2d/scale-and-translate-in-svg.svg
transforms/2d/scale-and-translate-order.html
transforms/2d/scale-in-svg-expected.svg
transforms/2d/scale-in-svg.svg
transforms/2d/scale-transform-order.html
transforms/2d/scale-transform-origin-order.html

  • Headers.cmake:
  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::computedTranslate): Remove the extraneous is<RenderInline> check which is already covered by rendererCanBeTransformed().
(WebCore::computedScale): Create a CSSValueList to print out the computed value for the "scale" property.
(WebCore::ComputedStyleExtractor::valueForPropertyInStyle):

  • css/CSSProperties.json: Define the "scale" property with the condition that the runtime setting for individual

CSS transform properties is set.

  • css/TransformFunctions.cpp:

(WebCore::scaleForValue): Convert a CSSValue to a TranslateTransformOperation when parsing a "scale" property value.

  • css/TransformFunctions.h:
  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeScale): Create a CSSValueList when parsing a "scale" property value.
(WebCore::CSSPropertyParser::parseSingleValue):

  • platform/graphics/transforms/ScaleTransformOperation.h:
  • rendering/RenderObject.h:

(WebCore::RenderObject::hasTransform const): Consider that having the "scale" property is akin to having a "transform" property
in the render tree.

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::setScale):
(WebCore::RenderStyle::applyTransform const): Account for the RenderStyle::scale() value in the right order, after applying the
transform origin and translate, but before applying the main transform.

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::scale const):
(WebCore::RenderStyle::hasTransformRelatedProperty const):
(WebCore::RenderStyle::initialScale):

  • rendering/style/StyleRareNonInheritedData.h:
  • rendering/style/WillChangeData.cpp:

(WebCore::WillChangeData::propertyCreatesStackingContext):

  • style/StyleBuilderConverter.h:

(WebCore::Style::BuilderConverter::convertScale):

  • svg/SVGGraphicsElement.cpp:

(WebCore::SVGGraphicsElement::animatedLocalTransform const): Account for the RenderStyle::scale() value when rendering SVG, ensuring
that it is applied before the transform specified by either the "transform" CSS property or SVG attribute.

LayoutTests:

Add tests checking that the "scale" CSS property is applied in the correct order related to
"transform-origin" and "transform" and that it is applied in SVG as well.

  • platform/ios-13/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt:
  • platform/ios-wk2/imported/w3c/web-platform-tests/css/cssom/cssstyledeclaration-csstext-expected.txt:
  • transforms/2d/scale-and-transform-attribute-in-svg-expected.svg: Added.
  • transforms/2d/scale-and-transform-attribute-in-svg.svg: Added.
  • transforms/2d/scale-and-transform-css-property-in-svg-expected.svg: Added.
  • transforms/2d/scale-and-transform-css-property-in-svg.svg: Added.
  • transforms/2d/scale-and-translate-in-svg-expected.svg: Added.
  • transforms/2d/scale-and-translate-in-svg.svg: Added.
  • transforms/2d/scale-and-translate-order-expected.html: Added.
  • transforms/2d/scale-and-translate-order.html: Added.
  • transforms/2d/scale-in-svg-expected.svg: Added.
  • transforms/2d/scale-in-svg.svg: Added.
  • transforms/2d/scale-transform-order-expected.html: Added.
  • transforms/2d/scale-transform-order.html: Added.
  • transforms/2d/scale-transform-origin-order-expected.html: Added.
  • transforms/2d/scale-transform-origin-order.html: Added.
1:13 AM Changeset in webkit [267957] by commit-queue@webkit.org
  • 6 edits in trunk

MIME type parser should skip trailing HTTP whitespace
https://bugs.webkit.org/show_bug.cgi?id=217179

Patch by Rob Buis <rbuis@igalia.com> on 2020-10-05
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Update test expectation.

  • web-platform-tests/xhr/overridemimetype-blob-expected.txt:

Source/WebCore:

MIME type parser should skip trailing HTTP whitespace in Mimesniff mode [1].

[1] https://mimesniff.spec.whatwg.org/#parse-a-mime-type (Steps 8 and 11.9.2)

  • platform/network/ParsedContentType.cpp:

(WebCore::parseToken):

Tools:

Add unit tests for trailing HTTP whitespace.

  • TestWebKitAPI/Tests/WebCore/ParsedContentType.cpp:

(TestWebKitAPI::TEST):

Oct 4, 2020:

11:57 PM Changeset in webkit [267956] by commit-queue@webkit.org
  • 7 edits
    2 adds in trunk

DataTransfer.setDragImage takes a non nullable Element parameter
https://bugs.webkit.org/show_bug.cgi?id=217283

Patch by Rob Buis <rbuis@igalia.com> on 2020-10-04
Reviewed by Sam Weinig.

Source/WebCore:

DataTransfer.setDragImage takes a non nullable Element parameter [1].

Behavior matches Firefox and Chrome.

Test: fast/events/setDragImage-element-non-nullable.html

[1] https://html.spec.whatwg.org/multipage/dnd.html#dom-datatransfer-setdragimage

  • dom/DataTransfer.cpp:

(WebCore::DataTransfer::setDragImage):

  • dom/DataTransfer.h:
  • dom/DataTransfer.idl:
  • page/EventHandler.cpp:

(WebCore::EventHandler::handleDrag):

LayoutTests:

Add test to verify DataTransfer.setDragImage throws if a null
is passed for the Element parameter.

  • fast/events/setDragImage-element-non-nullable-expected.txt: Added.
  • fast/events/setDragImage-element-non-nullable.html: Added.
  • platform/ios/TestExpectations:
9:40 PM Changeset in webkit [267955] by Alan Bujtas
  • 3 edits
    2 adds in trunk

[LFC][Floats] Do not assert when right aligned float overflows the containing block on the left
https://bugs.webkit.org/show_bug.cgi?id=217305

Reviewed by Antti Koivisto.

Source/WebCore:

It's okay for a float: right; to overflow the containing block on the left.
In such cases let's just constrain the logical right value by the logical left edge.

Test: fast/layoutformattingcontext/intrusive-floats-takes-entire-horizontal-space.html

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::constraintsForLine):

LayoutTests:

  • fast/layoutformattingcontext/intrusive-floats-takes-entire-horizontal-space-expected.html: Added.
  • fast/layoutformattingcontext/intrusive-floats-takes-entire-horizontal-space.html: Added.
9:19 PM Changeset in webkit [267954] by Fujii Hironori
  • 2 edits in trunk/Source/WebCore

[curl] WebSocket tests are failing since r267931
https://bugs.webkit.org/show_bug.cgi?id=217298

Reviewed by Darin Adler.

"http:" is a invalid URL since r267931. Change the way how to
construct a URL for libcurl.

  • platform/network/curl/CurlStream.cpp:

(WebCore::CurlStream::CurlStream): Construct the URL just by
replacing the scheme part. Removed a local variable
urlForConnection.

9:00 PM Changeset in webkit [267953] by weinig@apple.com
  • 21 edits in trunk/Source/WebCore

[WebIDL] Address consistency around [SameObject] extended attributes
https://bugs.webkit.org/show_bug.cgi?id=217303

Reviewed by Darin Adler.

There isn't any real value in keeping comments around in the IDLs saying:

FIXME: Add [SameObject] once it is supported

It's unclear what we would want the bindings generator to do with [SameObject],
perhaps for wrapper types, assert if the implementation doesn't return the same
object each time in a debug build, perhaps error out if a non-wrapper type doesn't
also have CachedAttribute or maybe just have SameObject imply it. Regardless,
in the mean time, there is no harm in just annotating the types with the attribute
and letting the generator do nothing while we think.

  • Modules/fetch/FetchRequest.idl:
  • Modules/fetch/FetchResponse.idl:
  • Modules/mediastream/MediaStreamTrackEvent.idl:
  • css/DocumentOrShadowRoot+CSSOM.idl:
  • css/ElementCSSInlineStyle.idl:
  • dom/DOMQuad.idl:
  • dom/DataTransfer.idl:
  • dom/Document+HTML.idl:
  • dom/Document+HTMLObsolete.idl:
  • dom/Document.idl:
  • dom/Element.idl:
  • dom/MutationRecord.idl:
  • dom/Node.idl:
  • dom/NodeIterator.idl:
  • dom/ParentNode.idl:
  • dom/TreeWalker.idl:
  • html/HTMLOrForeignElement.idl:
  • html/HTMLSelectElement.idl:
  • page/Location.idl:
  • svg/SVGFitToViewBox.idl:
8:25 PM Changeset in webkit [267952] by Lauro Moura
  • 3 edits in trunk/Source/WebKit

webkitpy: Update messages reference files after r267916
https://bugs.webkit.org/show_bug.cgi?id=217304

Reviewed by Simon Fraser.

Covered by existing tests.

  • Scripts/test-legacyMessageReceiver.cpp:
  • Scripts/testMessageReceiver.cpp:
5:28 PM Changeset in webkit [267951] by commit-queue@webkit.org
  • 5 edits
    7 adds in trunk

Presence of CSS variable causes a background url() to get resolved with a different base
https://bugs.webkit.org/show_bug.cgi?id=198512

Patch by Tyler Wilcock <Tyler Wilcock> on 2020-10-04
Reviewed by Darin Adler.

Source/WebCore:

Prior to this patch, url()s within CSSPendingSubstitutionValues
were resolved relative to the document root rather than the stylesheet
they were created from, which is wrong.

With this patch, when CSSPendingSubstitutionValues are created, they
now store the base URL that should be used when they are later
resolved in StyleBuilder.

Test: fast/css/variables/url-with-variable-is-sheet-relative.html

  • css/CSSPendingSubstitutionValue.h: Store baseURL for later

resolution.
(WebCore::CSSPendingSubstitutionValue::create): Add baseURL
parameter.
(WebCore::CSSPendingSubstitutionValue::baseURL const): Add m_baseURL
getter.
(WebCore::CSSPendingSubstitutionValue::CSSPendingSubstitutionValue):
Add baseURL parameter.

  • css/parser/CSSPropertyParser.cpp:

(WebCore::CSSPropertyParser::parseValueStart): When creating a
CSSPendingSubstitutionValue, also pass along the baseURL from this
context for later resolution.

  • style/StyleBuilder.cpp:

(WebCore::Style::Builder::resolvedVariableValue): If the value
we are resolving is a CSSPendingSubstitutionValue, resolve it
relative to the baseURL it has stored.

LayoutTests:

Add test ensuring shorthands containing url() and CSS variable(s)
resolve the url() relative to the stylesheet the rule is present in,
not the document root.

  • fast/css/variables/support/images/600x600-green-square.png: Added.
  • fast/css/variables/support/styles/url-with-variable-is-sheet-relative.css: Added.
  • fast/css/variables/url-with-variable-is-sheet-relative-expected.html: Added.
  • fast/css/variables/url-with-variable-is-sheet-relative.html: Added.
2:47 PM Changeset in webkit [267950] by BJ Burg
  • 9 edits in trunk

[Cocoa] Add WKUIDelegate SPI to inform clients when a _WKInspector is about to close
https://bugs.webkit.org/show_bug.cgi?id=217233

Reviewed by Timothy Hatcher and Devin Rousso.

Source/WebKit:

This is complementary to _webView:didAttachLocalInspector: and works similarly.
Clients need to be careful in depending on this during teardown, because it won't
come if the UIDelegate has already been cleared out while the inspected page is being closed.

API test: WKInspectorDelegate.WillCloseLocalInspector

  • UIProcess/API/APIUIClient.h:

(API::UIClient::willCloseLocalInspector):

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::willCloseLocalInspector):

  • UIProcess/Inspector/WebInspectorProxy.h:
  • UIProcess/Inspector/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::closeFrontendPageAndWindow):
Add a guard for reentrant calls to close().

Tools:

Add new test case for -_webView:willCloseLocalInspector:.

  • TestWebKitAPI/Tests/WebKitCocoa/WKInspectorDelegate.mm:

(-[InspectorDelegate inspectorDidEnableBrowserDomain:]):
(-[UIDelegate _webView:didAttachLocalInspector:]):
(-[UIDelegate _webView:willCloseLocalInspector:]):
(TEST):
Clean up how the other test case works so we don't call close from
inside a delegate callback. Let's keep our tests structured the same way.

2:09 PM Changeset in webkit [267949] by commit-queue@webkit.org
  • 10 edits in trunk

Submission failure with "make: * No rule to make target `installsrc'. Stop"
https://bugs.webkit.org/show_bug.cgi?id=214696
<rdar://problem/62268104>

Patch by Ryan Hostetler <rhost@apple.com> on 2020-10-04
Reviewed by Darin Adler.

.:

Add installsrc phase to support xbs submitproject for WebKit repository.
This change allows internal tools to submit and build in a single step.

  • Makefile:
  • Makefile.shared:
  • Source/Makefile:

Source/ThirdParty:

Add installsrc phase to support xbs submitproject for WebKit repository.
This change allows internal tools to submit and build in a single step.

  • Makefile:

Tools:

Add support for XBS single base project build for WebKit repository.
This change allows internal tools to submit and build from the repository root in a single step.

  • Makefile:

Tools does not need to be submitted, so we stub out the installsrc phase.

WebKitLibraries:

Add support for XBS single base project build for WebKit repository.
This change allows internal tools to submit and build from the repository root in a single step.

  • Makefile:

WebKitLibraries do not need to be submitted, so we stub out the installsrc phase.

10:06 AM Changeset in webkit [267948] by Alan Bujtas
  • 4 edits
    1 add
    2 deletes in trunk

[LFC][Integration] Enable soft hyphen
https://bugs.webkit.org/show_bug.cgi?id=217293

Reviewed by Antti Koivisto.

Source/WebCore:

Let's expand IFC coverage with soft hyphen rendering.

  • layout/integration/LayoutIntegrationCoverage.cpp:

(WebCore::LayoutIntegration::canUseForText):

LayoutTests:

  • fast/parser/entities-in-html-expected.txt: Progression? Now soft hyphen "renders".
  • fast/text/softHyphen-expected.html: Added. Text-dumping soft hyphens seems defective in some cases.

In this test case there should not be any hyphenation triggered by soft hyphens,
so let's use a reftest instead (which should have been used the first place).

  • platform/mac/fast/text/softHyphen-expected.png: Removed.
  • platform/mac/fast/text/softHyphen-expected.txt: Removed.
9:12 AM Changeset in webkit [267947] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC][Soft hyphen] Fix the case when the first content overflows with hyphen
https://bugs.webkit.org/show_bug.cgi?id=217295

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::rebuildLineForTrailingSoftHyphen):

5:23 AM Changeset in webkit [267946] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

[LFC][IFC] Remove Line::appendPartialTrailingTextItem special case
https://bugs.webkit.org/show_bug.cgi?id=217287

Reviewed by Antti Koivisto.

Use the newly added Line::addTrailingHyphen to display hyphen for partial content.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::append):
(WebCore::Layout::Line::appendTextContent):
(WebCore::Layout::Line::Run::Run):
(WebCore::Layout::Line::appendPartialTrailingTextItem): Deleted.
(WebCore::Layout::Line::appendWith): Deleted.

  • layout/inlineformatting/InlineLine.h:
  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::commitPartialContent):

  • layout/inlineformatting/InlineLineRun.h:

(WebCore::Layout::LineRun::Text::Text):

5:22 AM Changeset in webkit [267945] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

[LFC][IFC][Soft hyphen] Reset Line::m_trailingSoftHyphenWidth when the text content does not end with a soft hyphen
https://bugs.webkit.org/show_bug.cgi?id=217292

Reviewed by Antti Koivisto.

  • layout/inlineformatting/InlineLine.cpp:

(WebCore::Layout::Line::appendTextContent):

5:13 AM Changeset in webkit [267944] by Alan Bujtas
  • 3 edits in trunk/Source/WebCore

[LFC][IFC][Soft hyphen] endsWithSoftWrapOpportunity should check if hyphenation is disabled
https://bugs.webkit.org/show_bug.cgi?id=217288

Reviewed by Antti Koivisto.

This is very similar InlineTextItem::createAndAppendTextItems where we
also construct a LazyLineBreakIterator to check for word wrap opportunities.

  • layout/inlineformatting/InlineContentBreaker.cpp:

(WebCore::Layout::isTextContent): The trailing "only" is misleading since we can't have a mixture of text and non-text content
within a continuous content (there's always a word wrap opportunity between a text and a non-text content).
(WebCore::Layout::isVisuallyEmptyWhitespaceContent):
(WebCore::Layout::InlineContentBreaker::processInlineContent):
(WebCore::Layout::InlineContentBreaker::processOverflowingContent const):
(WebCore::Layout::isTextContentOnly): Deleted.
(WebCore::Layout::isVisuallyEmptyWhitespaceContentOnly): Deleted.

  • layout/inlineformatting/InlineLineBuilder.cpp:

(WebCore::Layout::endsWithSoftWrapOpportunity):

4:37 AM Changeset in webkit [267943] by Adrian Perez de Castro
  • 19 edits in releases/WebKitGTK/webkit-2.30/Source/WebCore

Merge r267934 - [GTK] Build broken with ENABLE_MEDIA_STREAM enabled and ENABLE_WEB_RTC_DISABLED
https://bugs.webkit.org/show_bug.cgi?id=217128

Remove USE(LIBWEBRTC) guards from media stream code, as it does not actually
depend on libwebrtc and can be built by itself. This allows using e.g. live
audio recording inputs with WebAudio.

Reviewed by Philippe Normand.

No new tests needed.

  • platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
  • platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:
  • platform/mediastream/gstreamer/GStreamerAudioCapturer.cpp:

(WebCore::GStreamerAudioCapturer::GStreamerAudioCapturer):

  • platform/mediastream/gstreamer/GStreamerAudioCapturer.h:
  • platform/mediastream/gstreamer/GStreamerAudioStreamDescription.h:
  • platform/mediastream/gstreamer/GStreamerCapturer.cpp:
  • platform/mediastream/gstreamer/GStreamerCapturer.h:
  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
  • platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:
  • platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:
  • platform/mediastream/gstreamer/GStreamerVideoCapturer.h:
  • platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp:
  • platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.h:
  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:
  • platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.h:
  • platform/mediastream/gstreamer/RealtimeMediaSourceCenterLibWebRTC.cpp:
  • platform/mock/MockRealtimeAudioSource.cpp:
  • platform/mock/MockRealtimeVideoSource.cpp:
4:37 AM WebKitGTK/2.30.x edited by Adrian Perez de Castro
(diff)
4:37 AM Changeset in webkit [267942] by Adrian Perez de Castro
  • 4 edits in releases/WebKitGTK/webkit-2.30

Merge r267882 - [GTK] Build broken with ENABLE_MEDIA_STREAM enabled and ENABLE_WEB_RTC_DISABLED
https://bugs.webkit.org/show_bug.cgi?id=217128

Reviewed by Philippe Normand.

.:

  • Source/cmake/GStreamerChecks.cmake: Only enable USE_LIBWEBRTC when both

ENABLE_MEDIA_STREAM and ENABLE_WEB_RTC is defined. This prevents trying to
build code that uses libwebrtc types when ENABLE_WEB_RTC is disabled but
ENABLE_MEDIA_STREAM is enabled.

Source/WebCore:

No new tests needed.

  • platform/mediastream/gstreamer/GStreamerAudioData.h: Remove USE(LIBWEBRTC) guard, as

there is nothing specific to WebRTC in this file, and it is needed when building with
ENABLE_MEDIA_STREAM enabled.

4:34 AM WebKitGTK/2.30.x edited by Adrian Perez de Castro
(diff)
1:16 AM Changeset in webkit [267941] by youenn@apple.com
  • 10 edits in trunk

Make sure MediaRecorder does not call fetchData until the last fetchData is completed
https://bugs.webkit.org/show_bug.cgi?id=217276

Reviewed by Darin Adler.

Source/WebCore:

When fetchData is called while an existing fetchData is inflight, enqueue the callback in a deque.
When the inflight fetchData completes, call the enqueued callbacks in order with a null blob.

Add ASSERT in MediaRecorderPrivateWriter to make sure we do not call requestMediaDataWhenReadyOnQueue too many times.

Covered by updated http/wpt/mediarecorder/MediaRecorder-dataavailable.html.

  • Modules/mediarecorder/MediaRecorder.cpp:

(WebCore::MediaRecorder::stopRecording):
(WebCore::MediaRecorder::requestData):
Do not enable the timer if MediaRecorder is not active as a small optimization.
(WebCore::MediaRecorder::fetchData):

  • Modules/mediarecorder/MediaRecorder.h:
  • platform/mediarecorder/MediaRecorderPrivateMock.cpp:

(WebCore::MediaRecorderPrivateMock::fetchData):

  • platform/mediarecorder/MediaRecorderPrivateMock.h:
  • platform/mediarecorder/cocoa/MediaRecorderPrivateWriterCocoa.mm:

(WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers):

LayoutTests:

Add test to cover patch
Update some test expectations according bot results.

  • http/wpt/mediarecorder/MediaRecorder-dataavailable-expected.txt:
  • http/wpt/mediarecorder/MediaRecorder-dataavailable.html:
  • platform/mac/TestExpectations:
Note: See TracTimeline for information about the timeline view.