Timeline
Oct 8, 2020:
- 10:16 PM Changeset in webkit [268248] by
-
- 2 edits7 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
-
- 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
-
- 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
-
- 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
-
- 4 edits2 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
-
- 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
-
- 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
-
- 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
-
- 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 platformCGPathRefs.
We can mitigate most of this overhead in the GPU process by avoiding platform
CGPathRefallocation entirely
when stroking simple line segments inGraphicsContext::strokePath. Rather than reifyingPath::m_pathand
then usingCGContextDrawPathDirect, we can simply useCGContextStrokeLineSegmentswith a fixed array of
2CGPoints.
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
-
- 16 edits3 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 15 edits10 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
-
- 1 edit2 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 16 edits5 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
-
- 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
-
- 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
mediaDevicesEnabledmanually because its default value is alwaysfalsein the WebProcess and may betruein 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
-
- 10 edits1 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
-
- 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
-
- 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
-
- 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
-
- 6 edits2 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
-
- 10 edits1 move1 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
-
- 11 edits2 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
-
- 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
-
- 2 edits2 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
-
- 1 copy in branches/safari-610.2.11.3-branch
New branch.
- 3:33 PM Changeset in webkit [268215] by
-
- 1 copy in branches/safari-610.2.11.2-branch
New branch.
- 3:20 PM Changeset in webkit [268214] by
-
- 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
-
- 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
-
- 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
-
- 8 edits2 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
-
- 4 edits2 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 1 copy in branches/safari-610.2.11.1-branch
New branch.
- 12:29 PM Changeset in webkit [268202] by
-
- 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
-
- 1 copy in branches/safari-610.2.11.0-branch
New branch.
- 12:10 PM Changeset in webkit [268200] by
-
- 6 edits2 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
-
- 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
-
- 28 edits3 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
-
- 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
-
- 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
andm_configuration.routeSharingPolicyso 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
-
- 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
-
- 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
mediaDevicesEnabledmanually because its default value is alwaysfalsein the WebProcess and may betruein 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
-
- 8 edits in branches/safari-611.1.3-branch/Source
Versioning.
WebKit-7611.1.3
- 10:59 AM Changeset in webkit [268192] by
-
- 5 edits1 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
-
- 1 copy in branches/safari-611.1.3-branch
New branch.
- 10:56 AM Changeset in webkit [268190] by
-
- 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
-
- 4 edits2 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 3 edits2 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 3 edits3 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
-
- 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
-
- 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
-
- 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 themakeoutput 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
-
- 4 edits2 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
-
- 35 edits1 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
-
- 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
-
- 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
-
- 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
textvalue (CSSValueText) for thebackground-clip
property. While the bug this patch is associated with is about CSS
variable interactions, the underlying issue is that we weren't parsing
thetextvalue forbackground-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-textvalue
for thebackground-origin(CSSPropertyBackgroundOrigin) property by
removingCSSValueWebkitTextfromconsumeBackgroundBox. Neither
-webkit-textnor the unprefixedtextare 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.htmltest.
- css/parser/CSSPropertyParser.cpp:
(WebCore::consumeBackgroundBox): Removed
CSSValueWebkitText.
(WebCore::consumeBackgroundClip): Added.
(WebCore::consumeBackgroundComponent): UseconsumeBackgroundClipfor
theCSSPropertyBackgroundClipproperty case.
LayoutTests:
We now parse the
textvalue for thebackground-clipproperty, so
update this test to reflect that.
- fast/css/background-clip-text-expected.txt:
- fast/css/background-clip-text.html: Parse
textvalue.
- 3:41 PM Changeset in webkit [268157] by
-
- 3 edits4 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 inputproperty, first try parsing the
CSS-wide keywords viamaybeConsumeCSSWideKeyword.
(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
-
- 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
-
- 2 edits7 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 5 edits in trunk/Source
Add missing
#defineforPENCILKIT_TEXT_INPUTflag
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 fromENABLEtoHAVE.
Source/WTF:
- wtf/PlatformHave.h:
- 1:33 PM Changeset in webkit [268147] by
-
- 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
-
- 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
-
- 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::paintFrameForMediawith theMediaPlayer, instead of calling into
MediaPlayerwith the graphics context. See changes below.
- platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::paintFrameForMedia):
- platform/graphics/GraphicsContext.h:
Add a
paintFrameForMediamethod that takes aMediaPlayerrepresenting 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_implis
nullptr), then we simply call through toMediaPlayer's private impl to paint into the context. Otherwise, we
forward the call to theGraphicsContextImpl(see the changes toDisplayListRecorder.cppbelow).
- platform/graphics/GraphicsContextImpl.h:
Add a new virtual function to paint the current frame of the given
MediaPlayerinto 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
paintCurrentFrameInContextmethod onMediaPlayer, which currently takes a graphics
context. Instead, movepaintCurrentFrameInContexttoGraphicsContext, rename it topaintFrameForMedia, and
pass it aMediaPlayer. Additionally, expose a helper method to get a non-constMediaPlayerPrivateInterface,
and move both method definitions to the implementation file to avoid style checker errors due toMediaPlayer
itself beingWEBCORE_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 givenMediaPlayer. This
works by serializing and then deserializing aMediaPlayerHandleand destination rect; similar to
PutImageData, the replayer delegate is responsible for applying this item by mapping theMediaPlayerHandle
to a concreteMediaPlayerinstance.
- 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
applyso that it treatsPutImageDataandPaintFrameForMediaas special cases, and otherwise
returnsfalseby default. Implementapplyin the case where the display list item isPaintFrameForMediaby
using theMediaPlayerIdentifierto look up the platformMediaPlayerinstance, and then calling
GraphicsContext::paintFrameForMediawith thisMediaPlayer.
- GPUProcess/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::gpuConnectionToWebProcess const):
- GPUProcess/graphics/RemoteRenderingBackendProxy.h:
- 1:10 PM Changeset in webkit [268144] by
-
- 3 edits2 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 8 edits in branches/safari-610.2-branch/Source
Versioning.
WebKit-7610.2.12
- 11:54 AM Changeset in webkit [268138] by
-
- 10 edits141 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
-
- 8 edits in trunk/Source
Versioning.
WebKit-7611.1.4
- 11:07 AM Changeset in webkit [268136] by
-
- 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
-
- 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
-
- 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
-
- 6 edits2 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
-
- 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
-
- 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
-
- 23 edits2 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
-
- 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
-
- 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
-
- 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
-
- 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
-
- 3 edits2 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
-
- 9 edits4 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
-
- 4 edits1 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
-
- 10 edits2 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
-
- 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
-
- 15 edits10 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
-
- 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: